mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
4f2e372716
Export a new common.noop no-operation function for general use. Allow using common.mustCall() without a fn argument to simplify test cases. Replace various non-op functions throughout tests with common.noop PR-URL: https://github.com/nodejs/node/pull/12027 Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com> Reviewed-By: Teddy Katz <teddy.katz@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
423 lines
14 KiB
Markdown
423 lines
14 KiB
Markdown
# Node.js Core Tests
|
|
|
|
This folder 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).
|
|
|
|
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
|
|
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Directory</th>
|
|
<th>Runs on CI</th>
|
|
<th>Purpose</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>abort</td>
|
|
<td>No</td>
|
|
<td>
|
|
Tests for when the <code>--abort-on-uncaught-exception</code>
|
|
flag is used.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>addons</td>
|
|
<td>Yes</td>
|
|
<td>
|
|
Tests for <a href="https://nodejs.org/api/addons.html">addon</a>
|
|
functionality along with some tests that require an addon to function
|
|
properly.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>cctest</td>
|
|
<td>Yes</td>
|
|
<td>
|
|
C++ test that is run as part of the build process.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>debugger</td>
|
|
<td>No</td>
|
|
<td>
|
|
Tests for <a href="https://nodejs.org/api/debugger.html">debugger</a>
|
|
functionality along with some tests that require an addon to function
|
|
properly.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>disabled</td>
|
|
<td>No</td>
|
|
<td>
|
|
Tests that have been disabled from running for various reasons.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>fixtures</td>
|
|
<td></td>
|
|
<td>Test fixtures used in various tests throughout the test suite.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>gc</td>
|
|
<td>No</td>
|
|
<td>Tests for garbage collection related functionality.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>inspector</td>
|
|
<td>Yes</td>
|
|
<td>Tests for the V8 inspector integration.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>internet</td>
|
|
<td>No</td>
|
|
<td>
|
|
Tests that make real outbound connections (mainly networking related
|
|
modules). Tests for networking related modules may also be present in
|
|
other directories, but those tests do not make outbound connections.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>known_issues</td>
|
|
<td>No</td>
|
|
<td>Tests reproducing known issues within the system.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>message</td>
|
|
<td>Yes</td>
|
|
<td>
|
|
Tests for messages that are output for various conditions
|
|
(<code>console.log</code>, error messages etc.)</td>
|
|
</tr>
|
|
<tr>
|
|
<td>parallel</td>
|
|
<td>Yes</td>
|
|
<td>Various tests that are able to be run in parallel.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>pseudo-tty</td>
|
|
<td>Yes</td>
|
|
<td>Tests that require stdin/stdout/stderr to be a TTY.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>pummel</td>
|
|
<td>No</td>
|
|
<td>
|
|
Various tests for various modules / system functionality operating
|
|
under load.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>sequential</td>
|
|
<td>Yes</td>
|
|
<td>
|
|
Various tests that are run sequentially.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>testpy</td>
|
|
<td></td>
|
|
<td>
|
|
Test configuration utility used by various test suites.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>tick-processor</td>
|
|
<td>No</td>
|
|
<td>
|
|
Tests for the V8 tick processor integration. The tests are for the
|
|
logic in <code>lib/internal/v8_prof_processor.js</code> and
|
|
<code>lib/internal/v8_prof_polyfill.js</code>. The tests confirm that
|
|
the profile processor packages the correct set of scripts from V8 and
|
|
introduces the correct platform specific logic.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>timers</td>
|
|
<td>No</td>
|
|
<td>
|
|
Tests for
|
|
<a href="https://nodejs.org/api/timers.html">timing utilities</a>
|
|
(<code>setTimeout</code> and <code>setInterval</code>).
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
## 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.
|
|
|
|
### 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.
|
|
|
|
### 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.
|
|
|
|
### fail(msg)
|
|
* `msg` [<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)
|
|
|
|
Throws an `AssertionError` with `msg`
|
|
|
|
### 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 OS X.
|
|
|
|
### 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).
|