@inett/semantic-release-unsquash
Version:
Forked version of semantic-release-unsquash w/o release-notes-generator
46 lines (39 loc) • 1.69 kB
JavaScript
const parser = require('conventional-commits-parser');
const {
defaultCommitAnalyzerConfig,
defaultNotesGeneratorConfig,
} = require('./defaults');
describe('default noteKeywords ordering', () => {
it.each([
['defaultCommitAnalyzerConfig', defaultCommitAnalyzerConfig],
['defaultNotesGeneratorConfig', defaultNotesGeneratorConfig],
])('%s lists longer keywords before shorter ones', (_name, config) => {
const kws = config.parserOpts.noteKeywords;
const breakingIdx = kws.indexOf('BREAKING');
const breakingChangeIdx = kws.indexOf('BREAKING CHANGE');
const breakingChangesIdx = kws.indexOf('BREAKING CHANGES');
expect(breakingIdx).toBeGreaterThan(-1);
expect(breakingChangeIdx).toBeGreaterThan(-1);
expect(breakingChangesIdx).toBeGreaterThan(-1);
expect(breakingChangesIdx).toBeLessThan(breakingChangeIdx);
expect(breakingChangeIdx).toBeLessThan(breakingIdx);
});
});
describe('BREAKING note parsing with default keywords', () => {
const configs = [
['analyzer', defaultCommitAnalyzerConfig],
['notes', defaultNotesGeneratorConfig],
];
const keywords = ['BREAKING', 'BREAKING CHANGE', 'BREAKING CHANGES'];
configs.forEach(([label, config]) => {
keywords.forEach((keyword) => {
it(`${label} parses "${keyword}:" cleanly without phantom prefix`, () => {
const message = `feat(release)!: test\n\n${keyword}: This is the note content.`;
const parsed = parser.sync(message, config.parserOpts);
expect(parsed.notes).toHaveLength(1);
expect(parsed.notes[0].title).toBe(keyword);
expect(parsed.notes[0].text).toBe('This is the note content.');
});
});
});
});