Skip to content
This repository was archived by the owner on Nov 8, 2024. It is now read-only.

Commit 5b3f9ea

Browse files
committed
fix(oas3): handle YAML errors while scanning for next token
1 parent 4139afa commit 5b3f9ea

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

packages/fury-adapter-oas3-parser/lib/parser/parseYAML.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,15 @@ function parse(source, context) {
110110
`YAML Syntax: ${error.context}`,
111111
{ classes: ['error'] }
112112
);
113+
114+
const marker = error.context_mark || error.problem_mark;
113115
copySourceMap(
114-
error.context_mark,
115-
error.context_mark,
116+
marker,
117+
marker,
116118
annotation,
117119
namespace
118120
);
121+
119122
parseResult.push(annotation);
120123
return parseResult;
121124
}

packages/fury-adapter-oas3-parser/test/unit/parser/parseYAML-test.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,24 @@ describe('#parseYAML', () => {
1313
context = new Context(namespace, { generateSourceMap: true });
1414
});
1515

16-
it('fails to parse an OAS3 document with invalid YAML', () => {
17-
const parseResult = parseYAML('{}{}', context);
16+
describe('error handling', () => {
17+
it('fails to parse an OAS3 document with invalid YAML', () => {
18+
const parseResult = parseYAML('{}{}', context);
1819

19-
expect(parseResult).to.be.instanceof(namespace.elements.ParseResult);
20-
expect(parseResult.errors.length).to.equal(1);
20+
expect(parseResult).to.be.instanceof(namespace.elements.ParseResult);
21+
expect(parseResult.errors.length).to.equal(1);
22+
23+
expect(parseResult).contain.error("YAML Syntax: expected '<document start>', but found {").with.sourceMap([[2, 0]]);
24+
});
25+
26+
it('fails to parse an OAS3 document while scanning for next token', () => {
27+
const parseResult = parseYAML('openapi: 3.0.0\t', context);
2128

22-
expect(parseResult).contain.error("YAML Syntax: expected '<document start>', but found {").with.sourceMap([[2, 0]]);
29+
expect(parseResult).to.be.instanceof(namespace.elements.ParseResult);
30+
expect(parseResult.errors.length).to.equal(1);
31+
32+
expect(parseResult).contain.error('YAML Syntax: while scanning for the next token').with.sourceMap([[14, 0]]);
33+
});
2334
});
2435

2536
it('can parse a string into a string element', () => {

0 commit comments

Comments
 (0)