Skip to content

Commit

Permalink
Showing 7 changed files with 50 additions and 41 deletions.
10 changes: 5 additions & 5 deletions lib/actions-util.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion lib/actions-util.js.map

Large diffs are not rendered by default.

30 changes: 16 additions & 14 deletions lib/actions-util.test.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion lib/actions-util.test.js.map

Large diffs are not rendered by default.

30 changes: 16 additions & 14 deletions src/actions-util.test.ts
@@ -269,26 +269,28 @@ test("formatWorkflowCause()", (t) => {
t.deepEqual(actionsutil.formatWorkflowCause([]), undefined);
});

test("patternsOverlap()", (t) => {
t.false(actionsutil.patternsOverlap("main-*", "main"));
t.true(actionsutil.patternsOverlap("*", "*"));
t.true(actionsutil.patternsOverlap("*", "main-*"));
t.false(actionsutil.patternsOverlap("main-*", "*"));
t.false(actionsutil.patternsOverlap("main-*", "main"));
t.true(actionsutil.patternsOverlap("main", "main"));
t.false(actionsutil.patternsOverlap("*", "feature/*"));
t.true(actionsutil.patternsOverlap("**", "feature/*"));
t.false(actionsutil.patternsOverlap("feature-*", "**"));
t.false(actionsutil.patternsOverlap("a/**/c", "a/**/d"));
t.false(actionsutil.patternsOverlap("a/**/c", "a/**"));
test("patternIsSuperset()", (t) => {
t.false(actionsutil.patternIsSuperset("main-*", "main"));
t.true(actionsutil.patternIsSuperset("*", "*"));
t.true(actionsutil.patternIsSuperset("*", "main-*"));
t.false(actionsutil.patternIsSuperset("main-*", "*"));
t.false(actionsutil.patternIsSuperset("main-*", "main"));
t.true(actionsutil.patternIsSuperset("main", "main"));
t.false(actionsutil.patternIsSuperset("*", "feature/*"));
t.true(actionsutil.patternIsSuperset("**", "feature/*"));
t.false(actionsutil.patternIsSuperset("feature-*", "**"));
t.false(actionsutil.patternIsSuperset("a/**/c", "a/**/d"));
t.false(actionsutil.patternIsSuperset("a/**/c", "a/**"));
t.true(actionsutil.patternIsSuperset("a/**/c", "a/main-**/c"));
t.false(actionsutil.patternIsSuperset("a/main-**/c", "a/**/c"));
t.true(
actionsutil.patternsOverlap(
actionsutil.patternIsSuperset(
"/robin/*/release/*",
"/robin/moose/release/goose"
)
);
t.false(
actionsutil.patternsOverlap(
actionsutil.patternIsSuperset(
"/robin/moose/release/goose",
"/robin/*/release/*"
)
8 changes: 4 additions & 4 deletions src/actions-util.ts
@@ -159,7 +159,7 @@ function considerToken(
}
}

function tokensMatch(tokensA: string[], tokensB: string[]) {
function tokensAreSuperset(tokensA: string[], tokensB: string[]) {
let indexA = 0;
let indexB = 0;

@@ -192,11 +192,11 @@ function tokensMatch(tokensA: string[], tokensB: string[]) {
return false;
}

export function patternsOverlap(patternA: string, patternB: string): boolean {
export function patternIsSuperset(patternA: string, patternB: string): boolean {
const tokensA = tokenize(patternA);
const tokensB = tokenize(patternB);

return tokensMatch(tokensA, tokensB) && tokensMatch(tokensA.reverse(), tokensB.reverse());
return tokensAreSuperset(tokensA, tokensB) && tokensAreSuperset(tokensA.reverse(), tokensB.reverse());
}

function branchesToArray(branches?: string | null | string[]): string[] | "**" {
@@ -306,7 +306,7 @@ export function validateWorkflow(doc: Workflow): CodedError[] {

if (pull_request !== "**") {
const difference = pull_request.filter(
(value) => !push.some((o) => patternsOverlap(o, value))
(value) => !push.some((o) => patternIsSuperset(o, value))
);
if (difference.length > 0) {
// there are branches in pull_request that may not have a baseline
9 changes: 7 additions & 2 deletions src/init-action.ts
@@ -98,8 +98,13 @@ async function run() {

const workflowErrors = await actionsUtil.getWorkflowErrors();

if (workflowErrors.filter(o => o.code !== 'LintFailed').length > 0) {
core.warning(actionsUtil.formatWorkflowErrors(workflowErrors));
// we do not want to worry users if linting is failing
// but we do want to send a status report containing this error code
// below
const userWorkflowErrors = workflowErrors.filter(o => o.code !== 'LintFailed');

if (userWorkflowErrors.length > 0) {
core.warning(actionsUtil.formatWorkflowErrors(userWorkflowErrors));
}

if (

0 comments on commit 4d86261

Please sign in to comment.