Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit beedd45

Browse files
Trottitaloacasas
authored andcommittedJan 23, 2017
doc: edit writing-tests.md
* Remove passive voice * Remove unneeded modifiers * Minor comma change PR-URL: nodejs#10585 Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Italo A. Casas <[email protected]>
1 parent 0a548dc commit beedd45

File tree

1 file changed

+31
-30
lines changed

1 file changed

+31
-30
lines changed
 

‎doc/guides/writing-tests.md

+31-30
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ with code `0` on success. A test will fail if:
1212
- It never exits. In this case, the test runner will terminate the test because
1313
it sets a maximum time limit.
1414

15-
Tests can be added for multiple reasons:
15+
Add tests when:
1616

17-
- When adding new functionality.
18-
- When fixing regressions and bugs.
19-
- When expanding test coverage.
17+
- Adding new functionality.
18+
- Fixing regressions and bugs.
19+
- Expanding test coverage.
2020

2121
## Test structure
2222

23-
Let's analyze this very basic test from the Node.js test suite:
23+
Let's analyze this basic test from the Node.js test suite:
2424

2525
```javascript
2626
1 'use strict';
@@ -59,11 +59,12 @@ the nature of the test requires that the test run without it.
5959
The second line loads the `common` module. The `common` module is a helper
6060
module that provides useful tools for the tests.
6161

62-
Even if no functions or other properties exported by `common` are used in a
63-
test, the `common` module should still be included. This is because the `common`
64-
module includes code that will cause tests to fail if variables are leaked into
65-
the global space. In situations where no functions or other properties exported
66-
by `common` are used, it can be included without assigning it to an identifier:
62+
Even if a test uses no functions or other properties exported by `common`,
63+
the test should still include the `common` module before any other modules. This
64+
is because the `common` module includes code that will cause a test to fail if
65+
the test leaks variables into the global space. In situations where a test uses
66+
no functions or other properties exported by `common`, include it without
67+
assigning it to an identifier:
6768

6869
```javascript
6970
require('../common');
@@ -86,49 +87,49 @@ const assert = require('assert');
8687
const http = require('http');
8788
```
8889

89-
These modules are required for the test to run. Except for special cases, these
90-
modules should only include core modules.
91-
The `assert` module is used by most of the tests to check that the assumptions
92-
for the test are met.
93-
Note that require statements are sorted, in
90+
The test checks functionality in the `http` module.
91+
92+
Most tests use the `assert` module to confirm expectations of the test.
93+
94+
The require statements are sorted in
9495
[ASCII](http://man7.org/linux/man-pages/man7/ascii.7.html) order (digits, upper
9596
case, `_`, lower case).
9697

9798
### **Lines 10-21**
9899

99-
This is the body of the test. This test is quite simple, it just tests that an
100+
This is the body of the test. This test is simple, it just tests that an
100101
HTTP server accepts `non-ASCII` characters in the headers of an incoming
101102
request. Interesting things to notice:
102103

103-
- If the test doesn't depend on a specific port number then always use 0 instead
104-
of an arbitrary value, as it allows tests to be run in parallel safely, as the
105-
operating system will assign a random port. If the test requires a specific
106-
port, for example if the test checks that assigning a specific port works as
107-
expected, then it is ok to assign a specific port number.
104+
- If the test doesn't depend on a specific port number, then always use 0
105+
instead of an arbitrary value, as it allows tests to run in parallel safely,
106+
as the operating system will assign a random port. If the test requires a
107+
specific port, for example if the test checks that assigning a specific port
108+
works as expected, then it is ok to assign a specific port number.
108109
- The use of `common.mustCall` to check that some callbacks/listeners are
109110
called.
110-
- The HTTP server is closed once all the checks have run. This way, the test can
111+
- The HTTP server closes once all the checks have run. This way, the test can
111112
exit gracefully. Remember that for a test to succeed, it must exit with a
112113
status code of 0.
113114

114115
## General recommendations
115116

116117
### Timers
117118

118-
The use of timers is discouraged, unless timers are being tested. There are
119-
multiple reasons for this. Mainly, they are a source of flakiness. For a thorough
119+
Avoid timers unless the test is specifically testing timers. There are multiple
120+
reasons for this. Mainly, they are a source of flakiness. For a thorough
120121
explanation go [here](https://github.com/nodejs/testing/issues/27).
121122

122-
In the event a timer is needed, it's recommended using the
123-
`common.platformTimeout()` method, that allows setting specific timeouts
123+
In the event a test needs a timer, consider using the
124+
`common.platformTimeout()` method. It allows setting specific timeouts
124125
depending on the platform. For example:
125126

126127
```javascript
127128
const timer = setTimeout(fail, common.platformTimeout(4000));
128129
```
129130

130-
will create a 4-seconds timeout, except for some platforms where the delay will
131-
be multiplied for some factor.
131+
will create a 4-second timeout on most platforms but a longer timeout on slower
132+
platforms.
132133

133134
### The *common* API
134135

@@ -193,9 +194,9 @@ var server = http.createServer(common.mustCall(function(req, res) {
193194
### Flags
194195

195196
Some tests will require running Node.js with specific command line flags set. To
196-
accomplish this, a `// Flags: ` comment should be added in the preamble of the
197+
accomplish this, add a `// Flags: ` comment in the preamble of the
197198
test followed by the flags. For example, to allow a test to require some of the
198-
`internal/*` modules, the `--expose-internals` flag should be added.
199+
`internal/*` modules, add the `--expose-internals` flag.
199200
A test that would require `internal/freelist` could start like this:
200201

201202
```javascript

0 commit comments

Comments
 (0)
Please sign in to comment.