revert MissingPushHook checks changes
This commit is contained in:
parent
f8707c9939
commit
c26fc558ba
6 changed files with 102 additions and 6 deletions
30
lib/workflow.js
generated
30
lib/workflow.js
generated
|
|
@ -34,6 +34,9 @@ const core = __importStar(require("@actions/core"));
|
||||||
const yaml = __importStar(require("js-yaml"));
|
const yaml = __importStar(require("js-yaml"));
|
||||||
const api = __importStar(require("./api-client"));
|
const api = __importStar(require("./api-client"));
|
||||||
const util_1 = require("./util");
|
const util_1 = require("./util");
|
||||||
|
function isObject(o) {
|
||||||
|
return o !== null && typeof o === "object";
|
||||||
|
}
|
||||||
const GLOB_PATTERN = new RegExp("(\\*\\*?)");
|
const GLOB_PATTERN = new RegExp("(\\*\\*?)");
|
||||||
function escapeRegExp(string) {
|
function escapeRegExp(string) {
|
||||||
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
|
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
|
||||||
|
|
@ -71,6 +74,7 @@ function toCodedErrors(errors) {
|
||||||
// code to send back via status report
|
// code to send back via status report
|
||||||
// message to add as a warning annotation to the run
|
// message to add as a warning annotation to the run
|
||||||
exports.WorkflowErrors = toCodedErrors({
|
exports.WorkflowErrors = toCodedErrors({
|
||||||
|
MissingPushHook: `Please specify an on.push hook.`,
|
||||||
CheckoutWrongHead: `git checkout HEAD^2 is no longer necessary. Please remove this step as Code Scanning recommends analyzing the merge commit for best results.`,
|
CheckoutWrongHead: `git checkout HEAD^2 is no longer necessary. Please remove this step as Code Scanning recommends analyzing the merge commit for best results.`,
|
||||||
});
|
});
|
||||||
function getWorkflowErrors(doc) {
|
function getWorkflowErrors(doc) {
|
||||||
|
|
@ -93,6 +97,32 @@ function getWorkflowErrors(doc) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let missingPush = false;
|
||||||
|
if (doc.on === undefined) {
|
||||||
|
// this is not a valid config
|
||||||
|
}
|
||||||
|
else if (typeof doc.on === "string") {
|
||||||
|
if (doc.on === "pull_request") {
|
||||||
|
missingPush = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (Array.isArray(doc.on)) {
|
||||||
|
const hasPush = doc.on.includes("push");
|
||||||
|
const hasPullRequest = doc.on.includes("pull_request");
|
||||||
|
if (hasPullRequest && !hasPush) {
|
||||||
|
missingPush = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (isObject(doc.on)) {
|
||||||
|
const hasPush = Object.prototype.hasOwnProperty.call(doc.on, "push");
|
||||||
|
const hasPullRequest = Object.prototype.hasOwnProperty.call(doc.on, "pull_request");
|
||||||
|
if (!hasPush && hasPullRequest) {
|
||||||
|
missingPush = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (missingPush) {
|
||||||
|
errors.push(exports.WorkflowErrors.MissingPushHook);
|
||||||
|
}
|
||||||
return errors;
|
return errors;
|
||||||
}
|
}
|
||||||
exports.getWorkflowErrors = getWorkflowErrors;
|
exports.getWorkflowErrors = getWorkflowErrors;
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
18
lib/workflow.test.js
generated
18
lib/workflow.test.js
generated
|
|
@ -42,6 +42,10 @@ function errorCodes(actual, expected) {
|
||||||
const errors = (0, workflow_1.getWorkflowErrors)({ on: ["push"] });
|
const errors = (0, workflow_1.getWorkflowErrors)({ on: ["push"] });
|
||||||
t.deepEqual(...errorCodes(errors, []));
|
t.deepEqual(...errorCodes(errors, []));
|
||||||
});
|
});
|
||||||
|
(0, ava_1.default)("getWorkflowErrors() when on.push is an array missing push", (t) => {
|
||||||
|
const errors = (0, workflow_1.getWorkflowErrors)({ on: ["pull_request"] });
|
||||||
|
t.deepEqual(...errorCodes(errors, [workflow_1.WorkflowErrors.MissingPushHook]));
|
||||||
|
});
|
||||||
(0, ava_1.default)("getWorkflowErrors() when on.push is valid", (t) => {
|
(0, ava_1.default)("getWorkflowErrors() when on.push is valid", (t) => {
|
||||||
const errors = (0, workflow_1.getWorkflowErrors)({
|
const errors = (0, workflow_1.getWorkflowErrors)({
|
||||||
on: ["push", "pull_request"],
|
on: ["push", "pull_request"],
|
||||||
|
|
@ -168,13 +172,23 @@ function errorCodes(actual, expected) {
|
||||||
const message = (0, workflow_1.formatWorkflowErrors)([workflow_1.WorkflowErrors.CheckoutWrongHead]);
|
const message = (0, workflow_1.formatWorkflowErrors)([workflow_1.WorkflowErrors.CheckoutWrongHead]);
|
||||||
t.true(message.startsWith("1 issue was detected with this workflow:"));
|
t.true(message.startsWith("1 issue was detected with this workflow:"));
|
||||||
});
|
});
|
||||||
|
(0, ava_1.default)("formatWorkflowErrors() when there are multiple errors", (t) => {
|
||||||
|
const message = (0, workflow_1.formatWorkflowErrors)([
|
||||||
|
workflow_1.WorkflowErrors.CheckoutWrongHead,
|
||||||
|
workflow_1.WorkflowErrors.MissingPushHook,
|
||||||
|
]);
|
||||||
|
t.true(message.startsWith("2 issues were detected with this workflow:"));
|
||||||
|
});
|
||||||
(0, ava_1.default)("formatWorkflowCause() with no errors", (t) => {
|
(0, ava_1.default)("formatWorkflowCause() with no errors", (t) => {
|
||||||
const message = (0, workflow_1.formatWorkflowCause)([]);
|
const message = (0, workflow_1.formatWorkflowCause)([]);
|
||||||
t.deepEqual(message, undefined);
|
t.deepEqual(message, undefined);
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("formatWorkflowCause()", (t) => {
|
(0, ava_1.default)("formatWorkflowCause()", (t) => {
|
||||||
const message = (0, workflow_1.formatWorkflowCause)([workflow_1.WorkflowErrors.CheckoutWrongHead]);
|
const message = (0, workflow_1.formatWorkflowCause)([
|
||||||
t.deepEqual(message, "CheckoutWrongHead");
|
workflow_1.WorkflowErrors.CheckoutWrongHead,
|
||||||
|
workflow_1.WorkflowErrors.MissingPushHook,
|
||||||
|
]);
|
||||||
|
t.deepEqual(message, "CheckoutWrongHead,MissingPushHook");
|
||||||
t.deepEqual((0, workflow_1.formatWorkflowCause)([]), undefined);
|
t.deepEqual((0, workflow_1.formatWorkflowCause)([]), undefined);
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("patternIsSuperset()", (t) => {
|
(0, ava_1.default)("patternIsSuperset()", (t) => {
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -34,6 +34,12 @@ test("getWorkflowErrors() when on.push is an array missing pull_request", (t) =>
|
||||||
t.deepEqual(...errorCodes(errors, []));
|
t.deepEqual(...errorCodes(errors, []));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("getWorkflowErrors() when on.push is an array missing push", (t) => {
|
||||||
|
const errors = getWorkflowErrors({ on: ["pull_request"] });
|
||||||
|
|
||||||
|
t.deepEqual(...errorCodes(errors, [WorkflowErrors.MissingPushHook]));
|
||||||
|
});
|
||||||
|
|
||||||
test("getWorkflowErrors() when on.push is valid", (t) => {
|
test("getWorkflowErrors() when on.push is valid", (t) => {
|
||||||
const errors = getWorkflowErrors({
|
const errors = getWorkflowErrors({
|
||||||
on: ["push", "pull_request"],
|
on: ["push", "pull_request"],
|
||||||
|
|
@ -242,6 +248,14 @@ test("formatWorkflowErrors() when there is one error", (t) => {
|
||||||
t.true(message.startsWith("1 issue was detected with this workflow:"));
|
t.true(message.startsWith("1 issue was detected with this workflow:"));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("formatWorkflowErrors() when there are multiple errors", (t) => {
|
||||||
|
const message = formatWorkflowErrors([
|
||||||
|
WorkflowErrors.CheckoutWrongHead,
|
||||||
|
WorkflowErrors.MissingPushHook,
|
||||||
|
]);
|
||||||
|
t.true(message.startsWith("2 issues were detected with this workflow:"));
|
||||||
|
});
|
||||||
|
|
||||||
test("formatWorkflowCause() with no errors", (t) => {
|
test("formatWorkflowCause() with no errors", (t) => {
|
||||||
const message = formatWorkflowCause([]);
|
const message = formatWorkflowCause([]);
|
||||||
|
|
||||||
|
|
@ -249,9 +263,12 @@ test("formatWorkflowCause() with no errors", (t) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("formatWorkflowCause()", (t) => {
|
test("formatWorkflowCause()", (t) => {
|
||||||
const message = formatWorkflowCause([WorkflowErrors.CheckoutWrongHead]);
|
const message = formatWorkflowCause([
|
||||||
|
WorkflowErrors.CheckoutWrongHead,
|
||||||
|
WorkflowErrors.MissingPushHook,
|
||||||
|
]);
|
||||||
|
|
||||||
t.deepEqual(message, "CheckoutWrongHead");
|
t.deepEqual(message, "CheckoutWrongHead,MissingPushHook");
|
||||||
t.deepEqual(formatWorkflowCause([]), undefined);
|
t.deepEqual(formatWorkflowCause([]), undefined);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,10 @@ export interface Workflow {
|
||||||
on?: string | string[] | WorkflowTriggers;
|
on?: string | string[] | WorkflowTriggers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isObject(o: unknown): o is object {
|
||||||
|
return o !== null && typeof o === "object";
|
||||||
|
}
|
||||||
|
|
||||||
const GLOB_PATTERN = new RegExp("(\\*\\*?)");
|
const GLOB_PATTERN = new RegExp("(\\*\\*?)");
|
||||||
|
|
||||||
function escapeRegExp(string) {
|
function escapeRegExp(string) {
|
||||||
|
|
@ -92,6 +96,7 @@ function toCodedErrors(errors: {
|
||||||
// code to send back via status report
|
// code to send back via status report
|
||||||
// message to add as a warning annotation to the run
|
// message to add as a warning annotation to the run
|
||||||
export const WorkflowErrors = toCodedErrors({
|
export const WorkflowErrors = toCodedErrors({
|
||||||
|
MissingPushHook: `Please specify an on.push hook.`,
|
||||||
CheckoutWrongHead: `git checkout HEAD^2 is no longer necessary. Please remove this step as Code Scanning recommends analyzing the merge commit for best results.`,
|
CheckoutWrongHead: `git checkout HEAD^2 is no longer necessary. Please remove this step as Code Scanning recommends analyzing the merge commit for best results.`,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -120,6 +125,36 @@ export function getWorkflowErrors(doc: Workflow): CodedError[] {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let missingPush = false;
|
||||||
|
|
||||||
|
if (doc.on === undefined) {
|
||||||
|
// this is not a valid config
|
||||||
|
} else if (typeof doc.on === "string") {
|
||||||
|
if (doc.on === "pull_request") {
|
||||||
|
missingPush = true;
|
||||||
|
}
|
||||||
|
} else if (Array.isArray(doc.on)) {
|
||||||
|
const hasPush = doc.on.includes("push");
|
||||||
|
const hasPullRequest = doc.on.includes("pull_request");
|
||||||
|
if (hasPullRequest && !hasPush) {
|
||||||
|
missingPush = true;
|
||||||
|
}
|
||||||
|
} else if (isObject(doc.on)) {
|
||||||
|
const hasPush = Object.prototype.hasOwnProperty.call(doc.on, "push");
|
||||||
|
const hasPullRequest = Object.prototype.hasOwnProperty.call(
|
||||||
|
doc.on,
|
||||||
|
"pull_request"
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!hasPush && hasPullRequest) {
|
||||||
|
missingPush = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (missingPush) {
|
||||||
|
errors.push(WorkflowErrors.MissingPushHook);
|
||||||
|
}
|
||||||
|
|
||||||
return errors;
|
return errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue