Fix caching for invalid YAML files

This commit is contained in:
Josh Gross
2023-03-14 11:43:28 -04:00
parent 16fc6c80dd
commit 2eb633fdf5
2 changed files with 40 additions and 7 deletions
+5 -7
View File
@@ -20,14 +20,12 @@ export function clearCache() {
}
export function fetchOrParseWorkflow(file: File, uri: string): ParseWorkflowResult | undefined {
let result = parsedWorkflowCache.get(uri);
if (!result?.value) {
result = parseWorkflow(file, nullTrace);
if (!result.value) {
return undefined;
}
parsedWorkflowCache.set(uri, result);
const cachedResult = parsedWorkflowCache.get(uri);
if (cachedResult) {
return cachedResult;
}
const result = parseWorkflow(file, nullTrace);
parsedWorkflowCache.set(uri, result);
return result;
}
+35
View File
@@ -195,6 +195,41 @@ jobs:
} as Diagnostic);
});
it("invalid YAML", async () => {
// This YAML has some mismatched single-quotes, which causes the string to be terminated early
// within the fromJSON() expression.
// Using double-quotes would make it valid:
// "Run a \${{ inputs.test }} one-line script \${{ fromJSON('test') == inputs.name }}"
const workflow = `
on: push
jobs:
build:
runs-on: ubuntu-latest
environment: TEST
steps:
- name: 'Run a \${{ inputs.test }} one-line script \${{ fromJSON('test') == inputs.name }}'
run: echo
`;
const result = await validate(createDocument("wf.yaml", workflow), {valueProviderConfig: defaultValueProviders});
expect(result).toEqual([
{
message:
"Unexpected scalar at node end at line 8, column 73:\n\n…un a ${{ inputs.test }} one-line script ${{ fromJSON('test') == inputs.name }}'\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n",
range: {
start: {
line: 7,
character: 72
},
end: {
line: 7,
character: 97
}
}
}
]);
});
describe("value provider case sensitivity", () => {
it("value with a different case and case sensitive provider", async () => {
const workflow = `