9ecc4eeae8
构建前读取 OSS latest.json 并选择较高版本递增 patch 同步更新 AGC package、Tauri 与 Cargo 版本字段 让一键上传复用版本准备流程并更新发布文档 补充版本计算、配置校验与清单生成测试
49 lines
1.6 KiB
JavaScript
49 lines
1.6 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import { test } from 'node:test';
|
|
|
|
import {
|
|
compareVersions,
|
|
createUpdateManifest,
|
|
nextPatchVersion,
|
|
selectReleaseArtifact,
|
|
} from './build-release.mjs';
|
|
|
|
test('selects an explicit release artifact when configured', () => {
|
|
const artifactPath = new URL('../package.json', import.meta.url).pathname;
|
|
const previous = process.env.AGC_UPDATE_ARTIFACT;
|
|
process.env.AGC_UPDATE_ARTIFACT = artifactPath;
|
|
try {
|
|
assert.equal(selectReleaseArtifact([]), artifactPath);
|
|
} finally {
|
|
if (previous === undefined) delete process.env.AGC_UPDATE_ARTIFACT;
|
|
else process.env.AGC_UPDATE_ARTIFACT = previous;
|
|
}
|
|
});
|
|
|
|
test('does not select unsupported files', () => {
|
|
assert.equal(
|
|
selectReleaseArtifact(['/tmp/latest.json', '/tmp/readme.txt']),
|
|
null,
|
|
);
|
|
});
|
|
|
|
test('manifest contains version, download URL and integrity fields', () => {
|
|
const manifest = createUpdateManifest(
|
|
new URL('../package.json', import.meta.url).pathname,
|
|
);
|
|
assert.match(manifest.version, /^\d+\.\d+\.\d+$/u);
|
|
assert.match(
|
|
manifest.downloadUrl,
|
|
new RegExp(`/agc/${manifest.version}/package\\.json$`, 'u'),
|
|
);
|
|
assert.equal(manifest.sha256.length, 64);
|
|
assert.equal(typeof manifest.size, 'number');
|
|
});
|
|
|
|
test('next release version follows the higher local or OSS version', () => {
|
|
assert.equal(compareVersions('0.1.15', '0.1.12'), 1);
|
|
assert.equal(nextPatchVersion('0.1.12', '0.1.15'), '0.1.16');
|
|
assert.equal(nextPatchVersion('0.1.18', '0.1.15'), '0.1.19');
|
|
assert.equal(nextPatchVersion('0.1.12', null), '0.1.13');
|
|
});
|