Merge validation code into a single traversal

This commit is contained in:
Christopher Schleiden
2022-11-28 16:04:53 -08:00
parent a32295a09a
commit a495432d40
5 changed files with 151 additions and 89 deletions
+66 -1
View File
@@ -1,6 +1,7 @@
import {Diagnostic} from "vscode-languageserver-types";
import {Diagnostic, DiagnosticSeverity} from "vscode-languageserver-types";
import {createDocument} from "./test-utils/document";
import {validate} from "./validate";
import {defaultValueProviders} from "./value-providers/default";
describe("validation", () => {
it("valid workflow", async () => {
@@ -57,4 +58,68 @@ jobs:
}
} as Diagnostic);
});
it("single value not returned by value provider", async () => {
const result = await validate(
createDocument(
"wf.yaml",
`on: push
jobs:
build:
runs-on: does-not-exist
steps:
- run: echo`
),
defaultValueProviders
);
expect(result.length).toBe(1);
expect(result[0]).toEqual({
message: "Value 'does-not-exist' is not valid",
severity: DiagnosticSeverity.Error,
range: {
end: {
character: 27,
line: 3
},
start: {
character: 13,
line: 3
}
}
} as Diagnostic);
});
it("value in sequence not returned by value provider", async () => {
const result = await validate(
createDocument(
"wf.yaml",
`on: push
jobs:
build:
runs-on:
- ubuntu-latest
- does-not-exist
steps:
- run: echo`
),
defaultValueProviders
);
expect(result.length).toBe(1);
expect(result[0]).toEqual({
message: "Value 'does-not-exist' is not valid",
severity: DiagnosticSeverity.Error,
range: {
end: {
character: 20,
line: 5
},
start: {
character: 6,
line: 5
}
}
} as Diagnostic);
});
});