Skip to content

Commit a55d08a

Browse files
committed
Preserve YAML comments on github-script uses lines
1 parent 42b0803 commit a55d08a

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

language/syntaxes/github-script-embedded.tmLanguage.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"patterns": [
77
{
88
"name": "meta.github-actions.github-script.context",
9-
"begin": "^(\\s*(?:-\\s+)?)(uses)(\\s*:\\s*)((?:\\\"actions\\/github-script(?:\\@[A-Za-z0-9._-]+)?\\\")|(?:'actions\\/github-script(?:\\@[A-Za-z0-9._-]+)?')|(?:actions\\/github-script(?:\\@[A-Za-z0-9._-]+)?))(\\s*(?:#.*)?)$",
9+
"begin": "^(\\s*(?:-\\s+)?)(uses)(\\s*:\\s*)((?:\\\"actions\\/github-script(?:\\@[A-Za-z0-9._-]+)?\\\")|(?:'actions\\/github-script(?:\\@[A-Za-z0-9._-]+)?')|(?:actions\\/github-script(?:\\@[A-Za-z0-9._-]+)?))(?=\\s*(?:#.*)?$)",
1010
"beginCaptures": {
1111
"2": {
1212
"name": "entity.name.tag.yaml"

src/workflow/syntax/syntax-embeddings.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,18 +55,29 @@ describe("workflow syntax embedding grammars", () => {
5555
it("supports comments on github-script uses/script headers for quoted and unquoted uses", () => {
5656
const grammar = readJson<{patterns: [GrammarRule]}>("language/syntaxes/github-script-embedded.tmLanguage.json");
5757
const fixture = readFixture("src/workflow/syntax/fixtures/github-script-comments.yml");
58+
const outerBegin = new RegExp(grammar.patterns[0].begin);
5859

5960
const result = analyzeSingleOuterEmbeddedBlockFixture(fixture, grammar, "meta.embedded.block.javascript", line =>
6061
/uses\s*:\s*["']?actions\/github-script\b/.test(line)
6162
);
6263
const lines = fixture.split(/\r?\n/);
64+
const unquotedUsesLine = lines.find(line => line.includes("uses: actions/github-script@v8"));
65+
const quotedUsesLine = lines.find(line => line.includes('uses: "actions/github-script@v8"'));
66+
const unquotedUsesMatch = unquotedUsesLine ? outerBegin.exec(unquotedUsesLine) : null;
67+
const quotedUsesMatch = quotedUsesLine ? outerBegin.exec(quotedUsesLine) : null;
6368

6469
expect(result.outerStartLines).toHaveLength(2);
6570
expect(result.embeddedHeaderLines).toHaveLength(2);
6671
expect(lines[result.outerStartLines[0] - 1]).toContain("uses: actions/github-script@v8");
6772
expect(lines[result.outerStartLines[0] - 1]).toContain("# unquoted uses comment");
6873
expect(lines[result.outerStartLines[1] - 1]).toContain('uses: "actions/github-script@v8"');
6974
expect(lines[result.outerStartLines[1] - 1]).toContain("# quoted uses comment");
75+
expect(unquotedUsesLine).toBeDefined();
76+
expect(quotedUsesLine).toBeDefined();
77+
expect(unquotedUsesMatch).not.toBeNull();
78+
expect(quotedUsesMatch).not.toBeNull();
79+
expect(unquotedUsesMatch![0]).toBe(" - uses: actions/github-script@v8");
80+
expect(quotedUsesMatch![0]).toBe(' - uses: "actions/github-script@v8"');
7081
expect(lines[result.embeddedHeaderLines[0] - 1]).toContain("# comment on script header (unquoted uses)");
7182
expect(lines[result.embeddedHeaderLines[1] - 1]).toContain("# comment on script header (quoted uses)");
7283

0 commit comments

Comments
 (0)