From 26c879697e64944823b47d97a2376939b33a878a Mon Sep 17 00:00:00 2001 From: rbusche Date: Fri, 12 Jan 2024 22:27:36 +0100 Subject: [PATCH 1/2] Exit with 1 for failing validations --- src/commands/validate.ts | 5 ++++- test/integration/validate.test.ts | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/commands/validate.ts b/src/commands/validate.ts index 7254b52f4f5..71a1670a22d 100644 --- a/src/commands/validate.ts +++ b/src/commands/validate.ts @@ -29,6 +29,9 @@ export default class Validate extends Command { specWatcher({ spec: specFile, handler: this, handlerName: 'validate' }); } - await validate(this, specFile, flags); + const validationResult = await validate(this, specFile, flags); + if (validationResult == 'invalid') { + this.exit(1); + } } } diff --git a/test/integration/validate.test.ts b/test/integration/validate.test.ts index c0298279bc9..804fa5b1e36 100644 --- a/test/integration/validate.test.ts +++ b/test/integration/validate.test.ts @@ -117,7 +117,7 @@ describe('validate', () => { testHelper.setCurrentContext('home'); testHelper.deleteDummyContextFile(); }); - + test .stderr() .stdout() @@ -239,6 +239,7 @@ describe('validate', () => { .stderr() .stdout() .command(['validate', './test/fixtures/specification.yml', '--fail-severity=warn']) + .exit(1) .it('works with --fail-severity', (ctx, done) => { expect(ctx.stderr).to.include('\nFile ./test/fixtures/specification.yml and/or referenced documents have governance issues.\n\ntest/fixtures/specification.yml'); done(); From abaee3b755966ddf3dee5bc27a2335cfa2283f37 Mon Sep 17 00:00:00 2001 From: rbusche Date: Tue, 16 Jan 2024 18:36:57 +0100 Subject: [PATCH 2/2] Use process.exitCode --- src/commands/validate.ts | 4 ++-- test/integration/validate.test.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/commands/validate.ts b/src/commands/validate.ts index 71a1670a22d..c678b5f662c 100644 --- a/src/commands/validate.ts +++ b/src/commands/validate.ts @@ -30,8 +30,8 @@ export default class Validate extends Command { } const validationResult = await validate(this, specFile, flags); - if (validationResult == 'invalid') { - this.exit(1); + if (validationResult === 'invalid') { + process.exitCode = 1; } } } diff --git a/test/integration/validate.test.ts b/test/integration/validate.test.ts index 804fa5b1e36..d63921f4b6f 100644 --- a/test/integration/validate.test.ts +++ b/test/integration/validate.test.ts @@ -239,9 +239,9 @@ describe('validate', () => { .stderr() .stdout() .command(['validate', './test/fixtures/specification.yml', '--fail-severity=warn']) - .exit(1) .it('works with --fail-severity', (ctx, done) => { expect(ctx.stderr).to.include('\nFile ./test/fixtures/specification.yml and/or referenced documents have governance issues.\n\ntest/fixtures/specification.yml'); + expect(process.exitCode).to.equal(1); done(); }); });