# 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 > 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.
### 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.
### 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.
### 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.
### 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`
### spawnCat(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 `cat` command.
### 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.
### spawnSyncCat(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 `spawnCat` .
### 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.