Skip to content
Closed
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@ else
test: all
$(MAKE) build-addons
$(MAKE) build-addons-napi
$(MAKE) doc
$(MAKE) cctest
$(PYTHON) tools/test.py --mode=release -J \
$(CI_ASYNC_HOOKS) \
Expand Down Expand Up @@ -379,7 +380,7 @@ test-ci-js: | clear-stalled
fi

test-ci: LOGLEVEL := info
test-ci: | clear-stalled build-addons build-addons-napi
test-ci: | clear-stalled build-addons build-addons-napi doc
out/Release/cctest --gtest_output=tap:cctest.tap
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
--mode=release --flaky-tests=$(FLAKY_TESTS) \
Expand Down Expand Up @@ -518,7 +519,7 @@ doc: $(NODE_EXE) doc-only
$(apidoc_dirs):
mkdir -p $@

out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets/
out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets
cp $< $@

out/doc/%: doc/%
Expand Down
5 changes: 5 additions & 0 deletions test/common/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,11 @@ original state after calling [`common.hijackStdOut()`][].

Path to the 'root' directory. either `/` or `c:\\` (windows)

### projectDir
* return [&lt;String>]

Path to the project directory.

### skip(msg)
* `msg` [&lt;String>]

Expand Down
2 changes: 2 additions & 0 deletions test/common/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ exports.enoughTestCpu = Array.isArray(cpus) &&
(cpus.length > 1 || cpus[0].speed > 999);

exports.rootDir = exports.isWindows ? 'c:\\' : '/';
exports.projectDir = path.join(__dirname, '..', '..');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe path.resolve the output?


exports.buildType = process.config.target_defaults.default_configuration;

// If env var is set then enable async_hook hooks for all tests.
Expand Down
45 changes: 45 additions & 0 deletions test/sequential/test-make-doc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
'use strict';

// This tests that `make doc` generates the documentation properly.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nits: as per

'use strict'; // 1
const common = require('../common'); // 2
// This test ensures that the http-parser can handle UTF-8 characters // 4
// in the http header. // 5
const assert = require('assert'); // 7
headers should be

'use strict';
const common = require('../common');
if (common.isWindows) {
  common.skip('Do not make doc on Windows');
}

// This tests that `make doc` generates the documentation properly.
// Note that for this test to pass, `make doc` must be run first.
 
const assert = require('assert');
const fs = require('fs');
const path = require('path');

// Note that for this test to pass, `make doc` must be run first.

const common = require('../common');

const assert = require('assert');
const fs = require('fs');
const path = require('path');

if (common.isWindows) {
common.skip('Do not make doc on Windows');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMHO message should be '`make doc` doesn't run on Windows'

}

const apiPath = path.join(common.projectDir, 'out', 'doc', 'api');
const docs = fs.readdirSync(apiPath);
assert.ok(docs.includes('_toc.html'));

const toc = fs.readFileSync(path.join(apiPath, '_toc.html'), 'utf8');
const re = /href="([^/]+\.html)"/;
const globalRe = new RegExp(re, 'g');
const links = toc.match(globalRe);
assert.notStrictEqual(links, null);

// Test that all the relative links in the TOC of the documentation
// work and all the generated documents are linked in TOC.
const linkedHtmls = links.map((link) => link.match(re)[1]);
for (const html of linkedHtmls) {
assert.ok(docs.includes(html), `${html} does not exist`);
}

const excludes = ['.json', '_toc', 'assets'];
const generatedHtmls = docs.filter(function(doc) {
for (const exclude of excludes) {
if (doc.includes(exclude)) {
return false;
}
}
return true;
});

for (const html of generatedHtmls) {
assert.ok(linkedHtmls.includes(html), `${html} is not linked in toc`);
}