Validate context expressions
This commit is contained in:
@@ -56,6 +56,25 @@ describe("validation visitor", () => {
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("invalid context access as index", () => {
|
||||||
|
expect(useVisitor("github[github.foo]", ["github"])).toEqual([
|
||||||
|
{
|
||||||
|
message: "Context access might be invalid: foo",
|
||||||
|
range: {
|
||||||
|
end: {
|
||||||
|
column: 17,
|
||||||
|
line: 0
|
||||||
|
},
|
||||||
|
start: {
|
||||||
|
column: 7,
|
||||||
|
line: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
severity: "warning"
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
it("invalid nested context access", () => {
|
it("invalid nested context access", () => {
|
||||||
expect(useVisitor("github.repo.name", ["github"])).toEqual([
|
expect(useVisitor("github.repo.name", ["github"])).toEqual([
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import {DescriptionDictionary} from "@actions/expressions/.";
|
import {DescriptionDictionary} from "@actions/expressions";
|
||||||
import {
|
import {
|
||||||
Binary,
|
Binary,
|
||||||
ContextAccess,
|
ContextAccess,
|
||||||
@@ -76,7 +76,8 @@ export class ValidationVisitor implements ExprVisitor<void> {
|
|||||||
while (i) {
|
while (i) {
|
||||||
if (i instanceof IndexAccess) {
|
if (i instanceof IndexAccess) {
|
||||||
if (!(i.index instanceof Literal)) {
|
if (!(i.index instanceof Literal)) {
|
||||||
// Cannot validate
|
// Not a literal, validate independently
|
||||||
|
this._validate(i.index);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
s.push(i.index.literal);
|
s.push(i.index.literal);
|
||||||
|
|||||||
Reference in New Issue
Block a user