blob: 498752246010726073b49723f465cc335654fb6e [file]
const assert = require('node:assert/strict');
const test = require('node:test');
const path = require('node:path');
const fs = require('node:fs');
const {availableVersions, contentDirectory, inventory} = require('../docs-inventory.cjs');
const {versions, locales} = require('../../config/archived-docs.json');
const redirects = require('../../config/archived-docs-redirects.cjs');
const root = path.resolve(__dirname, '../..');
test('archived sources and metadata are kept outside active documentation trees', () => {
for (const version of versions) {
assert(availableVersions(root).includes(version));
const sidebar = `versioned_sidebars/version-${version}-sidebars.json`;
assert(!fs.existsSync(path.join(root, sidebar)), sidebar);
assert(fs.existsSync(path.join(root, 'archived_docs', sidebar)), sidebar);
const translation = `i18n/zh-CN/docusaurus-plugin-content-docs/version-${version}.json`;
assert(!fs.existsSync(path.join(root, translation)), translation);
assert(fs.existsSync(path.join(root, 'archived_docs', translation)), translation);
for (const locale of locales) {
const source = locale === 'en' ? `versioned_docs/version-${version}`
: `i18n/${locale}/docusaurus-plugin-content-docs/version-${version}`;
assert(!fs.existsSync(path.join(root, source)), source);
const archived = path.join(root, 'archived_docs', source);
assert(fs.statSync(archived).isDirectory());
assert.equal(contentDirectory(root, version, locale), archived);
}
}
});
test('every historical source page has a redirect; active versions have none', () => {
for (const locale of locales) {
const prefix = locale === 'en' ? '' : '/zh-CN';
const targets = new Set(redirects(`${prefix}/archived-docs/`));
for (const version of versions) {
const docs = inventory(root, version, locale);
assert(docs.length > 700);
assert.equal(docs.length, new Set(docs.map(doc => doc.source)).size);
for (const doc of docs) assert(targets.has(doc.route), doc.route);
assert(targets.has(`${prefix}/docs/${version}`));
assert(targets.has(`${prefix}/docs/${version}/gettingStarted/what-is-new`));
}
assert(![...targets].some(route => /\/docs\/(?:dev|4\.x|3\.x)(?:\/|$)/.test(route)));
}
assert.deepEqual(JSON.parse(fs.readFileSync(path.join(root, 'versions.json'))), ['4.x', '3.x']);
});