mirror of
https://github.com/denoland/deno.git
synced 2024-12-03 17:08:35 -05:00
29934d558c
The intent is that those tests will be executed, but our check that the files are up to date won't overwrite the contents of the tests. This is useful when a test needs some manual edits to work. It turns out we weren't actually running them. --- This ended up turning into a couple of small bug fixes to get the tests passing: - We weren't canonicalizing the exec path properly (it sometimes still had `..` or `.` in it) - We weren't accepting strings in `process.exit` There was one failure I couldn't figure out quickly, so I disabled the test for now, and filed a follow up issue: #24694
175 lines
4.6 KiB
JavaScript
175 lines
4.6 KiB
JavaScript
// deno-fmt-ignore-file
|
|
// deno-lint-ignore-file
|
|
|
|
// Copyright Joyent and Node contributors. All rights reserved. MIT license.
|
|
// Taken from Node 18.12.1
|
|
// This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually.
|
|
|
|
// Flags: --expose-internals
|
|
'use strict';
|
|
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const dgram = require('dgram');
|
|
const { inspect } = require('util');
|
|
const { internalBinding } = require('internal/test/binding');
|
|
const {
|
|
UV_EBADF,
|
|
UV_EINVAL,
|
|
UV_ENOTSOCK
|
|
} = internalBinding('uv');
|
|
|
|
function getExpectedError(type) {
|
|
const code = common.isWindows ? 'ENOTSOCK' : 'EBADF';
|
|
const message = common.isWindows ?
|
|
'socket operation on non-socket' : 'bad file descriptor';
|
|
const errno = common.isWindows ? UV_ENOTSOCK : UV_EBADF;
|
|
const syscall = `uv_${type}_buffer_size`;
|
|
const suffix = common.isWindows ?
|
|
'ENOTSOCK (socket operation on non-socket)' : 'EBADF (bad file descriptor)';
|
|
const error = {
|
|
code: 'ERR_SOCKET_BUFFER_SIZE',
|
|
name: 'SystemError',
|
|
message: `Could not get or set buffer size: ${syscall} returned ${suffix}`,
|
|
info: {
|
|
code,
|
|
message,
|
|
errno,
|
|
syscall
|
|
}
|
|
};
|
|
return error;
|
|
}
|
|
|
|
{
|
|
// Should throw error if the socket is never bound.
|
|
const errorObj = getExpectedError('send');
|
|
|
|
const socket = dgram.createSocket('udp4');
|
|
|
|
assert.throws(() => {
|
|
socket.setSendBufferSize(8192);
|
|
}, (err) => {
|
|
assert.strictEqual(
|
|
inspect(err).replace(/^ +at .*\n/gm, ''),
|
|
`SystemError: ${errorObj.message}\n` +
|
|
" code: 'ERR_SOCKET_BUFFER_SIZE',\n" +
|
|
' info: {\n' +
|
|
` errno: ${errorObj.info.errno},\n` +
|
|
` code: '${errorObj.info.code}',\n` +
|
|
` message: '${errorObj.info.message}',\n` +
|
|
` syscall: '${errorObj.info.syscall}'\n` +
|
|
' },\n' +
|
|
` errno: [Getter/Setter: ${errorObj.info.errno}],\n` +
|
|
` syscall: [Getter/Setter: '${errorObj.info.syscall}']\n` +
|
|
'}'
|
|
);
|
|
return true;
|
|
});
|
|
|
|
assert.throws(() => {
|
|
socket.getSendBufferSize();
|
|
}, errorObj);
|
|
}
|
|
|
|
{
|
|
const socket = dgram.createSocket('udp4');
|
|
|
|
// Should throw error if the socket is never bound.
|
|
const errorObj = getExpectedError('recv');
|
|
|
|
assert.throws(() => {
|
|
socket.setRecvBufferSize(8192);
|
|
}, errorObj);
|
|
|
|
assert.throws(() => {
|
|
socket.getRecvBufferSize();
|
|
}, errorObj);
|
|
}
|
|
|
|
{
|
|
// Should throw error if invalid buffer size is specified
|
|
const errorObj = {
|
|
code: 'ERR_SOCKET_BAD_BUFFER_SIZE',
|
|
name: 'TypeError',
|
|
message: /^Buffer size must be a positive integer$/
|
|
};
|
|
|
|
const badBufferSizes = [-1, Infinity, 'Doh!'];
|
|
|
|
const socket = dgram.createSocket('udp4');
|
|
|
|
socket.bind(common.mustCall(() => {
|
|
for (const badBufferSize of badBufferSizes) {
|
|
assert.throws(() => {
|
|
socket.setRecvBufferSize(badBufferSize);
|
|
}, errorObj);
|
|
assert.throws(() => {
|
|
socket.setSendBufferSize(badBufferSize);
|
|
}, errorObj);
|
|
}
|
|
socket.close();
|
|
}));
|
|
}
|
|
|
|
{
|
|
// Can set and get buffer sizes after binding the socket.
|
|
const socket = dgram.createSocket('udp4');
|
|
|
|
socket.bind(common.mustCall(() => {
|
|
socket.setRecvBufferSize(10000);
|
|
socket.setSendBufferSize(10000);
|
|
|
|
// note: linux will double the buffer size
|
|
const expectedBufferSize = common.isLinux ? 20000 : 10000;
|
|
assert.strictEqual(socket.getRecvBufferSize(), expectedBufferSize);
|
|
assert.strictEqual(socket.getSendBufferSize(), expectedBufferSize);
|
|
socket.close();
|
|
}));
|
|
}
|
|
|
|
{
|
|
const info = {
|
|
code: 'EINVAL',
|
|
message: 'invalid argument',
|
|
errno: UV_EINVAL,
|
|
syscall: 'uv_recv_buffer_size'
|
|
};
|
|
const errorObj = {
|
|
code: 'ERR_SOCKET_BUFFER_SIZE',
|
|
name: 'SystemError',
|
|
message: 'Could not get or set buffer size: uv_recv_buffer_size ' +
|
|
'returned EINVAL (invalid argument)',
|
|
info
|
|
};
|
|
const socket = dgram.createSocket('udp4');
|
|
socket.bind(common.mustCall(() => {
|
|
assert.throws(() => {
|
|
socket.setRecvBufferSize(2147483648);
|
|
}, errorObj);
|
|
socket.close();
|
|
}));
|
|
}
|
|
|
|
{
|
|
const info = {
|
|
code: 'EINVAL',
|
|
message: 'invalid argument',
|
|
errno: UV_EINVAL,
|
|
syscall: 'uv_send_buffer_size'
|
|
};
|
|
const errorObj = {
|
|
code: 'ERR_SOCKET_BUFFER_SIZE',
|
|
name: 'SystemError',
|
|
message: 'Could not get or set buffer size: uv_send_buffer_size ' +
|
|
'returned EINVAL (invalid argument)',
|
|
info
|
|
};
|
|
const socket = dgram.createSocket('udp4');
|
|
socket.bind(common.mustCall(() => {
|
|
assert.throws(() => {
|
|
socket.setSendBufferSize(2147483648);
|
|
}, errorObj);
|
|
socket.close();
|
|
}));
|
|
}
|