'use strict'; // This test checks that the changelogs contain an entry for releases. const common = require('../common'); const assert = require('assert'); const fs = require('fs'); const path = require('path'); const getDefine = (text, name) => { const regexp = new RegExp(`#define\\s+${name}\\s+(.*)`); const match = regexp.exec(text); assert.notStrictEqual(match, null); return match[1]; }; const srcRoot = path.join(__dirname, '..', '..'); const mainChangelogFile = path.join(srcRoot, 'CHANGELOG.md'); const versionFile = path.join(srcRoot, 'src', 'node_version.h'); const versionText = fs.readFileSync(versionFile, { encoding: 'utf8' }); const release = getDefine(versionText, 'NODE_VERSION_IS_RELEASE') !== '0'; if (!release) { common.skip('release bit is not set'); } const major = getDefine(versionText, 'NODE_MAJOR_VERSION'); const minor = getDefine(versionText, 'NODE_MINOR_VERSION'); const patch = getDefine(versionText, 'NODE_PATCH_VERSION'); const versionForRegex = `${major}\\.${minor}\\.${patch}`; const lts = getDefine(versionText, 'NODE_VERSION_IS_LTS') !== '0'; const codename = getDefine(versionText, 'NODE_VERSION_LTS_CODENAME').slice(1, -1); // If the LTS bit is set there should be a codename. if (lts) { assert.notStrictEqual(codename, ''); } const changelogPath = `doc/changelogs/CHANGELOG_V${major}.md`; // Check CHANGELOG_V*.md { const changelog = fs.readFileSync(path.join(srcRoot, changelogPath), { encoding: 'utf8' }); // Check title matches major version. assert.match(changelog, new RegExp(`# Node\\.js ${major} ChangeLog`)); // Check table header let tableHeader; if (lts) { tableHeader = new RegExp(`