Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions dist/helpers/check-merge-safety.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,12 @@ class CheckMergeSafety extends HelperInputs {
}
var checkMergeSafety = async (inputs) => {
warning("check-merge-safety is deprecated. Please use GitHub's native merge queue: https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue");
const isPrWorkflow = Boolean(context.issue.number);
const pullNumber = inputs.pull_number ? Number(inputs.pull_number) : context.issue.number;
const isPrWorkflow = Boolean(pullNumber);
if (!isPrWorkflow) {
return handlePushWorkflow(inputs);
}
const { data: pullRequest } = await octokit.pulls.get({ pull_number: context.issue.number, ...context.repo });
const { data: pullRequest } = await octokit.pulls.get({ pull_number: pullNumber, ...context.repo });
const { state, message } = await setMergeSafetyStatus(pullRequest, inputs);
if (state === "failure") {
setFailed(message);
Expand Down Expand Up @@ -256,4 +257,4 @@ export {
CheckMergeSafety
};

//# debugId=7687825B6B00F97364756E2164756E21
//# debugId=B28E1D4A9818ED4864756E2164756E21
6 changes: 3 additions & 3 deletions dist/helpers/check-merge-safety.js.map

Large diffs are not rendered by default.

7 changes: 4 additions & 3 deletions dist/helpers/check-pr-title.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,13 @@ import"../main-wckvcay0.js";
// src/helpers/check-pr-title.ts
class CheckPrTitle extends HelperInputs {
}
var checkPrTitle = async ({ pattern = DEFAULT_PR_TITLE_REGEX }) => {
var checkPrTitle = async ({ pattern = DEFAULT_PR_TITLE_REGEX, pull_number }) => {
const regex = new RegExp(pattern);
const pullNumber = pull_number ? Number(pull_number) : context.issue.number;
const {
data: { title }
} = await octokit.pulls.get({
pull_number: context.issue.number,
pull_number: pullNumber,
...context.repo
});
if (regex.test(title)) {
Expand All @@ -38,4 +39,4 @@ export {
CheckPrTitle
};

//# debugId=C2025280B7E6F40964756E2164756E21
//# debugId=9A54DF641B4B9ABB64756E2164756E21
6 changes: 3 additions & 3 deletions dist/helpers/check-pr-title.js.map

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

6 changes: 3 additions & 3 deletions dist/helpers/get-changed-files.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import"../main-wckvcay0.js";
// src/helpers/get-changed-files.ts
class GetChangedFiles extends HelperInputs {
}
var getChangedFiles = async ({ pattern, delimiter = ",", ignore_deleted }) => {
const pullNumber = context.eventName === "merge_group" ? getPrNumberFromMergeQueueRef() : context.issue.number;
var getChangedFiles = async ({ pattern, delimiter = ",", ignore_deleted, pull_number }) => {
const pullNumber = pull_number ? Number(pull_number) : context.eventName === "merge_group" ? getPrNumberFromMergeQueueRef() : context.issue.number;
const filePaths = await getChangedFilepaths(pullNumber, Boolean(ignore_deleted));
const filteredFilePaths = pattern ? filePaths.filter((fileName) => fileName.match(pattern)) : filePaths;
return filteredFilePaths.join(delimiter);
Expand All @@ -30,4 +30,4 @@ export {
GetChangedFiles
};

//# debugId=72308F916186F09B64756E2164756E21
//# debugId=F2CE773BF74E848A64756E2164756E21
6 changes: 3 additions & 3 deletions dist/helpers/get-changed-files.js.map

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

8 changes: 6 additions & 2 deletions src/helpers/check-merge-safety.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,21 @@ export class CheckMergeSafety extends HelperInputs {
declare override_filter_paths?: string;
declare override_filter_globs?: string;
declare match_comment_paths?: string;
declare pull_number?: string;
}

export const checkMergeSafety = async (inputs: CheckMergeSafety) => {
core.warning(
"check-merge-safety is deprecated. Please use GitHub's native merge queue: https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue"
);
const isPrWorkflow = Boolean(githubContext.issue.number);

const pullNumber = inputs.pull_number ? Number(inputs.pull_number) : githubContext.issue.number;
const isPrWorkflow = Boolean(pullNumber);

if (!isPrWorkflow) {
return handlePushWorkflow(inputs);
}
const { data: pullRequest } = await octokit.pulls.get({ pull_number: githubContext.issue.number, ...githubContext.repo });
const { data: pullRequest } = await octokit.pulls.get({ pull_number: pullNumber, ...githubContext.repo });

const { state, message } = await setMergeSafetyStatus(pullRequest, inputs);
if (state === 'failure') {
Expand Down
10 changes: 8 additions & 2 deletions src/helpers/check-pr-title.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,25 @@ import { setFailed } from '@actions/core';

export class CheckPrTitle extends HelperInputs {
declare pattern?: string;
declare pull_number?: string;
}

export const checkPrTitle = async ({ pattern = DEFAULT_PR_TITLE_REGEX }: CheckPrTitle) => {
export const checkPrTitle = async ({ pattern = DEFAULT_PR_TITLE_REGEX, pull_number }: CheckPrTitle) => {
const regex = new RegExp(pattern);
const pullNumber = pull_number ? Number(pull_number) : context.issue.number;

const {
data: { title }
} = await octokit.pulls.get({
pull_number: context.issue.number,
pull_number: pullNumber,
...context.repo
});

if (regex.test(title)) {
return true;
}

setFailed(`Pull request title does not meet requirements. The title must match the following regex: ${pattern}`);

return false;
};
11 changes: 9 additions & 2 deletions src/helpers/get-changed-files.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,18 @@ export class GetChangedFiles extends HelperInputs {
declare pattern?: string;
declare delimiter?: string;
declare ignore_deleted?: string;
declare pull_number?: string;
}

export const getChangedFiles = async ({ pattern, delimiter = ',', ignore_deleted }: GetChangedFiles) => {
const pullNumber = context.eventName === 'merge_group' ? getPrNumberFromMergeQueueRef() : context.issue.number;
export const getChangedFiles = async ({ pattern, delimiter = ',', ignore_deleted, pull_number }: GetChangedFiles) => {
const pullNumber = pull_number
? Number(pull_number)
: context.eventName === 'merge_group'
? getPrNumberFromMergeQueueRef()
: context.issue.number;

const filePaths = await getChangedFilepaths(pullNumber, Boolean(ignore_deleted));
const filteredFilePaths = pattern ? filePaths.filter(fileName => fileName.match(pattern)) : filePaths;

return filteredFilePaths.join(delimiter);
};
19 changes: 19 additions & 0 deletions test/helpers/check-merge-safety.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,25 @@ describe('checkMergeSafety', () => {
});
});

it('should use pull_number input when issue number is unavailable', async () => {
const filesOutOfDate: string[] = [];
const changedFilesOnPr = ['packages/package-1/src/some-file.ts'];
mockGithubRequests(filesOutOfDate, changedFilesOnPr);
context.issue.number = undefined as unknown as number;

await checkMergeSafety({
paths: allProjectPaths,
pull_number: '456',
...context.repo
});

expect(octokit.pulls.get).toHaveBeenCalledWith({
pull_number: 456,
...context.repo
});
expect(octokit.pulls.list).not.toHaveBeenCalled();
});

it('should skip setting merge safety commit status when a PR already has the failure context set', async () => {
const filesOutOfDate = ['packages/package-1/src/another-file.ts'];
const changedFilesOnPr = ['packages/package-1/src/some-file.ts'];
Expand Down
21 changes: 21 additions & 0 deletions test/helpers/check-pr-title.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ setupMocks();

const { checkPrTitle } = await import('../../src/helpers/check-pr-title');
const { octokit } = await import('../../src/octokit');
const { context } = await import('@actions/github');

describe('checkPrTitle', () => {
it('should pass as the PR title conforms to the regex', async () => {
Expand Down Expand Up @@ -49,4 +50,24 @@ describe('checkPrTitle', () => {

expect(result).toBe(false);
});

it('should use pull_number input when provided', async () => {
(octokit.pulls.get as unknown as Mock<any>).mockImplementation(async () => ({
data: {
id: 1,
number: 999,
state: 'open',
title: 'feat: added feature to project'
}
}));

context.issue.number = 123;
const result = await checkPrTitle({ pull_number: '999' });

expect(result).toBe(true);
expect(octokit.pulls.get).toHaveBeenCalledWith({
pull_number: 999,
...context.repo
});
});
});
14 changes: 14 additions & 0 deletions test/helpers/get-changed-files.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,4 +166,18 @@ describe('getChangedFiles', () => {

expect(result).toEqual([mock_data4[0].filename, mock_data4[1].filename, mock_data4[1].previous_filename].join(','));
});

it('should use pull_number input over merge queue pull number', async () => {
context.eventName = 'merge_group';
context.ref = 'refs/heads/gh-readonly-queue/default-branch/pr-12345-f0d9a4cb862b13cdaab6522f72d6dc17e4336b7f';
(octokit.pulls.listFiles as unknown as Mock<any>).mockImplementation(
async ({ page, pull_number }: { page: number; pull_number: number }) => ({
data: pull_number === 456 && page === 1 ? mock_data2 : []
})
);

const result = await getChangedFiles({ pull_number: '456' });

expect(result).toEqual(mock_data2[0].filename);
});
});
Loading