Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test doctool #6031

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all 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
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ v8:
$(MAKE) -C deps/v8 $(V8_ARCH) $(V8_BUILD_OPTIONS)

test: | cctest # Depends on 'all'.
$(PYTHON) tools/test.py --mode=release message parallel sequential -J
$(PYTHON) tools/test.py --mode=release doctool message parallel sequential -J
Copy link
Contributor

Choose a reason for hiding this comment

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

Very minor, but for consistency I'd suggest adding the new directory on the last position here, like you did with test-ci below. Same goes for vcbuild.bat.

Copy link
Member

Choose a reason for hiding this comment

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

Actually, I'd keep both lists in alphabetical order if it's all the same to everyone else.

I promise to not say another words about this, as I bike-shedded more than my share on the last topic.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I alphabetized them because that makes more sense.

Copy link
Contributor

Choose a reason for hiding this comment

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

Good call 👍

$(MAKE) jslint
$(MAKE) cpplint

Expand Down Expand Up @@ -173,7 +173,7 @@ test-all-valgrind: test-build
test-ci: | build-addons
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
--mode=release --flaky-tests=$(FLAKY_TESTS) \
$(TEST_CI_ARGS) addons message parallel sequential
$(TEST_CI_ARGS) addons doctool message parallel sequential

test-release: test-build
$(PYTHON) tools/test.py --mode=release
Expand Down
48 changes: 48 additions & 0 deletions test/doctool/test-doctool-html.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
'use strict';

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

const html = require('../../tools/doc/html.js');

// Test data is a list of objects with two properties.
// The file property is the file path.
// The html property is some html which will be generated by the doctool.
// This html will be stripped of all whitespace because we don't currently
// have an html parser.
const testData = [
{
'file': common.fixturesDir + '/sample_document.md',
'html': '<ol><li>fish</li><li><p>fish</p></li><li><p>Redfish</p></li>' +
'<li>Bluefish</li></ol>'
},
{
'file': common.fixturesDir + '/order_of_end_tags_5873.md',
'html': '<h3>ClassMethod: Buffer.from(array) <span> ' +
'<a class="mark" href="#foo_class_method_buffer_from_array" ' +
'id="foo_class_method_buffer_from_array">#</a> </span> </h3><div' +
'class="signature"><ul><li><code>array</code><a ' +
'href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/' +
'Reference/Global_Objects/Array" class="type">&lt;Array&gt;</a></li>' +
'</ul></div>'
},
];

testData.forEach(function(item) {
// Normalize expected data by stripping whitespace
const expected = item.html.replace(/\s/g, '');

fs.readFile(item.file, 'utf8', common.mustCall(function(err, input) {
assert.ifError(err);
html(input, 'foo', 'doc/template.html',
common.mustCall(function(err, output) {
assert.ifError(err);

const actual = output.replace(/\s/g, '');
// Assert that the input stripped of all whitespace contains the
// expected list
assert.notEqual(actual.indexOf(expected), -1);
}));
}));
});
78 changes: 78 additions & 0 deletions test/doctool/test-doctool-json.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
'use strict';

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

const json = require('../../tools/doc/json.js');

// Outputs valid json with the expected fields when given simple markdown
// Test data is a list of objects with two properties.
// The file property is the file path.
// The json property is some json which will be generated by the doctool.
var testData = [
{
'file': common.fixturesDir + '/sample_document.md',
'json': {
'source': 'foo',
'modules': [ { 'textRaw': 'Sample Markdown',
'name': 'sample_markdown',
'modules': [ { 'textRaw':'Seussian Rhymes',
'name': 'seussian_rhymes',
'desc': '<ol>\n<li>fish</li>\n<li><p>fish</p>\n</li>\n<li>' +
'<p>Red fish</p>\n</li>\n<li>Blue fish</li>\n</ol>\n',
'type': 'module',
'displayName': 'Seussian Rhymes'
} ],
'type': 'module',
'displayName': 'Sample Markdown'
} ]
}
},
{
'file': common.fixturesDir + '/order_of_end_tags_5873.md',
'json': {
'source':'foo',
'modules': [ {
'textRaw': 'Title',
'name': 'title',
'modules': [ {
'textRaw': 'Subsection',
'name': 'subsection',
'classMethods': [ {
'textRaw': 'Class Method: Buffer.from(array)',
'type':'classMethod',
'name':'from',
'signatures': [ {
'params': [ {
'textRaw': '`array` {Array} ',
'name': 'array',
'type': 'Array'
} ]
},
{
'params' : [ {
'name': 'array'
} ]
}
]
} ],
'type': 'module',
'displayName': 'Subsection'
} ],
'type': 'module',
'displayName': 'Title'
} ]
}
}
];

testData.forEach(function(item) {
fs.readFile(item.file, 'utf8', common.mustCall(function(err, input) {
assert.ifError(err);
json(input, 'foo', common.mustCall(function(err, output) {
assert.ifError(err);
assert.deepStrictEqual(output, item.json);
}));
}));
});
7 changes: 7 additions & 0 deletions test/doctool/testcfg.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
import testpy

def GetConfiguration(context, root):
return testpy.SimpleTestConfiguration(context, root, 'doctool')
6 changes: 6 additions & 0 deletions test/fixtures/order_of_end_tags_5873.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Title

## Subsection

### Class Method: Buffer.from(array)
* `array` {Array}
8 changes: 8 additions & 0 deletions test/fixtures/sample_document.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Sample Markdown

## Seussian Rhymes
1. fish
2. fish

* Red fish
* Blue fish
1 change: 1 addition & 0 deletions tools/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -1427,6 +1427,7 @@ def ExpandCommand(args):
'addons',
'gc',
'debugger',
'doctool',
]


Expand Down
4 changes: 2 additions & 2 deletions vcbuild.bat
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ if /i "%1"=="nosnapshot" set nosnapshot=1&goto arg-ok
if /i "%1"=="noetw" set noetw=1&goto arg-ok
if /i "%1"=="noperfctr" set noperfctr=1&goto arg-ok
if /i "%1"=="licensertf" set licensertf=1&goto arg-ok
if /i "%1"=="test" set test_args=%test_args% addons sequential parallel message -J&set jslint=1&set build_addons=1&goto arg-ok
if /i "%1"=="test-ci" set test_args=%test_args% %test_ci_args% -p tap --logfile test.tap addons message sequential parallel&set build_addons=1&goto arg-ok
if /i "%1"=="test" set test_args=%test_args% addons doctool sequential parallel message -J&set jslint=1&set build_addons=1&goto arg-ok
if /i "%1"=="test-ci" set test_args=%test_args% %test_ci_args% -p tap --logfile test.tap addons doctool message sequential parallel&set build_addons=1&goto arg-ok
if /i "%1"=="test-addons" set test_args=%test_args% addons&set build_addons=1&goto arg-ok
if /i "%1"=="test-simple" set test_args=%test_args% sequential parallel -J&goto arg-ok
if /i "%1"=="test-message" set test_args=%test_args% message&goto arg-ok
Expand Down