Skip to content
Open
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
1 change: 1 addition & 0 deletions docs/changelog.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
CHANGELOG
=====================================
| December 10, 2025 : fix: codeowners team again `#789 <https://github.com/mergeability/mergeable/pull/789>`_
| July 10, 2024: feat: Add trigger 'issue_comment' in validators `age`, `assignee`, `author`, `description`, `label`, `title` `#766 <https://github.com/mergeability/mergeable/pull/766>`_
| June 25 2024: feat: Add buildpacks for building docker image `#764 <https://github.com/mergeability/mergeable/pull/764>`_
| June 20, 2024: feat: Add options 'one_of' and 'none_of'. Support in filters `payload`, `author`, and in action `lastComment` to filter comments authors `#757 <https://github.com/mergeability/mergeable/pull/757>`_
Expand Down
18 changes: 3 additions & 15 deletions lib/validators/approvals.js
Original file line number Diff line number Diff line change
Expand Up @@ -159,35 +159,23 @@ class Approvals extends Validator {
}

if (ownerList.length > 0) {
// append it to the required reviewer list
requiredReviewers = requiredReviewers.concat(ownerList)

// there could be duplicates between reviewer and ownerlist
requiredReviewers = _.uniq(requiredReviewers)
requiredReviewers = _.union(requiredReviewers, ownerList)
}

const assigneeList = (validationSettings && validationSettings.required && validationSettings.required.assignees)
? await Assignees.process(this.getPayload(context), context)
: []

if (assigneeList.length > 0) {
// append it to the required reviewer list
requiredReviewers = requiredReviewers.concat(assigneeList)

// there could be duplicates between reviewer and assigneeList
requiredReviewers = _.uniq(requiredReviewers)
requiredReviewers = _.union(requiredReviewers, assigneeList)
}

const requestedReviewerList = (validationSettings && validationSettings.required && validationSettings.required.requested_reviewers)
? await RequestedReviewers.process(this.getPayload(context), context)
: []

if (requestedReviewerList.length > 0) {
// append it to the required reviewer list
requiredReviewers = requiredReviewers.concat(requestedReviewerList)

// there could be duplicates between reviewer and assigneeList
requiredReviewers = _.uniq(requiredReviewers)
requiredReviewers = _.union(requiredReviewers, requestedReviewerList)
}

// if pr creator exists in the list of required reviewers, remove it
Expand Down
8 changes: 6 additions & 2 deletions lib/validators/options_processor/owners.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const _ = require('lodash')
const GithubAPI = require('../../github/api')

class Owner {
static async process (payload, context) {
static async process (payload, context, approvedReviewers = []) {
const CODEOWNERS = await retrieveCODEOWNER(context, payload.number)

if (CODEOWNERS === null) return []
Expand Down Expand Up @@ -34,7 +34,11 @@ class Owner {
const requiredIndividuals = individuals
let teamMembers = []
if (teams.length > 0) {
teamMembers = await Teams.extractTeamMemberships(context, teams, requiredIndividuals)
if (approvedReviewers) {
teamMembers = await Teams.extractTeamMemberships(context, teams, approvedReviewers)
} else {
teamMembers = await Teams.extractTeamMembers(context, teams)
}
}

return _.union(teamMembers, requiredIndividuals)
Expand Down
2 changes: 1 addition & 1 deletion lib/validators/options_processor/teams.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class Teams {
const teamMembers = []
let membershipState = false

if (!teams || teams.length === 0) return teamMembers
if (!users || users.length === 0) return teamMembers

for (const user of users) {
for (const team of teams) {
Expand Down