Files
ForgeFlow-Public/tests/release-policy.test.mjs
T
Public Source Publisher 04cbfccbdb
ForgeFlow quality gate / secret-scan (push) Successful in 4s
ForgeFlow signed release / release (push) Failing after 18m45s
ForgeFlow quality gate / quality (push) Canceled after 0s
Publish curated ForgeFlow source from 63022ccf9a37242d573297c8ce7f15db61acc34e
2026-09-30 21:27:28 +00:00

22 lines
1.2 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import releasePolicy from '../src/shared/release-policy.cjs';
const { windowsReleaseAssetNames, existingReleaseState } = releasePolicy;
const commit = 'a'.repeat(40);
const version = '0.10.16';
test('a draft for another commit cannot receive replacement release assets', () => {
assert.throws(() => existingReleaseState({ target_commitish: 'b'.repeat(40), draft: true }, version, commit), /Bump the version/);
});
test('a matching draft can resume while a complete published release is immutable', () => {
assert.equal(existingReleaseState({ target_commitish: commit, draft: true }, version, commit), 'draft');
assert.equal(existingReleaseState({ target_commitish: commit, draft: false, assets: windowsReleaseAssetNames(version).map((name) => ({ name })) }, version, commit), 'published');
});
test('a published release missing its signature cannot be treated as complete', () => {
const assets = windowsReleaseAssetNames(version).filter((name) => !name.endsWith('.sig')).map((name) => ({ name }));
assert.throws(() => existingReleaseState({ target_commitish: commit, draft: false, assets }, version, commit), /release-manifest.json.sig/);
});