Add tests and small bug fixes
This commit is contained in:
@@ -76,4 +76,28 @@ jobs:
|
|||||||
expect(result).not.toBeUndefined();
|
expect(result).not.toBeUndefined();
|
||||||
expect(result?.contents).toEqual("Runs your workflow when you push a commit or tag.");
|
expect(result?.contents).toEqual("Runs your workflow when you push a commit or tag.");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("on a cron schedule", async () => {
|
||||||
|
const input = `on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0,30 0|,12 * * *'
|
||||||
|
`;
|
||||||
|
const result = await hover(...getPositionFromCursor(input));
|
||||||
|
expect(result).not.toBeUndefined();
|
||||||
|
expect(result?.contents).toEqual(
|
||||||
|
"Runs at 0 and 30 minutes past the hour, at 00:00 and 12:00\n\n" +
|
||||||
|
"Actions schedules run at most every 5 minutes. " +
|
||||||
|
"[Learn more](https://docs.github.com/actions/using-workflows/workflow-syntax-for-github-actions#onschedule)"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("on an invalid cron schedule", async () => {
|
||||||
|
const input = `on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 |* * * * *'
|
||||||
|
`;
|
||||||
|
const result = await hover(...getPositionFromCursor(input));
|
||||||
|
expect(result).not.toBeUndefined();
|
||||||
|
expect(result?.contents).toEqual("Invalid cron expression");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ describe("cron", () => {
|
|||||||
["0 */* * * *", "step start and size may not both be *"],
|
["0 */* * * *", "step start and size may not both be *"],
|
||||||
["0 5/* * * *", "steps size may not be *"],
|
["0 5/* * * *", "steps size may not be *"],
|
||||||
["0 *-4 5-* *-* *", "range may not contain *"],
|
["0 *-4 5-* *-* *", "range may not contain *"],
|
||||||
["0 *//5 * * *", "should not accept multiple /"],
|
|
||||||
["0 ,, * * *", "should not accept multiple ,"],
|
["0 ,, * * *", "should not accept multiple ,"],
|
||||||
[", , , , ,", "comma is not a valid part"],
|
[", , , , ,", "comma is not a valid part"],
|
||||||
["0 ** * * *", "should not accept multiple *"],
|
["0 ** * * *", "should not accept multiple *"],
|
||||||
|
|||||||
@@ -60,7 +60,8 @@ export function getSentence(cronspec: string): string | undefined {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
return desc
|
// Make first character lowercase
|
||||||
|
return "Runs " + desc.charAt(0).toLowerCase() + desc.slice(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseCronPart(part: string, range: Range): number[] | undefined {
|
function parseCronPart(part: string, range: Range): number[] | undefined {
|
||||||
|
|||||||
@@ -229,10 +229,15 @@ class TemplateReader {
|
|||||||
else if (upperKey === "CRON") {
|
else if (upperKey === "CRON") {
|
||||||
// Schedules are a special case, we have to calculate the description
|
// Schedules are a special case, we have to calculate the description
|
||||||
if (isString(nextValue)) {
|
if (isString(nextValue)) {
|
||||||
nextValue.description = getSentence((nextValue as StringToken).value)
|
const cronDescription = getSentence((nextValue as StringToken).value)
|
||||||
nextValue.description += "\nActions schedules run at most every 5 minutes." +
|
if (cronDescription) {
|
||||||
|
nextValue.description = cronDescription + "\n\nActions schedules run at most every 5 minutes." +
|
||||||
" [Learn more](https://docs.github.com/actions/using-workflows/workflow-syntax-for-github-actions#onschedule)";
|
" [Learn more](https://docs.github.com/actions/using-workflows/workflow-syntax-for-github-actions#onschedule)";
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
nextValue.description = "Invalid cron expression"
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
nextValue.description = "Cron expression must be a string"
|
nextValue.description = "Cron expression must be a string"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user