diff --git a/test/README.md b/test/README.md index 470f525ebe1ebc..5e678df286868e 100644 --- a/test/README.md +++ b/test/README.md @@ -13,27 +13,27 @@ For the tests to run on Windows, be sure to clone Node.js source code with the ## Test Directories -| Directory | Runs on CI | Purpose | -| ---------------- | ---------- | --------------- | -| `abort` | Yes | Tests that use `--abort-on-uncaught-exception` and other situations where we want to test something but avoid generating a core file. | -| `addons` | Yes | Tests for [addon](https://nodejs.org/api/addons.html) functionality along with some tests that require an addon. | -| `async-hooks` | Yes | Tests for [async\_hooks](https://nodejs.org/api/async\_hooks.html) functionality. | -| `benchmark` | Yes | Test minimal functionality of benchmarks. | -| `cctest` | Yes | C++ tests that are run as part of the build process. | -| `code-cache` | No | Tests for a Node.js binary compiled with V8 code cache. | -| `common` | | Common modules shared among many tests. [Documentation](./common/README.md) | -| `doctool` | Yes | Tests for the documentation generator. | -| `es-module` | Yes | Test ESM module loading. | -| `fixtures` | | Test fixtures used in various tests throughout the test suite. | -| `internet` | No | Tests that make real outbound network connections. Tests for networking related modules may also be present in other directories, but those tests do not make outbound connections. | -| `js-native-api` | Yes | Tests for Node.js-agnostic [n-api](https://nodejs.org/api/n-api.html) functionality. | -| `known_issues` | Yes | Tests reproducing known issues within the system. All tests inside of this directory are expected to fail. If a test doesn't fail on certain platforms, those should be skipped via `known_issues.status`. | -| `message` | Yes | Tests for messages that are output for various conditions (`console.log`, error messages etc.) | -| `node-api` | Yes | Tests for Node.js-specific [n-api](https://nodejs.org/api/n-api.html) functionality. | -| `parallel` | Yes | Various tests that are able to be run in parallel. | -| `pseudo-tty` | Yes | Tests that require stdin/stdout/stderr to be a TTY. | -| `pummel` | No | Various tests for various modules / system functionality operating under load. | -| `sequential` | Yes | Various tests that must not run in parallel. | -| `testpy` | | Test configuration utility used by various test suites. | -| `tick-processor` | No | Tests for the V8 tick processor integration. The tests are for the logic in `lib/internal/v8_prof_processor.js` and `lib/internal/v8_prof_polyfill.js`. The tests confirm that the profile processor packages the correct set of scripts from V8 and introduces the correct platform specific logic. | -| `v8-updates` | No | Tests for V8 performance integration. | +| Directory | Runs on CI | Purpose | +| ---------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `abort` | Yes | Tests that use `--abort-on-uncaught-exception` and other situations where we want to test something but avoid generating a core file. | +| `addons` | Yes | Tests for [addon](https://nodejs.org/api/addons.html) functionality along with some tests that require an addon. | +| `async-hooks` | Yes | Tests for [async\_hooks](https://nodejs.org/api/async\_hooks.html) functionality. | +| `benchmark` | Yes | Test minimal functionality of benchmarks. | +| `cctest` | Yes | C++ tests that are run as part of the build process. | +| `code-cache` | No | Tests for a Node.js binary compiled with V8 code cache. | +| `common` | | Common modules shared among many tests. [Documentation](./common/README.md) | +| `doctool` | Yes | Tests for the documentation generator. | +| `es-module` | Yes | Test ESM module loading. | +| `fixtures` | | Test fixtures used in various tests throughout the test suite. | +| `internet` | No | Tests that make real outbound network connections. Tests for networking related modules may also be present in other directories, but those tests do not make outbound connections. | +| `js-native-api` | Yes | Tests for Node.js-agnostic [n-api](https://nodejs.org/api/n-api.html) functionality. | +| `known_issues` | Yes | Tests reproducing known issues within the system. All tests inside of this directory are expected to fail. If a test doesn't fail on certain platforms, those should be skipped via `known_issues.status`. | +| `message` | Yes | Tests for messages that are output for various conditions (`console.log`, error messages etc.) | +| `node-api` | Yes | Tests for Node.js-specific [n-api](https://nodejs.org/api/n-api.html) functionality. | +| `parallel` | Yes | Various tests that are able to be run in parallel. | +| `pseudo-tty` | Yes | Tests that require stdin/stdout/stderr to be a TTY. | +| `pummel` | No | Various tests for various modules / system functionality operating under load. | +| `sequential` | Yes | Various tests that must not run in parallel. | +| `testpy` | | Test configuration utility used by various test suites. | +| `tick-processor` | No | Tests for the V8 tick processor integration. The tests are for the logic in `lib/internal/v8_prof_processor.js` and `lib/internal/v8_prof_polyfill.js`. The tests confirm that the profile processor packages the correct set of scripts from V8 and introduces the correct platform specific logic. | +| `v8-updates` | No | Tests for V8 performance integration. | diff --git a/test/async-hooks/coverage.md b/test/async-hooks/coverage.md index 5470297d20625a..1950db6ec008d9 100644 --- a/test/async-hooks/coverage.md +++ b/test/async-hooks/coverage.md @@ -3,7 +3,7 @@ Showing which kind of async resource is covered by which test: | Resource Type | Test | -|---------------------|-----------------------------------------| +| ------------------- | --------------------------------------- | | CONNECTION | test-connection.ssl.js | | FSEVENTWRAP | test-fseventwrap.js | | FSREQCALLBACK | test-fsreqcallback-{access,readFile}.js | diff --git a/test/common/README.md b/test/common/README.md index 2352e0497a4378..d7387cef7b298b 100644 --- a/test/common/README.md +++ b/test/common/README.md @@ -31,10 +31,11 @@ The `benchmark` module is used by tests to run benchmarks. ### `runBenchmark(name, args, env)` -* `name` [\][] Name of benchmark suite to be run. -* `args` [\][] Array of environment variable key/value pairs (ex: +* `name` [\][] Name of benchmark suite to be run. +* `args` [\][] Array of environment variable key/value pairs (ex: `n=1`) to be applied via `--set`. -* `env` [\][] Environment variables to be applied during the run. +* `env` [\][] Environment variables to be applied during the + run. ## Common Module API @@ -43,14 +44,14 @@ tasks. ### `allowGlobals(...allowlist)` -* `allowlist` [\][] Array of Globals -* return [\][] +* `allowlist` [\][] Array of Globals +* return [\][] Takes `allowlist` and concats that with predefined `knownGlobals`. ### `canCreateSymLink()` -* return [\][] +* return [\][] Checks whether the current running process can create symlinks. On Windows, this returns `false` if the process running doesn't have privileges to create @@ -64,17 +65,17 @@ Creates a 10 MB file of all null characters. ### `enoughTestMem` -* [\][] +* [\][] Indicates if there is more than 1gb of total memory. ### `expectsError(validator[, exact])` -* `validator` [\][] | [\][] | [\][] | - [\][] The validator behaves identical to - `assert.throws(fn, validator)`. -* `exact` [\][] default = 1 -* return [\][] A callback function that expects an error. +* `validator` [\][] | [\][] | + [\][] | [\][] The validator behaves + identical to `assert.throws(fn, validator)`. +* `exact` [\][] default = 1 +* return [\][] A callback function that expects an error. A function suitable as callback to validate callback based errors. The error is validated using `assert.throws(() => { throw error; }, validator)`. If the @@ -83,9 +84,9 @@ test is complete, then the test will fail. ### `expectWarning(name[, expected[, code]])` -* `name` [\][] | [\][] -* `expected` [\][] | [\][] | [\][] -* `code` [\][] +* `name` [\][] | [\][] +* `expected` [\][] | [\][] | [\][] +* `code` [\][] Tests whether `name`, `expected`, and `code` are part of a raised warning. @@ -130,23 +131,23 @@ expectWarning({ ### `getArrayBufferViews(buf)` -* `buf` [\][] -* return [\][]\[] +* `buf` [\][] +* return [\][]\[] Returns an instance of all possible `ArrayBufferView`s of the provided Buffer. ### `getBufferSources(buf)` -* `buf` [\][] -* return [\][]\[] +* `buf` [\][] +* return [\][]\[] Returns an instance of all possible `BufferSource`s of the provided Buffer, consisting of all `ArrayBufferView` and an `ArrayBuffer`. ### `getCallSite(func)` -* `func` [\][] -* return [\][] +* `func` [\][] +* return [\][] Returns the file name and line number for the provided Function. @@ -158,13 +159,13 @@ The TTY file descriptor is assumed to be capable of being writable. ### `hasCrypto` -* [\][] +* [\][] Indicates whether OpenSSL is available. ### `hasFipsCrypto` -* [\][] +* [\][] Indicates that Node.js has been linked with a FIPS compatible OpenSSL library, and that FIPS as been enabled using `--enable-fips`. @@ -175,104 +176,104 @@ used to determine that situation. ### `hasIntl` -* [\][] +* [\][] Indicates if [internationalization][] is supported. ### `hasIPv6` -* [\][] +* [\][] Indicates whether `IPv6` is supported on this platform. ### `hasMultiLocalhost` -* [\][] +* [\][] Indicates if there are multiple localhosts available. ### `inFreeBSDJail` -* [\][] +* [\][] Checks whether free BSD Jail is true or false. ### `isAIX` -* [\][] +* [\][] Platform check for Advanced Interactive eXecutive (AIX). ### `isAlive(pid)` -* `pid` [\][] -* return [\][] +* `pid` [\][] +* return [\][] Attempts to 'kill' `pid` ### `isDumbTerminal` -* [\][] +* [\][] ### `isFreeBSD` -* [\][] +* [\][] Platform check for Free BSD. ### `isIBMi` -* [\][] +* [\][] Platform check for IBMi. ### `isLinux` -* [\][] +* [\][] Platform check for Linux. ### `isLinuxPPCBE` -* [\][] +* [\][] Platform check for Linux on PowerPC. ### `isOSX` -* [\][] +* [\][] Platform check for macOS. ### `isSunOS` -* [\][] +* [\][] Platform check for SunOS. ### `isWindows` -* [\][] +* [\][] Platform check for Windows. ### `localhostIPv4` -* [\][] +* [\][] IP of `localhost`. ### `localIPv6Hosts` -* [\][] +* [\][] Array of IPV6 representations for `localhost`. ### `mustCall([fn][, exact])` -* `fn` [\][] default = () => {} -* `exact` [\][] default = 1 -* return [\][] +* `fn` [\][] default = () => {} +* `exact` [\][] default = 1 +* return [\][] Returns a function that calls `fn`. If the returned function has not been called exactly `exact` number of times when the test is complete, then the test will @@ -282,9 +283,9 @@ If `fn` is not provided, an empty function will be used. ### `mustCallAtLeast([fn][, minimum])` -* `fn` [\][] default = () => {} -* `minimum` [\][] default = 1 -* return [\][] +* `fn` [\][] default = () => {} +* `minimum` [\][] default = 1 +* return [\][] Returns a function that calls `fn`. If the returned function has not been called at least `minimum` number of times when the test is complete, then the test will @@ -294,16 +295,16 @@ If `fn` is not provided, an empty function will be used. ### `mustNotCall([msg])` -* `msg` [\][] default = 'function should not have been called' -* return [\][] +* `msg` [\][] default = 'function should not have been called' +* return [\][] Returns a function that triggers an `AssertionError` if it is invoked. `msg` is used as the error message for the `AssertionError`. ### `mustSucceed([fn])` -* `fn` [\][] default = () => {} -* return [\][] +* `fn` [\][] default = () => {} +* return [\][] Returns a function that accepts arguments `(err, ...args)`. If `err` is not `undefined` or `null`, it triggers an `AssertionError`. Otherwise, it calls @@ -311,9 +312,9 @@ Returns a function that accepts arguments `(err, ...args)`. If `err` is not ### `nodeProcessAborted(exitCode, signal)` -* `exitCode` [\][] -* `signal` [\][] -* return [\][] +* `exitCode` [\][] +* `signal` [\][] +* return [\][] 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` @@ -321,14 +322,14 @@ otherwise. ### `opensslCli` -* [\][] +* [\][] Indicates whether 'opensslCli' is supported. ### `platformTimeout(ms)` -* `ms` [\][] | [\][] -* return [\][] | [\][] +* `ms` [\][] | [\][] +* return [\][] | [\][] Returns a timeout value based on detected conditions. For example, a debug build may need extra time so the returned value will be larger than on a release @@ -336,25 +337,25 @@ build. ### `PIPE` -* [\][] +* [\][] Path to the test socket. ### `PORT` -* [\][] +* [\][] A port number for tests to use if one is needed. ### `printSkipMessage(msg)` -* `msg` [\][] +* `msg` [\][] Logs '1..0 # Skipped: ' + `msg` ### `pwdCommand` -* [\][] First two argument for the `spawn`/`exec` functions. +* [\][] First two argument for the `spawn`/`exec` functions. Platform normalized `pwd` command options. Usage example: @@ -367,14 +368,14 @@ spawn(...common.pwdCommand, { stdio: ['pipe'] }); ### `requireNoPackageJSONAbove([dir])` -* `dir` [\][] default = \_\_dirname +* `dir` [\][] default = \_\_dirname Throws an `AssertionError` if a `package.json` file exists in any ancestor directory above `dir`. Such files may interfere with proper test functionality. ### `runWithInvalidFD(func)` -* `func` [\][] +* `func` [\][] Runs `func` with an invalid file descriptor that is an unsigned integer and can be used to trigger `EBADF` as the first argument. If no such file @@ -383,7 +384,7 @@ will not be run. ### `skip(msg)` -* `msg` [\][] +* `msg` [\][] Logs '1..0 # Skipped: ' + `msg` and exits with exit code `0`. @@ -476,7 +477,7 @@ Environment variables used in profiled processes. ### `getCpuProfiles(dir)` * `dir` {string} The directory containing the CPU profile files. -* return [\][] +* return [\][] Returns an array of all `.cpuprofile` files found in `dir`. @@ -484,7 +485,7 @@ Returns an array of all `.cpuprofile` files found in `dir`. * `file` {string} Path to a `.cpuprofile` file. * `suffix` {string} Suffix of the URL of call frames to retrieve. -* returns { frames: [\][], nodes: [\][] } +* returns { frames: [\][], nodes: [\][] } Returns an object containing an array of the relevant call frames and an array of all the profile nodes. @@ -508,10 +509,10 @@ Provides common functionality for tests for `node inspect`. ### `startCLI(args[[, flags], spawnOpts])` -* `args` [\][] -* `flags` [\][] default = \[] -* `showOpts` [\][] default = {} -* return [\][] +* `args` [\][] +* `flags` [\][] default = \[] +* `showOpts` [\][] default = {} +* return [\][] Returns a null-prototype object with properties that are functions and getters used to interact with the `node inspect` CLI. These functions are: @@ -536,9 +537,9 @@ The `DNS` module provides utilities related to the `dns` built-in module. ### `errorLookupMock(code, syscall)` -* `code` [\][] Defaults to `dns.mockedErrorCode`. -* `syscall` [\][] Defaults to `dns.mockedSysCall`. -* return [\][] +* `code` [\][] Defaults to `dns.mockedErrorCode`. +* `syscall` [\][] Defaults to `dns.mockedSysCall`. +* return [\][] A mock for the `lookup` option of `net.connect()` that would result in an error with the `code` and the `syscall` specified. Returns a function that has the @@ -554,39 +555,39 @@ The default `syscall` of errors generated by `errorLookupMock`. ### `readDomainFromPacket(buffer, offset)` -* `buffer` [\][] -* `offset` [\][] -* return [\][] +* `buffer` [\][] +* `offset` [\][] +* return [\][] Reads the domain string from a packet and returns an object containing the number of bytes read and the domain. ### `parseDNSPacket(buffer)` -* `buffer` [\][] -* return [\][] +* `buffer` [\][] +* return [\][] Parses a DNS packet. Returns an object with the values of the various flags of the packet depending on the type of packet. ### `writeIPv6(ip)` -* `ip` [\][] -* return [\][] +* `ip` [\][] +* return [\][] Reads an IPv6 String and returns a Buffer containing the parts. ### `writeDomainName(domain)` -* `domain` [\][] -* return [\][] +* `domain` [\][] +* return [\][] Reads a Domain String and returns a Buffer containing the domain. ### `writeDNSPacket(parsed)` -* `parsed` [\][] -* return [\][] +* `parsed` [\][] +* return [\][] Takes in a parsed Object and writes its fields to a DNS packet as a Buffer object. @@ -630,26 +631,26 @@ files in the `test/fixtures` directory. ### `fixtures.fixturesDir` -* [\][] +* [\][] The absolute path to the `test/fixtures/` directory. ### `fixtures.path(...args)` -* `...args` [\][] +* `...args` [\][] Returns the result of `path.join(fixtures.fixturesDir, ...args)`. ### `fixtures.readSync(args[, enc])` -* `args` [\][] | [\][] +* `args` [\][] | [\][] Returns the result of `fs.readFileSync(path.join(fixtures.fixturesDir, ...args), 'enc')`. ### `fixtures.readKey(arg[, enc])` -* `arg` [\][] +* `arg` [\][] Returns the result of `fs.readFileSync(path.join(fixtures.fixturesDir, 'keys', arg), 'enc')`. @@ -668,12 +669,13 @@ one listed below. (`heap.validateSnapshotNodes(...)` is a shortcut for ### `heap.validateSnapshotNodes(name, expected, options)` -* `name` [\][] Look for this string as the name of heap dump nodes. -* `expected` [\][] A list of objects, possibly with an `children` +* `name` [\][] Look for this string as the name of heap dump + nodes. +* `expected` [\][] A list of objects, possibly with an `children` property that points to expected other adjacent nodes. -* `options` [\][] - * `loose` [\][] Do not expect an exact listing of occurrences - of nodes with name `name` in `expected`. +* `options` [\][] + * `loose` [\][] Do not expect an exact listing of + occurrences of nodes with name `name` in `expected`. Create a heap dump and an embedder graph copy and validate occurrences. @@ -711,7 +713,7 @@ console.log('this is sent to the hijacked listener'); ### `hijackStderr(listener)` -* `listener` [\][]: a listener with a single parameter +* `listener` [\][]: a listener with a single parameter called `data`. Eavesdrop to `process.stderr.write()` calls. Once `process.stderr.write()` is @@ -721,7 +723,7 @@ the number of calls. ### `hijackStdout(listener)` -* `listener` [\][]: a listener with a single parameter +* `listener` [\][]: a listener with a single parameter called `data`. Eavesdrop to `process.stdout.write()` calls. Once `process.stdout.write()` is @@ -865,27 +867,27 @@ internet-related tests. ### `internet.addresses` -* [\][] - * `INET_HOST` [\][] A generic host that has registered common +* [\][] + * `INET_HOST` [\][] A generic host that has registered common DNS records, supports both IPv4 and IPv6, and provides basic HTTP/HTTPS services - * `INET4_HOST` [\][] A host that provides IPv4 services - * `INET6_HOST` [\][] A host that provides IPv6 services - * `INET4_IP` [\][] An accessible IPv4 IP, defaults to the + * `INET4_HOST` [\][] A host that provides IPv4 services + * `INET6_HOST` [\][] A host that provides IPv6 services + * `INET4_IP` [\][] An accessible IPv4 IP, defaults to the Google Public DNS IPv4 address - * `INET6_IP` [\][] An accessible IPv6 IP, defaults to the + * `INET6_IP` [\][] An accessible IPv6 IP, defaults to the Google Public DNS IPv6 address - * `INVALID_HOST` [\][] An invalid host that cannot be resolved - * `MX_HOST` [\][] A host with MX records registered - * `SRV_HOST` [\][] A host with SRV records registered - * `PTR_HOST` [\][] A host with PTR records registered - * `NAPTR_HOST` [\][] A host with NAPTR records registered - * `SOA_HOST` [\][] A host with SOA records registered - * `CNAME_HOST` [\][] A host with CNAME records registered - * `NS_HOST` [\][] A host with NS records registered - * `TXT_HOST` [\][] A host with TXT records registered - * `DNS4_SERVER` [\][] An accessible IPv4 DNS server - * `DNS6_SERVER` [\][] An accessible IPv6 DNS server + * `INVALID_HOST` [\][] An invalid host that cannot be resolved + * `MX_HOST` [\][] A host with MX records registered + * `SRV_HOST` [\][] A host with SRV records registered + * `PTR_HOST` [\][] A host with PTR records registered + * `NAPTR_HOST` [\][] A host with NAPTR records registered + * `SOA_HOST` [\][] A host with SOA records registered + * `CNAME_HOST` [\][] A host with CNAME records registered + * `NS_HOST` [\][] A host with NS records registered + * `TXT_HOST` [\][] A host with TXT records registered + * `DNS4_SERVER` [\][] An accessible IPv4 DNS server + * `DNS6_SERVER` [\][] An accessible IPv6 DNS server A set of addresses for internet-related tests. All properties are configurable via `NODE_TEST_*` environment variables. For example, to configure @@ -906,9 +908,9 @@ onGC({}, { ongc() { console.log('collected'); } }); ### `onGC(target, listener)` -* `target` [\][] -* `listener` [\][] - * `ongc` [\][] +* `target` [\][] +* `listener` [\][] + * `ongc` [\][] Installs a GC listener for the collection of `target`. @@ -927,24 +929,25 @@ functionality. ### `findReports(pid, dir)` -* `pid` [\][] Process ID to retrieve diagnostic report files for. -* `dir` [\][] Directory to search for diagnostic report files. -* return [\][] +* `pid` [\][] Process ID to retrieve diagnostic report files + for. +* `dir` [\][] Directory to search for diagnostic report files. +* return [\][] Returns an array of diagnostic report file names found in `dir`. The files should have been generated by a process whose PID matches `pid`. ### `validate(filepath)` -* `filepath` [\][] Diagnostic report filepath to validate. +* `filepath` [\][] Diagnostic report filepath to validate. Validates the schema of a diagnostic report file whose path is specified in `filepath`. If the report fails validation, an exception is thrown. ### `validateContent(report)` -* `report` [\][] | [\][] JSON contents of a diagnostic - report file, the parsed Object thereof, or the result of +* `report` [\][] | [\][] JSON contents of a + diagnostic report file, the parsed Object thereof, or the result of `process.report.getReport()`. Validates the schema of a diagnostic report whose content is specified in @@ -957,8 +960,8 @@ after a given number of event loop "ticks". ### `tick(x, cb)` -* `x` [\][] Number of event loop "ticks". -* `cb` [\][] A callback function. +* `x` [\][] Number of event loop "ticks". +* `cb` [\][] A callback function. ## tmpdir Module @@ -966,7 +969,7 @@ The `tmpdir` module supports the use of a temporary directory for testing. ### `path` -* [\][] +* [\][] The realpath of the testing temporary directory. @@ -1015,18 +1018,18 @@ A driver class for running WPT with the WPT harness in a worker thread. See [the WPT tests README][] for details. -[\]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array -[\]: https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView -[\]: https://nodejs.org/api/buffer.html#buffer_class_buffer -[\]: https://developer.mozilla.org/en-US/docs/Web/API/BufferSource -[\]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error -[\]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function -[\]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object -[\]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp -[\]: https://github.com/tc39/proposal-bigint -[\]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type -[\]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type -[\]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type +[]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array +[]: https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView +[]: https://nodejs.org/api/buffer.html#buffer_class_buffer +[]: https://developer.mozilla.org/en-US/docs/Web/API/BufferSource +[]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error +[]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function +[]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object +[]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp +[]: https://github.com/tc39/proposal-bigint +[]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type +[]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type +[]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type [Web Platform Tests]: https://github.com/web-platform-tests/wpt [`hijackstdio.hijackStdErr()`]: #hijackstderrlistener [`hijackstdio.hijackStdOut()`]: #hijackstdoutlistener