summaryrefslogtreecommitdiff
path: root/test/doctool
diff options
context:
space:
mode:
authorRichard Lau <riclau@uk.ibm.com>2019-11-02 03:48:47 -0400
committerRichard Lau <riclau@uk.ibm.com>2019-11-05 22:10:33 -0500
commit3b124e0a7342ebbeb09a922586f8291d88cadc0e (patch)
treeb3d9609b2fc881ffc3cd28f93957bbadd90ebf09 /test/doctool
parentf734ba9d6f0feb785c9154ddb99ae4cd3a7bc77f (diff)
downloadandroid-node-v8-3b124e0a7342ebbeb09a922586f8291d88cadc0e.tar.gz
android-node-v8-3b124e0a7342ebbeb09a922586f8291d88cadc0e.tar.bz2
android-node-v8-3b124e0a7342ebbeb09a922586f8291d88cadc0e.zip
tools: make doctool work if no internet available
Allow doctool to fallback to use local files if not building a release build. PR-URL: https://github.com/nodejs/node/pull/30214 Fixes: https://github.com/nodejs/node/issues/29918 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Diffstat (limited to 'test/doctool')
-rw-r--r--test/doctool/test-doctool-versions.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/test/doctool/test-doctool-versions.js b/test/doctool/test-doctool-versions.js
new file mode 100644
index 0000000000..8bb4f81c79
--- /dev/null
+++ b/test/doctool/test-doctool-versions.js
@@ -0,0 +1,59 @@
+'use strict';
+
+require('../common');
+const assert = require('assert');
+const util = require('util');
+const { versions } = require('../../tools/doc/versions.js');
+
+// At the time of writing these are the minimum expected versions.
+// New versions of Node.js do not have to be explicitly added here.
+const expected = [
+ '12.x',
+ '11.x',
+ '10.x',
+ '9.x',
+ '8.x',
+ '7.x',
+ '6.x',
+ '5.x',
+ '4.x',
+ '0.12.x',
+ '0.10.x',
+];
+
+async function test() {
+ const vers = await versions();
+ // Coherence checks for each returned version.
+ for (const version of vers) {
+ const tested = util.inspect(version);
+ const parts = version.num.split('.');
+ const expectedLength = parts[0] === '0' ? 3 : 2;
+ assert.strictEqual(parts.length, expectedLength,
+ `'num' from ${tested} should be '<major>.x'.`);
+ assert.strictEqual(parts[parts.length - 1], 'x',
+ `'num' from ${tested} doesn't end in '.x'.`);
+ const isEvenRelease = Number.parseInt(parts[expectedLength - 2]) % 2 === 0;
+ const hasLtsProperty = version.hasOwnProperty('lts');
+ if (hasLtsProperty) {
+ // Odd-numbered versions of Node.js are never LTS.
+ assert.ok(isEvenRelease, `${tested} should not be an 'lts' release.`);
+ assert.ok(version.lts, `'lts' from ${tested} should 'true'.`);
+ }
+ }
+
+ // Check that the minimum number of versions were returned.
+ // Later versions are allowed, but not checked for here (they were checked
+ // above).
+ // Also check for the previous semver major -- From master this will be the
+ // most recent major release.
+ const thisMajor = Number.parseInt(process.versions.node.split('.')[0]);
+ const prevMajorString = `${thisMajor - 1}.x`;
+ if (!expected.includes(prevMajorString)) {
+ expected.unshift(prevMajorString);
+ }
+ for (const version of expected) {
+ assert.ok(vers.find((x) => x.num === version),
+ `Did not find entry for '${version}' in ${util.inspect(vers)}`);
+ }
+}
+test();