Skip to content

Commit

Permalink
fix(yaml): fix merge (<<) type handling in parse() (#5185)
Browse files Browse the repository at this point in the history
  • Loading branch information
kt3k committed Jun 28, 2024
1 parent 7af9f89 commit 23e55f7
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
2 changes: 1 addition & 1 deletion yaml/_loader/loader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ function mergeMappings(
);
}

for (const key in Object.keys(source)) {
for (const key of Object.keys(source)) {
if (!hasOwn(destination, key)) {
Object.defineProperty(destination, key, {
value: source[key],
Expand Down
17 changes: 17 additions & 0 deletions yaml/parse_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -448,3 +448,20 @@ Deno.test("parse() throws with invalid strings", () => {
'expected valid JSON character at line 1, column 3:\n "\b"\n ^',
);
});

Deno.test("parse() handles merge (<<) types", () => {
assertEquals(
parse(`<<: { a: 1, b: 2 }
c: 3`),
{ a: 1, b: 2, c: 3 },
);

assertThrows(
() =>
// number can't be used as merge value
parse(`<<: 1
c: 3`),
YamlError,
"cannot merge mappings; the provided source object is unacceptable at line 1, column 6:\n <<: 1\n ^",
);
});

0 comments on commit 23e55f7

Please sign in to comment.