diff --git a/benchmark/http/http_server_for_chunky_client.js b/benchmark/http/http_server_for_chunky_client.js index bdeb517344d47d..3b0ec21cbe32a6 100644 --- a/benchmark/http/http_server_for_chunky_client.js +++ b/benchmark/http/http_server_for_chunky_client.js @@ -5,7 +5,7 @@ var http = require('http'); var fs = require('fs'); var fork = require('child_process').fork; var common = require('../common.js'); -var test = require('../../test/common.js'); +var test = require('../../test/common'); var pep = `${path.dirname(process.argv[1])}/_chunky_http_client.js`; var PIPE = test.PIPE; diff --git a/test/README.md b/test/README.md index 5a35a039c5844c..af81573f582d99 100644 --- a/test/README.md +++ b/test/README.md @@ -1,6 +1,6 @@ # Node.js Core Tests -This folder contains code and data used to test the Node.js implementation. +This directory contains code and data used to test the Node.js implementation. For a detailed guide on how to write tests in this directory, see [the guide on writing tests](../doc/guides/writing-tests.md). @@ -8,11 +8,6 @@ directory, see [the guide on writing tests](../doc/guides/writing-tests.md). On how to run tests in this direcotry, see [the contributing guide](../CONTRIBUTING.md#step-5-test). -## Table of Contents - -* [Test directories](#test-directories) -* [Common module API](#common-module-api) - ## Test Directories @@ -48,6 +43,14 @@ On how to run tests in this direcotry, see C++ test that is run as part of the build process. + + + + + @@ -158,277 +161,3 @@ On how to run tests in this direcotry, see
common + Common modules shared among many tests. + [Documentation] +
debugger No
- -## Common module API - -The common.js module is used by tests for consistency across repeated -tasks. It has a number of helpful functions and properties to help with -writing tests. - -### allowGlobals(...whitelist) -* `whitelist` [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Array of Globals -* return [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) - -Takes `whitelist` and concats that with predefined `knownGlobals`. - -### arrayStream -A stream to push an array into a REPL - -### busyLoop(time) -* `time` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) - -Blocks for `time` amount of time. - -### canCreateSymLink -API to indicate whether the current running process can create -symlinks. On Windows, this returns false if the process running -doesn't have privileges to create symlinks (specifically -[SeCreateSymbolicLinkPrivilege](https://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx)). -On non-Windows platforms, this currently returns true. - -### crashOnUnhandledRejection() - -Installs a `process.on('unhandledRejection')` handler that crashes the process -after a tick. This is useful for tests that use Promises and need to make sure -no unexpected rejections occur, because currently they result in silent -failures. - -### ddCommand(filename, kilobytes) -* return [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) - -Platform normalizes the `dd` command - -### enoughTestMem -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Check if there is more than 1gb of total memory. - -### expectsError(settings) -* `settings` [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) - with the following optional properties: - * `code` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) - expected error must have this value for its `code` property - * `type` [<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) - expected error must be an instance of `type` - * `message` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) - or [<RegExp>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) - if a string is provided for `message`, expected error must have it for its - `message` property; if a regular expression is provided for `message`, the - regular expression must match the `message` property of the expected error - -* return function suitable for use as a validation function passed as the second - argument to `assert.throws()` - -The expected error should be [subclassed by the `internal/errors` module](https://github.com/nodejs/node/blob/master/doc/guides/using-internal-errors.md#api). - -### expectWarning(name, expected) -* `name` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) -* `expected` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) - -Tests whether `name` and `expected` are part of a raised warning. - -## getArrayBufferViews(buf) -* `buf` [<Buffer>](https://nodejs.org/api/buffer.html#buffer_class_buffer) -* return [<ArrayBufferView[]>](https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView) - -Returns an instance of all possible `ArrayBufferView`s of the provided Buffer. - -### hasCrypto -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Checks for 'openssl'. - -### hasFipsCrypto -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Checks `hasCrypto` and `crypto` with fips. - -### hasIPv6 -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Checks whether `IPv6` is supported on this platform. - -### hasMultiLocalhost -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Checks if there are multiple localhosts available. - -### fileExists(pathname) -* pathname [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Checks if `pathname` exists - -### fixturesDir -* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) - -Path to the 'fixtures' directory. - -### globalCheck -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Turn this off if the test should not check for global leaks. - -### inFreeBSDJail -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Checks whether free BSD Jail is true or false. - -### isAix -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Platform check for Advanced Interactive eXecutive (AIX). - -### isAlive(pid) -* `pid` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Attempts to 'kill' `pid` - -### isFreeBSD -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Platform check for Free BSD. - -### isLinux -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Platform check for Linux. - -### isLinuxPPCBE -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Platform check for Linux on PowerPC. - -### isOSX -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Platform check for macOS. - -### isSunOS -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Platform check for SunOS. - -### isWindows -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Platform check for Windows. - -### isWOW64 -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Platform check for Windows 32-bit on Windows 64-bit. - -### leakedGlobals -* return [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) - -Checks whether any globals are not on the `knownGlobals` list. - -### localhostIPv4 -* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) - -Gets IP of localhost - -### localIPv6Hosts -* return [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) - -Array of IPV6 hosts. - -### mustCall([fn][, expected]) -* fn [<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) -* expected [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) default = 1 -* return [<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) - -Returns a function that calls `fn`. If the returned function has not been called -exactly `expected` number of times when the test is complete, then the test will -fail. - -If `fn` is not provided, `common.noop` will be used. - -### nodeProcessAborted(exitCode, signal) -* `exitCode` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) -* `signal` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Returns `true` if the exit code `exitCode` and/or signal name `signal` represent the exit code and/or signal name of a node process that aborted, `false` otherwise. - -### noop - -A non-op `Function` that can be used for a variety of scenarios. - -For instance, - - -```js -const common = require('../common'); - -someAsyncAPI('foo', common.mustCall(common.noop)); -``` - -### opensslCli -* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) - -Checks whether 'opensslCli' is supported. - -### platformTimeout(ms) -* `ms` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) -* return [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) - -Platform normalizes timeout. - -### PIPE -* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) - -Path to the test sock. - -### PORT -* return [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) default = `12346` - -Port tests are running on. - -### refreshTmpDir -* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) - -Deletes the 'tmp' dir and recreates it - -### rootDir -* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) - -Path to the 'root' directory. either `/` or `c:\\` (windows) - -### skip(msg) -* `msg` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) - -Logs '1..0 # Skipped: ' + `msg` - -### spawnPwd(options) -* `options` [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) -* return [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) - -Platform normalizes the `pwd` command. - -### spawnSyncPwd(options) -* `options` [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) -* return [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) - -Synchronous version of `spawnPwd`. - -### tmpDir -* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) - -The realpath of the 'tmp' directory. - -### tmpDirName -* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) - -Name of the temp directory used by tests. - -### WPT - -A port of parts of -[W3C testharness.js](https://github.com/w3c/testharness.js) for testing the -Node.js -[WHATWG URL API](https://nodejs.org/api/url.html#url_the_whatwg_url_api) -implementation with tests from -[W3C Web Platform Tests](https://github.com/w3c/web-platform-tests). diff --git a/test/common/README.md b/test/common/README.md new file mode 100644 index 00000000000000..267d28140c5003 --- /dev/null +++ b/test/common/README.md @@ -0,0 +1,281 @@ +# Node.js Core Test Common Modules + +This directory contains modules used to test the Node.js implementation. + +## Table of Contents + +* [Common module API](#common-module-api) +* [WPT module](#wpt-module) + +## Common Module API + +The `common` module is used by tests for consistency across repeated +tasks. + +### allowGlobals(...whitelist) +* `whitelist` [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Array of Globals +* return [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) + +Takes `whitelist` and concats that with predefined `knownGlobals`. + +### arrayStream +A stream to push an array into a REPL + +### busyLoop(time) +* `time` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) + +Blocks for `time` amount of time. + +### canCreateSymLink +API to indicate whether the current running process can create +symlinks. On Windows, this returns false if the process running +doesn't have privileges to create symlinks (specifically +[SeCreateSymbolicLinkPrivilege](https://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx)). +On non-Windows platforms, this currently returns true. + +### crashOnUnhandledRejection() + +Installs a `process.on('unhandledRejection')` handler that crashes the process +after a tick. This is useful for tests that use Promises and need to make sure +no unexpected rejections occur, because currently they result in silent +failures. + +### ddCommand(filename, kilobytes) +* return [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) + +Platform normalizes the `dd` command + +### enoughTestMem +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Check if there is more than 1gb of total memory. + +### expectsError(settings) +* `settings` [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) + with the following optional properties: + * `code` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + expected error must have this value for its `code` property + * `type` [<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) + expected error must be an instance of `type` + * `message` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + or [<RegExp>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) + if a string is provided for `message`, expected error must have it for its + `message` property; if a regular expression is provided for `message`, the + regular expression must match the `message` property of the expected error + +* return function suitable for use as a validation function passed as the second + argument to `assert.throws()` + +The expected error should be [subclassed by the `internal/errors` module](https://github.com/nodejs/node/blob/master/doc/guides/using-internal-errors.md#api). + +### expectWarning(name, expected) +* `name` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) +* `expected` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) + +Tests whether `name` and `expected` are part of a raised warning. + +### fileExists(pathname) +* pathname [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Checks if `pathname` exists + +### fixturesDir +* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + +Path to the 'fixtures' directory. + +### getArrayBufferViews(buf) +* `buf` [<Buffer>](https://nodejs.org/api/buffer.html#buffer_class_buffer) +* return [<ArrayBufferView[]>](https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView) + +Returns an instance of all possible `ArrayBufferView`s of the provided Buffer. + +### globalCheck +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Turn this off if the test should not check for global leaks. + +### hasCrypto +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Checks for 'openssl'. + +### hasFipsCrypto +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Checks `hasCrypto` and `crypto` with fips. + +### hasIPv6 +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Checks whether `IPv6` is supported on this platform. + +### hasMultiLocalhost +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Checks if there are multiple localhosts available. + +### inFreeBSDJail +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Checks whether free BSD Jail is true or false. + +### isAix +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Platform check for Advanced Interactive eXecutive (AIX). + +### isAlive(pid) +* `pid` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Attempts to 'kill' `pid` + +### isFreeBSD +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Platform check for Free BSD. + +### isLinux +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Platform check for Linux. + +### isLinuxPPCBE +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Platform check for Linux on PowerPC. + +### isOSX +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Platform check for macOS. + +### isSunOS +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Platform check for SunOS. + +### isWindows +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Platform check for Windows. + +### isWOW64 +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Platform check for Windows 32-bit on Windows 64-bit. + +### leakedGlobals +* return [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) + +Checks whether any globals are not on the `knownGlobals` list. + +### localhostIPv4 +* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + +Gets IP of localhost + +### localIPv6Hosts +* return [<Array>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) + +Array of IPV6 hosts. + +### mustCall([fn][, expected]) +* fn [<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) +* expected [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) default = 1 +* return [<Function>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) + +Returns a function that calls `fn`. If the returned function has not been called +exactly `expected` number of times when the test is complete, then the test will +fail. + +If `fn` is not provided, `common.noop` will be used. + +### nodeProcessAborted(exitCode, signal) +* `exitCode` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) +* `signal` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Returns `true` if the exit code `exitCode` and/or signal name `signal` represent the exit code and/or signal name of a node process that aborted, `false` otherwise. + +### noop + +A non-op `Function` that can be used for a variety of scenarios. + +For instance, + + +```js +const common = require('../common'); + +someAsyncAPI('foo', common.mustCall(common.noop)); +``` + +### opensslCli +* return [<Boolean>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Checks whether 'opensslCli' is supported. + +### platformTimeout(ms) +* `ms` [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) +* return [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) + +Platform normalizes timeout. + +### PIPE +* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + +Path to the test sock. + +### PORT +* return [<Number>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) default = `12346` + +Port tests are running on. + +### refreshTmpDir +* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + +Deletes the 'tmp' dir and recreates it + +### rootDir +* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + +Path to the 'root' directory. either `/` or `c:\\` (windows) + +### skip(msg) +* `msg` [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + +Logs '1..0 # Skipped: ' + `msg` + +### spawnPwd(options) +* `options` [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) +* return [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) + +Platform normalizes the `pwd` command. + +### spawnSyncPwd(options) +* `options` [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) +* return [<Object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) + +Synchronous version of `spawnPwd`. + +### tmpDir +* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + +The realpath of the 'tmp' directory. + +### tmpDirName +* return [<String>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + +Name of the temp directory used by tests. + +## WPT Module + +The wpt.js module is a port of parts of +[W3C testharness.js](https://github.com/w3c/testharness.js) for testing the +Node.js +[WHATWG URL API](https://nodejs.org/api/url.html#url_the_whatwg_url_api) +implementation with tests from +[W3C Web Platform Tests](https://github.com/w3c/web-platform-tests). diff --git a/test/common.js b/test/common/index.js similarity index 95% rename from test/common.js rename to test/common/index.js index ca538a1961f8a6..3b707a93baa99d 100644 --- a/test/common.js +++ b/test/common/index.js @@ -33,12 +33,12 @@ const Timer = process.binding('timer_wrap').Timer; const execSync = require('child_process').execSync; const testRoot = process.env.NODE_TEST_DIR ? - fs.realpathSync(process.env.NODE_TEST_DIR) : __dirname; + fs.realpathSync(process.env.NODE_TEST_DIR) : path.resolve(__dirname, '..'); const noop = () => {}; exports.noop = noop; -exports.fixturesDir = path.join(__dirname, 'fixtures'); +exports.fixturesDir = path.join(__dirname, '..', 'fixtures'); exports.tmpDirName = 'tmp'; // PORT should match the definition in test/testpy/__init__.py. exports.PORT = +process.env.NODE_COMMON_PORT || 12346; @@ -631,32 +631,6 @@ Object.defineProperty(exports, 'hasIntl', { } }); -// https://github.com/w3c/testharness.js/blob/master/testharness.js -exports.WPT = { - test: (fn, desc) => { - try { - fn(); - } catch (err) { - console.error(`In ${desc}:`); - throw err; - } - }, - assert_equals: assert.strictEqual, - assert_true: (value, message) => assert.strictEqual(value, true, message), - assert_false: (value, message) => assert.strictEqual(value, false, message), - assert_throws: (code, func, desc) => { - assert.throws(func, (err) => { - return typeof err === 'object' && - 'name' in err && - err.name.startsWith(code.name); - }, desc); - }, - assert_array_equals: assert.deepStrictEqual, - assert_unreached(desc) { - assert.fail(`Reached unreachable code: ${desc}`); - } -}; - // Useful for testing expected internal/error objects exports.expectsError = function expectsError({code, type, message}) { return function(error) { diff --git a/test/common/wpt.js b/test/common/wpt.js new file mode 100644 index 00000000000000..52d8b7a580400c --- /dev/null +++ b/test/common/wpt.js @@ -0,0 +1,30 @@ +/* eslint-disable required-modules */ +'use strict'; + +const assert = require('assert'); + +// https://github.com/w3c/testharness.js/blob/master/testharness.js +module.exports = { + test: (fn, desc) => { + try { + fn(); + } catch (err) { + console.error(`In ${desc}:`); + throw err; + } + }, + assert_equals: assert.strictEqual, + assert_true: (value, message) => assert.strictEqual(value, true, message), + assert_false: (value, message) => assert.strictEqual(value, false, message), + assert_throws: (code, func, desc) => { + assert.throws(func, function(err) { + return typeof err === 'object' && + 'name' in err && + err.name.startsWith(code.name); + }, desc); + }, + assert_array_equals: assert.deepStrictEqual, + assert_unreached(desc) { + assert.fail(`Reached unreachable code: ${desc}`); + } +}; diff --git a/test/parallel/test-whatwg-url-constructor.js b/test/parallel/test-whatwg-url-constructor.js index c2773b9af105fb..b67f63baf139b7 100644 --- a/test/parallel/test-whatwg-url-constructor.js +++ b/test/parallel/test-whatwg-url-constructor.js @@ -2,7 +2,8 @@ const common = require('../common'); const path = require('path'); const { URL, URLSearchParams } = require('url'); -const { test, assert_equals, assert_true, assert_throws } = common.WPT; +const { test, assert_equals, assert_true, assert_throws } = + require('../common/wpt'); if (!common.hasIntl) { // A handful of the tests fail when ICU is not included. diff --git a/test/parallel/test-whatwg-url-historical.js b/test/parallel/test-whatwg-url-historical.js index 452c14fc77a319..0f7c0e70cd6392 100644 --- a/test/parallel/test-whatwg-url-historical.js +++ b/test/parallel/test-whatwg-url-historical.js @@ -1,7 +1,7 @@ 'use strict'; const common = require('../common'); const URL = require('url').URL; -const { test, assert_equals, assert_throws } = common.WPT; +const { test, assert_equals, assert_throws } = require('../common/wpt'); if (!common.hasIntl) { // A handful of the tests fail when ICU is not included. diff --git a/test/parallel/test-whatwg-url-origin.js b/test/parallel/test-whatwg-url-origin.js index c7126585e170e7..b5b54f887f09eb 100644 --- a/test/parallel/test-whatwg-url-origin.js +++ b/test/parallel/test-whatwg-url-origin.js @@ -2,7 +2,7 @@ const common = require('../common'); const path = require('path'); const URL = require('url').URL; -const { test, assert_equals } = common.WPT; +const { test, assert_equals } = require('../common/wpt'); if (!common.hasIntl) { // A handful of the tests fail when ICU is not included. diff --git a/test/parallel/test-whatwg-url-searchparams-append.js b/test/parallel/test-whatwg-url-searchparams-append.js index 9d1eaceba1223c..d9534a2209ddfe 100644 --- a/test/parallel/test-whatwg-url-searchparams-append.js +++ b/test/parallel/test-whatwg-url-searchparams-append.js @@ -3,7 +3,7 @@ const common = require('../common'); const assert = require('assert'); const URLSearchParams = require('url').URLSearchParams; -const { test, assert_equals, assert_true } = common.WPT; +const { test, assert_equals, assert_true } = require('../common/wpt'); /* eslint-disable */ /* WPT Refs: diff --git a/test/parallel/test-whatwg-url-searchparams-constructor.js b/test/parallel/test-whatwg-url-searchparams-constructor.js index e22ceec57083d0..643ba3c5f40ffb 100644 --- a/test/parallel/test-whatwg-url-searchparams-constructor.js +++ b/test/parallel/test-whatwg-url-searchparams-constructor.js @@ -6,7 +6,7 @@ const URLSearchParams = require('url').URLSearchParams; const { test, assert_equals, assert_true, assert_false, assert_throws, assert_array_equals -} = common.WPT; +} = require('../common/wpt'); /* eslint-disable */ var params; // Strict mode fix for WPT. diff --git a/test/parallel/test-whatwg-url-searchparams-delete.js b/test/parallel/test-whatwg-url-searchparams-delete.js index bb3fcc9549c411..dae0b338ddae55 100644 --- a/test/parallel/test-whatwg-url-searchparams-delete.js +++ b/test/parallel/test-whatwg-url-searchparams-delete.js @@ -3,7 +3,8 @@ const common = require('../common'); const assert = require('assert'); const { URL, URLSearchParams } = require('url'); -const { test, assert_equals, assert_true, assert_false } = common.WPT; +const { test, assert_equals, assert_true, assert_false } = + require('../common/wpt'); /* eslint-disable */ /* WPT Refs: diff --git a/test/parallel/test-whatwg-url-searchparams-foreach.js b/test/parallel/test-whatwg-url-searchparams-foreach.js index ea85da21a32a87..6135f356387289 100644 --- a/test/parallel/test-whatwg-url-searchparams-foreach.js +++ b/test/parallel/test-whatwg-url-searchparams-foreach.js @@ -3,7 +3,8 @@ const common = require('../common'); const assert = require('assert'); const { URL, URLSearchParams } = require('url'); -const { test, assert_array_equals, assert_unreached } = common.WPT; +const { test, assert_array_equals, assert_unreached } = + require('../common/wpt'); /* eslint-disable */ var i; // Strict mode fix for WPT. diff --git a/test/parallel/test-whatwg-url-searchparams-get.js b/test/parallel/test-whatwg-url-searchparams-get.js index cc34373528cc1f..a49cc2c2b0d0c0 100644 --- a/test/parallel/test-whatwg-url-searchparams-get.js +++ b/test/parallel/test-whatwg-url-searchparams-get.js @@ -3,7 +3,7 @@ const common = require('../common'); const assert = require('assert'); const URLSearchParams = require('url').URLSearchParams; -const { test, assert_equals, assert_true } = common.WPT; +const { test, assert_equals, assert_true } = require('../common/wpt'); /* eslint-disable */ /* WPT Refs: diff --git a/test/parallel/test-whatwg-url-searchparams-getall.js b/test/parallel/test-whatwg-url-searchparams-getall.js index 9c060ecb6d97a0..bf287d52a01cd8 100644 --- a/test/parallel/test-whatwg-url-searchparams-getall.js +++ b/test/parallel/test-whatwg-url-searchparams-getall.js @@ -3,7 +3,8 @@ const common = require('../common'); const assert = require('assert'); const URLSearchParams = require('url').URLSearchParams; -const { test, assert_equals, assert_true, assert_array_equals } = common.WPT; +const { test, assert_equals, assert_true, assert_array_equals } = + require('../common/wpt'); /* eslint-disable */ /* WPT Refs: diff --git a/test/parallel/test-whatwg-url-searchparams-has.js b/test/parallel/test-whatwg-url-searchparams-has.js index fac4364081be88..127e1a8329bffc 100644 --- a/test/parallel/test-whatwg-url-searchparams-has.js +++ b/test/parallel/test-whatwg-url-searchparams-has.js @@ -3,7 +3,7 @@ const common = require('../common'); const assert = require('assert'); const URLSearchParams = require('url').URLSearchParams; -const { test, assert_false, assert_true } = common.WPT; +const { test, assert_false, assert_true } = require('../common/wpt'); /* eslint-disable */ /* WPT Refs: diff --git a/test/parallel/test-whatwg-url-searchparams-set.js b/test/parallel/test-whatwg-url-searchparams-set.js index a630355b6e3178..f7620c05d12e6e 100644 --- a/test/parallel/test-whatwg-url-searchparams-set.js +++ b/test/parallel/test-whatwg-url-searchparams-set.js @@ -3,7 +3,7 @@ const common = require('../common'); const assert = require('assert'); const URLSearchParams = require('url').URLSearchParams; -const { test, assert_equals, assert_true } = common.WPT; +const { test, assert_equals, assert_true } = require('../common/wpt'); /* eslint-disable */ /* WPT Refs: diff --git a/test/parallel/test-whatwg-url-searchparams-sort.js b/test/parallel/test-whatwg-url-searchparams-sort.js index 5bddc14d947d8f..adc34976047522 100644 --- a/test/parallel/test-whatwg-url-searchparams-sort.js +++ b/test/parallel/test-whatwg-url-searchparams-sort.js @@ -1,8 +1,8 @@ 'use strict'; -const common = require('../common'); +require('../common'); const { URL, URLSearchParams } = require('url'); -const { test, assert_array_equals } = common.WPT; +const { test, assert_array_equals } = require('../common/wpt'); /* eslint-disable */ /* WPT Refs: diff --git a/test/parallel/test-whatwg-url-searchparams-stringifier.js b/test/parallel/test-whatwg-url-searchparams-stringifier.js index 327611bc68a8b9..7162932546f233 100644 --- a/test/parallel/test-whatwg-url-searchparams-stringifier.js +++ b/test/parallel/test-whatwg-url-searchparams-stringifier.js @@ -3,7 +3,7 @@ const common = require('../common'); const assert = require('assert'); const URLSearchParams = require('url').URLSearchParams; -const { test, assert_equals } = common.WPT; +const { test, assert_equals } = require('../common/wpt'); /* eslint-disable */ /* WPT Refs: diff --git a/test/parallel/test-whatwg-url-setters.js b/test/parallel/test-whatwg-url-setters.js index 253415dad6e5a9..60a482decc32f3 100644 --- a/test/parallel/test-whatwg-url-setters.js +++ b/test/parallel/test-whatwg-url-setters.js @@ -4,7 +4,7 @@ const common = require('../common'); const assert = require('assert'); const path = require('path'); const URL = require('url').URL; -const { test, assert_equals } = common.WPT; +const { test, assert_equals } = require('../common/wpt'); const additionalTestCases = require( path.join(common.fixturesDir, 'url-setter-tests-additional.js')); diff --git a/test/parallel/test-whatwg-url-tojson.js b/test/parallel/test-whatwg-url-tojson.js index 35af93261c79a5..5a90fdd27f3978 100644 --- a/test/parallel/test-whatwg-url-tojson.js +++ b/test/parallel/test-whatwg-url-tojson.js @@ -1,8 +1,8 @@ 'use strict'; -const common = require('../common'); +require('../common'); const URL = require('url').URL; -const { test, assert_equals } = common.WPT; +const { test, assert_equals } = require('../common/wpt'); /* eslint-disable */ /* WPT Refs: diff --git a/test/sequential/test-module-loading.js b/test/sequential/test-module-loading.js index 1b53f199b51684..0e476bfbad864e 100644 --- a/test/sequential/test-module-loading.js +++ b/test/sequential/test-module-loading.js @@ -243,7 +243,7 @@ try { }, {}); assert.deepStrictEqual(children, { - 'common.js': {}, + 'common/index.js': {}, 'fixtures/not-main-module.js': {}, 'fixtures/a.js': { 'fixtures/b/c.js': { diff --git a/test/testpy/__init__.py b/test/testpy/__init__.py index f7f64b7eb1d602..ccd55b05652b79 100644 --- a/test/testpy/__init__.py +++ b/test/testpy/__init__.py @@ -62,7 +62,7 @@ def GetCommand(self): source = open(self.file).read() flags_match = FLAGS_PATTERN.search(source) if flags_match: - # PORT should match the definition in test/common.js. + # PORT should match the definition in test/common/index.js. env = { 'PORT': int(os.getenv('NODE_COMMON_PORT', '12346')) } env['PORT'] += self.thread_id * 100 flag = flags_match.group(1).strip().format(**env).split()