diff --git a/packages/cli/src/__tests__/e2e/test.spec.ts b/packages/cli/src/__tests__/e2e/test.spec.ts index c136820180..0beaa18232 100644 --- a/packages/cli/src/__tests__/e2e/test.spec.ts +++ b/packages/cli/src/__tests__/e2e/test.spec.ts @@ -328,4 +328,18 @@ describe("e2e tests for test command", () => { expect(output[0].status).toBe("FAILED"); expect(output[0].validation.status).toBe("SUCCEED"); }) + + it("Should close with exit code 1 if any test fails", async () => { + const testCaseDir = getTestCaseDir(12); + const { exitCode, stdout } = await Commands.test(undefined, { + cwd: testCaseDir, + cli: polywrapCli, + }); + + expect(exitCode).toEqual(1); + + const output = parseOutput(stdout); + expect(output.find(v => v.id === "bad.0")?.status).toBe("FAILED"); + expect(output.find(v => v.id === "good.0")?.status).toBe("SUCCEED"); + }) }); diff --git a/packages/cli/src/commands/test.ts b/packages/cli/src/commands/test.ts index c603713b3f..8d90663891 100644 --- a/packages/cli/src/commands/test.ts +++ b/packages/cli/src/commands/test.ts @@ -150,6 +150,7 @@ const _run = async (options: Required) => { if (!quiet) { printJobOutput(output); } + workflowOutput.push(output); }; @@ -182,4 +183,13 @@ const _run = async (options: Required) => { ); } } + + const isFailed = (val: WorkflowOutput) => + val.status === Status.FAILED && + (val.validation.status === Status.SKIPPED || + val.validation.status === Status.FAILED); + + if (workflowOutput.some(isFailed)) { + process.exit(1); + } }; diff --git a/packages/test-cases/cases/cli/test/013-uri-error/polywrap.test.yaml b/packages/test-cases/cases/cli/test/013-uri-error/polywrap.test.yaml new file mode 100644 index 0000000000..6a330d2656 --- /dev/null +++ b/packages/test-cases/cases/cli/test/013-uri-error/polywrap.test.yaml @@ -0,0 +1,17 @@ +name: run-test-wrapper +format: 0.2.0 +jobs: + bad: + steps: + - uri: fs/../run-test-wrapper/buildd + method: add + args: + x: 1 + y: 1 + good: + steps: + - uri: fs/../run-test-wrapper/build + method: add + args: + x: 1 + y: 1 \ No newline at end of file