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
13 changes: 8 additions & 5 deletions dist/284.index.js

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

2 changes: 1 addition & 1 deletion dist/284.index.js.map

Large diffs are not rendered by default.

13 changes: 8 additions & 5 deletions dist/59.index.js

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

2 changes: 1 addition & 1 deletion dist/59.index.js.map

Large diffs are not rendered by default.

17 changes: 12 additions & 5 deletions src/helpers/approvals-satisfied.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@ export const approvalsSatisfied = async ({
const [team, numberOfRequiredReviews] = overrideString.split(':');
return { team, numberOfRequiredReviews };
});
const teamsList = updateTeamsList(teams?.split('\n'));
const teamsList = updateTeamsList(teams?.split(/[\n,]/).map(t => t.trim()));
if (!validateTeamsList(teamsList)) {
core.setFailed('If teams input is in the format "org/team", then the org must be the same as the repository org');
return false;
}
const usersList = users?.split('\n');
const usersList = users?.split(/[\n,]/).map(u => u.replaceAll('@', '').trim());

const logs = [];

Expand All @@ -61,7 +61,7 @@ export const approvalsSatisfied = async ({
.filter(({ state }) => state === 'APPROVED')
.map(({ user }) => user?.login)
.filter(Boolean);
logs.push(`PR already approved by: ${approverLogins.toString()}`);
logs.push(`PR already approved by: ${approverLogins.map(login => `\`${login}\``).join(', ')}`);

const requiredCodeOwnersEntries =
teamsList || usersList
Expand All @@ -87,14 +87,21 @@ export const approvalsSatisfied = async ({

const numberOfRequiredReviews =
teamOverrides?.find(({ team }) => team && entry.owners.includes(team))?.numberOfRequiredReviews ?? number_of_reviewers;
logs.push(`Current number of approvals satisfied for ${entry.owners}: ${numberOfApprovals}`);
logs.push(
`Current number of approvals satisfied for ${entry.owners.map(o => `\`${o.replaceAll('@', '')}\``).join(',')}: ${numberOfApprovals}`
);
logs.push(`Number of required reviews: ${numberOfRequiredReviews}`);

return numberOfApprovals >= Number(numberOfRequiredReviews);
};

if (requiredCodeOwnersEntriesWithOwners.length) {
logs.push(`Required code owners: ${requiredCodeOwnersEntriesWithOwners.map(({ owners }) => owners).toString()}`);
logs.push(
`Required code owners: ${requiredCodeOwnersEntriesWithOwners
.flatMap(({ owners }) => owners.map(o => o.replaceAll('@', '')))
.map(o => `\`${o}\``)
.join(', ')}`
);
}

const booleans = await Promise.all(requiredCodeOwnersEntriesWithOwners.map(codeOwnersEntrySatisfiesApprovals));
Expand Down
10 changes: 7 additions & 3 deletions test/helpers/approvals-satisfied.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -614,6 +614,10 @@ describe('approvalsSatisfied', () => {
{
state: 'APPROVED',
user: { login: 'user3' }
},
{
state: 'APPROVED',
user: { login: 'user4' }
}
]
});
Expand All @@ -629,9 +633,9 @@ describe('approvalsSatisfied', () => {

Required approvals not satisfied:

PR already approved by: user3
Required code owners: @user1,@user2
Current number of approvals satisfied for @user1,@user2: 0
PR already approved by: \`user3\`, \`user4\`
Required code owners: \`user1\`, \`user2\`
Current number of approvals satisfied for \`user1\`,\`user2\`: 0
Number of required reviews: 1`
})
);
Expand Down
Loading