Skip to content

Commit 77dfe3b

Browse files
authored
fix(cli): output to stdout not working with multiple output formatters (#2044)
1 parent 1527e24 commit 77dfe3b

File tree

4 files changed

+47
-119
lines changed

4 files changed

+47
-119
lines changed

packages/cli/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@
5454
"strip-ansi": "6.0",
5555
"text-table": "0.2",
5656
"tslib": "^2.3.0",
57-
"yargs": "17.2.1"
57+
"yargs": "17.3.1"
5858
},
5959
"devDependencies": {
6060
"@types/xml2js": "^0.4.9",
61-
"@types/yargs": "^17.0.5",
61+
"@types/yargs": "^17.0.8",
6262
"copyfiles": "^2.4.1",
6363
"jest-when": "^3.4.2",
6464
"nock": "^13.1.3",

packages/cli/src/commands/__tests__/lint.test.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,13 @@ jest.mock('../../services/linter');
1212

1313
function run(command: string) {
1414
const parser = yargs.command(lintCommand).help();
15-
return new Promise(done => {
15+
return new Promise((resolve, reject) => {
1616
parser.parse(command, (err: Error, argv: unknown, output: string) => {
17-
done(output);
17+
if (err) {
18+
reject(`${err.message}\n${output}`);
19+
} else {
20+
resolve(output);
21+
}
1822
});
1923
});
2024
}
@@ -60,10 +64,9 @@ describe('lint', () => {
6064
process.stdin.isTTY = isTTY;
6165
});
6266

63-
it('shows help when no document and no STDIN are present', async () => {
67+
it('shows help when no document and no STDIN are present', () => {
6468
process.stdin.isTTY = true;
65-
const output = await run('lint');
66-
expect(output).toContain('documents Location of JSON/YAML documents');
69+
return expect(run('lint')).rejects.toContain('documents Location of JSON/YAML documents');
6770
});
6871

6972
describe('when STDIN is present', () => {
@@ -204,7 +207,7 @@ describe('lint', () => {
204207
});
205208

206209
it('shows help if unknown format is passed', () => {
207-
return expect(run('lint -f foo ./__fixtures__/empty-oas2-document.json')).resolves.toContain(
210+
return expect(run('lint -f foo ./__fixtures__/empty-oas2-document.json')).rejects.toContain(
208211
'documents Location of JSON/YAML documents. Can be either a file, a glob or',
209212
);
210213
});

packages/cli/src/commands/lint.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ const lintCommand: CommandModule = {
4343
argv.output = { [formats[0]]: argv.output };
4444
} else {
4545
const output = argv.output as Dictionary<unknown>;
46-
if (Object.keys(output).length + 1 >= formats.length) {
46+
if (Object.keys(output).length >= formats.length) {
4747
return;
4848
}
4949

yarn.lock

Lines changed: 35 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -1661,19 +1661,6 @@ __metadata:
16611661
languageName: node
16621662
linkType: hard
16631663

1664-
"@jest/types@npm:^27.2.5":
1665-
version: 27.2.5
1666-
resolution: "@jest/types@npm:27.2.5"
1667-
dependencies:
1668-
"@types/istanbul-lib-coverage": ^2.0.0
1669-
"@types/istanbul-reports": ^3.0.0
1670-
"@types/node": "*"
1671-
"@types/yargs": ^16.0.0
1672-
chalk: ^4.0.0
1673-
checksum: 322603c24354a5333b5b7a670464422a46e0244a5a96a35552a7018eb4ac2e84c3b7657336b0ea6aa114963f9b6d0da8b8f6f963cb044fea9e7bc04d464b0ab1
1674-
languageName: node
1675-
linkType: hard
1676-
16771664
"@jest/types@npm:^27.4.2":
16781665
version: 27.4.2
16791666
resolution: "@jest/types@npm:27.4.2"
@@ -1987,7 +1974,7 @@ __metadata:
19871974
"@stoplight/spectral-runtime": ^1.1.0
19881975
"@stoplight/types": 12.3.0
19891976
"@types/xml2js": ^0.4.9
1990-
"@types/yargs": ^17.0.5
1977+
"@types/yargs": ^17.0.8
19911978
chalk: 4.1.2
19921979
cliui: 7.0.4
19931980
copyfiles: ^2.4.1
@@ -2004,7 +1991,7 @@ __metadata:
20041991
text-table: 0.2
20051992
tslib: ^2.3.0
20061993
xml2js: ^0.4.23
2007-
yargs: 17.2.1
1994+
yargs: 17.3.1
20081995
bin:
20091996
spectral: ./dist/index.js
20101997
languageName: unknown
@@ -2383,17 +2370,7 @@ __metadata:
23832370
languageName: node
23842371
linkType: hard
23852372

2386-
"@types/jest@npm:*":
2387-
version: 27.0.2
2388-
resolution: "@types/jest@npm:27.0.2"
2389-
dependencies:
2390-
jest-diff: ^27.0.0
2391-
pretty-format: ^27.0.0
2392-
checksum: 814ad5f5d2f277849f47e52906da4b745758e555630fc8cb46a071bde648eefeffb1b35710c530a8cea7fc4ea7c1d813812c120484bf7902ab6c5e473cdd49c9
2393-
languageName: node
2394-
linkType: hard
2395-
2396-
"@types/jest@npm:^27.0.3":
2373+
"@types/jest@npm:*, @types/jest@npm:^27.0.3":
23972374
version: 27.0.3
23982375
resolution: "@types/jest@npm:27.0.3"
23992376
dependencies:
@@ -2553,12 +2530,12 @@ __metadata:
25532530
languageName: node
25542531
linkType: hard
25552532

2556-
"@types/yargs@npm:^17.0.5":
2557-
version: 17.0.5
2558-
resolution: "@types/yargs@npm:17.0.5"
2533+
"@types/yargs@npm:^17.0.8":
2534+
version: 17.0.8
2535+
resolution: "@types/yargs@npm:17.0.8"
25592536
dependencies:
25602537
"@types/yargs-parser": "*"
2561-
checksum: 2be02640c84471c66aec58cfd415432fab0973283909765aa3becbdb76b5874d4770fe7f376e77b98833d5cc9d9bc258a905adce68a0baec13d430c866fce3b5
2538+
checksum: 63d06700ffbed745f00d7994eb92416649c8a3ead22f26446979d383f3af52fa9400bb185268f3a44a2348749098ffe33a8185ca676b77bc3206c63b8b73fd01
25622539
languageName: node
25632540
linkType: hard
25642541

@@ -2877,7 +2854,7 @@ __metadata:
28772854
languageName: node
28782855
linkType: hard
28792856

2880-
"ansi-regex@npm:^5.0.0, ansi-regex@npm:^5.0.1":
2857+
"ansi-regex@npm:^5.0.1":
28812858
version: 5.0.1
28822859
resolution: "ansi-regex@npm:5.0.1"
28832860
checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b
@@ -4336,13 +4313,6 @@ __metadata:
43364313
languageName: node
43374314
linkType: hard
43384315

4339-
"diff-sequences@npm:^27.0.6":
4340-
version: 27.0.6
4341-
resolution: "diff-sequences@npm:27.0.6"
4342-
checksum: f35ad024d426cd1026d6c98a1f604c41966a0e89712b05a38812fc11e645ff0e915ec17bc8f4b6910fed6df0b309b255aa6c7c77728be452c6dbbfa30aa2067b
4343-
languageName: node
4344-
linkType: hard
4345-
43464316
"diff-sequences@npm:^27.4.0":
43474317
version: 27.4.0
43484318
resolution: "diff-sequences@npm:27.4.0"
@@ -6503,19 +6473,7 @@ __metadata:
65036473
languageName: node
65046474
linkType: hard
65056475

6506-
"jest-diff@npm:^27.0.0":
6507-
version: 27.3.1
6508-
resolution: "jest-diff@npm:27.3.1"
6509-
dependencies:
6510-
chalk: ^4.0.0
6511-
diff-sequences: ^27.0.6
6512-
jest-get-type: ^27.3.1
6513-
pretty-format: ^27.3.1
6514-
checksum: 49231a4ac4bed1cce8f5135db2a26a83673d5cbe5716bca29900a45ae0ddf237099d9091acac436b9c60ab933b0e7ca086ce8cb71f44411b572b69adbe96128d
6515-
languageName: node
6516-
linkType: hard
6517-
6518-
"jest-diff@npm:^27.4.2":
6476+
"jest-diff@npm:^27.0.0, jest-diff@npm:^27.4.2":
65196477
version: 27.4.2
65206478
resolution: "jest-diff@npm:27.4.2"
65216479
dependencies:
@@ -6578,13 +6536,6 @@ __metadata:
65786536
languageName: node
65796537
linkType: hard
65806538

6581-
"jest-get-type@npm:^27.3.1":
6582-
version: 27.3.1
6583-
resolution: "jest-get-type@npm:27.3.1"
6584-
checksum: b0b8db1d770c6332b4189bbf4073184489acbb1095410cf53add033daf911577ee6bd1c4f8d747dd2f3d63de42f7eb15c5527fc7288a2855a046f4a8957cd902
6585-
languageName: node
6586-
linkType: hard
6587-
65886539
"jest-get-type@npm:^27.4.0":
65896540
version: 27.4.0
65906541
resolution: "jest-get-type@npm:27.4.0"
@@ -6845,21 +6796,7 @@ __metadata:
68456796
languageName: node
68466797
linkType: hard
68476798

6848-
"jest-util@npm:^27.0.0":
6849-
version: 27.3.1
6850-
resolution: "jest-util@npm:27.3.1"
6851-
dependencies:
6852-
"@jest/types": ^27.2.5
6853-
"@types/node": "*"
6854-
chalk: ^4.0.0
6855-
ci-info: ^3.2.0
6856-
graceful-fs: ^4.2.4
6857-
picomatch: ^2.2.3
6858-
checksum: 6958d418a867e537a7dc377558422879dabb61437eecc28a2fac44a61c14dc58dcf4514fb5bdc1ddaf19c414040243b2e9e740a046190ca7c9df294a3c911dbe
6859-
languageName: node
6860-
linkType: hard
6861-
6862-
"jest-util@npm:^27.4.2":
6799+
"jest-util@npm:^27.0.0, jest-util@npm:^27.4.2":
68636800
version: 27.4.2
68646801
resolution: "jest-util@npm:27.4.2"
68656802
dependencies:
@@ -8637,20 +8574,13 @@ __metadata:
86378574
languageName: node
86388575
linkType: hard
86398576

8640-
"pony-cause@npm:1.1.1":
8577+
"pony-cause@npm:1.1.1, pony-cause@npm:^1.0.0":
86418578
version: 1.1.1
86428579
resolution: "pony-cause@npm:1.1.1"
86438580
checksum: 5ff8878b808be48db801d52246a99d7e4789e52d20575ba504ede30c818fd85d38a033915e02c15fa9b6dce72448836dc1a47094acf8f1c21c4f04a4603b0cfb
86448581
languageName: node
86458582
linkType: hard
86468583

8647-
"pony-cause@npm:^1.0.0":
8648-
version: 1.0.0
8649-
resolution: "pony-cause@npm:1.0.0"
8650-
checksum: f13e7849d075d2f7d70be2397262b3f084951b5e331126cc6a28ee4983ddfb9b47f7e41abc728a9290c45858900e740332d031fd5dbf7dcc3f3507bb5dfd29d7
8651-
languageName: node
8652-
linkType: hard
8653-
86548584
"prebuild-install@npm:6.0.1":
86558585
version: 6.0.1
86568586
resolution: "prebuild-install@npm:6.0.1"
@@ -8708,19 +8638,7 @@ __metadata:
87088638
languageName: node
87098639
linkType: hard
87108640

8711-
"pretty-format@npm:^27.0.0, pretty-format@npm:^27.3.1":
8712-
version: 27.3.1
8713-
resolution: "pretty-format@npm:27.3.1"
8714-
dependencies:
8715-
"@jest/types": ^27.2.5
8716-
ansi-regex: ^5.0.1
8717-
ansi-styles: ^5.0.0
8718-
react-is: ^17.0.1
8719-
checksum: 2979eae85a4f7ba1c3946faa8f5c6497cc80dc64ba499ccd5fdada267f82dc664f315a4c1cdd4c0b4b97edbae399a7bf0a957cc1b87feb91cd95f1e436834fed
8720-
languageName: node
8721-
linkType: hard
8722-
8723-
"pretty-format@npm:^27.4.2":
8641+
"pretty-format@npm:^27.0.0, pretty-format@npm:^27.4.2":
87248642
version: 27.4.2
87258643
resolution: "pretty-format@npm:27.4.2"
87268644
dependencies:
@@ -9816,14 +9734,14 @@ __metadata:
98169734
languageName: node
98179735
linkType: hard
98189736

9819-
"string-width@npm:^4.1.0, string-width@npm:^4.2.0":
9820-
version: 4.2.0
9821-
resolution: "string-width@npm:4.2.0"
9737+
"string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3":
9738+
version: 4.2.3
9739+
resolution: "string-width@npm:4.2.3"
98229740
dependencies:
98239741
emoji-regex: ^8.0.0
98249742
is-fullwidth-code-point: ^3.0.0
9825-
strip-ansi: ^6.0.0
9826-
checksum: ee2c68df9a3ce4256565d2bdc8490f5706f195f88e799d3d425889264d3eff3d7984fe8b38dfc983dac948e03d8cdc737294b1c81f1528c37c9935d86b67593d
9743+
strip-ansi: ^6.0.1
9744+
checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb
98279745
languageName: node
98289746
linkType: hard
98299747

@@ -9883,12 +9801,12 @@ __metadata:
98839801
languageName: node
98849802
linkType: hard
98859803

9886-
"strip-ansi@npm:6.0, strip-ansi@npm:^6.0.0":
9887-
version: 6.0.0
9888-
resolution: "strip-ansi@npm:6.0.0"
9804+
"strip-ansi@npm:6.0, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
9805+
version: 6.0.1
9806+
resolution: "strip-ansi@npm:6.0.1"
98899807
dependencies:
9890-
ansi-regex: ^5.0.0
9891-
checksum: 04c3239ede44c4d195b0e66c0ad58b932f08bec7d05290416d361ff908ad282ecdaf5d9731e322c84f151d427436bde01f05b7422c3ec26dd927586736b0e5d0
9808+
ansi-regex: ^5.0.1
9809+
checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c
98929810
languageName: node
98939811
linkType: hard
98949812

@@ -11063,18 +10981,25 @@ __metadata:
1106310981
languageName: node
1106410982
linkType: hard
1106510983

11066-
"yargs@npm:17.2.1, yargs@npm:^17.0.0":
11067-
version: 17.2.1
11068-
resolution: "yargs@npm:17.2.1"
10984+
"yargs-parser@npm:^21.0.0":
10985+
version: 21.0.0
10986+
resolution: "yargs-parser@npm:21.0.0"
10987+
checksum: 1e205fca1cb7a36a1585e2b94a64e641c12741b53627d338e12747f4dca3c3610cdd9bb235040621120548dd74c3ef03a8168d52a1eabfedccbe4a62462b6731
10988+
languageName: node
10989+
linkType: hard
10990+
10991+
"yargs@npm:17.3.1, yargs@npm:^17.0.0":
10992+
version: 17.3.1
10993+
resolution: "yargs@npm:17.3.1"
1106910994
dependencies:
1107010995
cliui: ^7.0.2
1107110996
escalade: ^3.1.1
1107210997
get-caller-file: ^2.0.5
1107310998
require-directory: ^2.1.1
11074-
string-width: ^4.2.0
10999+
string-width: ^4.2.3
1107511000
y18n: ^5.0.5
11076-
yargs-parser: ^20.2.2
11077-
checksum: 451aac46f82da776f436018feed0244bc0e7b4355f7e397bcb53d34c691b177c0d71db3dda9653760e1bc240254d8b763a252ff918ef9e235a8d202e2909c4eb
11001+
yargs-parser: ^21.0.0
11002+
checksum: 64fc2e32c56739f1d14d2d24acd17a6944c3c8e3e3558f09fc1953ac112e868cc16013d282886b9d5be22187f8b9ed4f60741a6b1011f595ce2718805a656852
1107811003
languageName: node
1107911004
linkType: hard
1108011005

0 commit comments

Comments
 (0)