test(catalog): give the Git publication tests room to finish
Gitea Actions Runner Test / test-job (push) Successful in 0s
CI / check (push) Failing after 22s
CI / tests-unit (push) Skipped
CI / tests-integration (push) Skipped
CI / tests-ui (push) Skipped
CI / preflight (push) Skipped
CI / deploy (push) Skipped
Gitea Actions Runner Test / test-job (push) Successful in 0s
CI / check (push) Failing after 22s
CI / tests-unit (push) Skipped
CI / tests-integration (push) Skipped
CI / tests-ui (push) Skipped
CI / preflight (push) Skipped
CI / deploy (push) Skipped
These drive real git processes against a local bare remote, so their cost is process spawns competing with every other Vitest worker. Measured on CI they take 23-30s each, and the 30s override was crossed by 37ms, so the run failed on wall-clock rather than on behaviour. Replace the three hand-picked 30_000 values with one documented constant at 120_000, which keeps a genuine hang visible while clearing the observed spread. The global default stays at 10s so nothing else is loosened.
This commit is contained in:
1 parent
d9ef7f8360
commit
c2981bd970
1 file changed
+12
-3
@@ -54,6 +54,15 @@ async function fixture() {
|
|||||||
return { options, git, manifestSource, source };
|
return { options, git, manifestSource, source };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Each test drives real `git` processes against a local bare remote: init,
|
||||||
|
// pull --rebase, ls-files --stage, push and rev-parse. That is deliberately
|
||||||
|
// real work, so the cost is process spawns competing with every other Vitest
|
||||||
|
// worker for CPU. On CI these land at 23-30s each, which is why the default
|
||||||
|
// 10s and even a hand-picked 30s are too tight; the first case measures two
|
||||||
|
// publications to prove identical data does not create a second commit.
|
||||||
|
// Keep the override well clear of a genuine hang.
|
||||||
|
const GIT_PUBLICATION_TIMEOUT = 120_000;
|
||||||
|
|
||||||
describe("catalog release Git publication", () => {
|
describe("catalog release Git publication", () => {
|
||||||
it("publishes exact files and does not create another commit for identical data", async () => {
|
it("publishes exact files and does not create another commit for identical data", async () => {
|
||||||
const { options, git } = await fixture();
|
const { options, git } = await fixture();
|
||||||
@@ -66,7 +75,7 @@ describe("catalog release Git publication", () => {
|
|||||||
"utf8",
|
"utf8",
|
||||||
),
|
),
|
||||||
).toBe("asset\r\n");
|
).toBe("asset\r\n");
|
||||||
}, 30_000);
|
}, GIT_PUBLICATION_TIMEOUT);
|
||||||
it("rejects a snapshot changed after manifest creation and restores a clean checkout", async () => {
|
it("rejects a snapshot changed after manifest creation and restores a clean checkout", async () => {
|
||||||
const { options, source, git } = await fixture();
|
const { options, source, git } = await fixture();
|
||||||
const head = git("rev-parse", "HEAD");
|
const head = git("rev-parse", "HEAD");
|
||||||
@@ -76,7 +85,7 @@ describe("catalog release Git publication", () => {
|
|||||||
);
|
);
|
||||||
expect(git("rev-parse", "HEAD")).toBe(head);
|
expect(git("rev-parse", "HEAD")).toBe(head);
|
||||||
expect(git("status", "--porcelain")).toBe("");
|
expect(git("status", "--porcelain")).toBe("");
|
||||||
}, 30_000);
|
}, GIT_PUBLICATION_TIMEOUT);
|
||||||
it("rejects Git newline normalization before creating a commit", async () => {
|
it("rejects Git newline normalization before creating a commit", async () => {
|
||||||
const { options, git } = await fixture();
|
const { options, git } = await fixture();
|
||||||
await writeFile(
|
await writeFile(
|
||||||
@@ -92,5 +101,5 @@ describe("catalog release Git publication", () => {
|
|||||||
);
|
);
|
||||||
expect(git("rev-parse", "HEAD")).toBe(head);
|
expect(git("rev-parse", "HEAD")).toBe(head);
|
||||||
expect(git("status", "--porcelain")).toBe("");
|
expect(git("status", "--porcelain")).toBe("");
|
||||||
}, 30_000);
|
}, GIT_PUBLICATION_TIMEOUT);
|
||||||
});
|
});
|
||||||
Reference in new issue
Block a user