tinymist/tests/ci/testCondition.mjs
Myriad-Dreamin 0bdaadbacd
fix: publish script with tests (#665)
* fix: publish script

* fix: publish script with tests

* dev: print env

* fix: guess reason

* fix: guess reason
2024-10-12 11:01:58 +08:00

51 lines
1.9 KiB
JavaScript

import assert from "assert";
const startsWith = (str, prefix) => str.startsWith(prefix);
const contains = (str, substr) => str.includes(substr);
const endsWith = (str, suffix) => str.endsWith(suffix);
// prettier-ignore
const releaseCond = (github, matrix) =>
(startsWith(github.ref, 'refs/tags/') && (!contains(github.ref, 'rc') && (endsWith(github.ref, '0') || endsWith(github.ref, '2') || endsWith(github.ref, '4') || endsWith(github.ref, '6') || endsWith(github.ref, '8'))));
// prettier-ignore
const nightlyCond = (github, matrix) =>
((startsWith(github.ref, 'refs/tags/') && !((!contains(github.ref, 'rc') && (endsWith(github.ref, '0') || endsWith(github.ref, '2') || endsWith(github.ref, '4') || endsWith(github.ref, '6') || endsWith(github.ref, '8'))))) || (!startsWith(github.ref, 'refs/tags/') && matrix.regular_build == 'true'));
for (const c of ["false", "true"]) {
assert(
releaseCond({ ref: "refs/tags/v0.11.20" }, { regular_build: c }),
`v0.11.20 (rb: ${c}) is a stable release`
);
assert(
!releaseCond({ ref: "refs/tags/v0.11.21" }, { regular_build: c }),
`v0.11.21 (rb: ${c}) is a nightly release`
);
assert(
!nightlyCond({ ref: "refs/tags/v0.11.20" }, { regular_build: c }),
`v0.11.20 (rb: ${c}) is a stable release`
);
assert(
nightlyCond({ ref: "refs/tags/v0.11.21" }, { regular_build: c }),
`v0.11.21 (rb: ${c}) is a nightly release`
);
}
for (const tag of ["dev", "dev0", "devrc0", "dev1", "devrc1", "devrc"]) {
assert(
!releaseCond({ ref: `refs/head/${tag}` }, { regular_build: "true" }),
`${tag} is a prerelease`
);
assert(
nightlyCond({ ref: `refs/head/${tag}` }, { regular_build: "true" }),
`${tag} is a prerelease`
);
assert(
!releaseCond({ ref: `refs/head/${tag}` }, { regular_build: "false" }),
`${tag} is skipped in prerelease`
);
assert(
!nightlyCond({ ref: `refs/head/${tag}` }, { regular_build: "false" }),
`${tag} is skipped in prerelease`
);
}