@@ -719,9 +719,15 @@ async function sanitizeReviewers(
719719 if ( err . statusCode === 400 && err . body ?. error ?. fields ?. reviewers ) {
720720 const sanitizedReviewers : Account [ ] = [ ] ;
721721
722+ const MSG_AUTHOR_AND_REVIEWER =
723+ 'is the author and cannot be included as a reviewer.' ;
724+ const MSG_MALFORMED_REVIEWERS_LIST = 'Malformed reviewers list' ;
725+ const MSG_NOT_WORKSPACE_MEMBER =
726+ 'is not a member of this workspace and cannot be added to this pull request' ;
727+
722728 for ( const msg of err . body . error . fields . reviewers ) {
723729 // Bitbucket returns a 400 if any of the PR reviewer accounts are now inactive (ie: disabled/suspended)
724- if ( msg === 'Malformed reviewers list' ) {
730+ if ( msg === MSG_MALFORMED_REVIEWERS_LIST ) {
725731 logger . debug (
726732 { err } ,
727733 'PR contains reviewers that may be either inactive or no longer a member of this workspace. Will try setting only active reviewers'
@@ -741,11 +747,7 @@ async function sanitizeReviewers(
741747 }
742748 }
743749 // Bitbucket returns a 400 if any of the PR reviewer accounts are no longer members of this workspace
744- } else if (
745- msg . endsWith (
746- 'is not a member of this workspace and cannot be added to this pull request'
747- )
748- ) {
750+ } else if ( msg . endsWith ( MSG_NOT_WORKSPACE_MEMBER ) ) {
749751 logger . debug (
750752 { err } ,
751753 'PR contains reviewer accounts which are no longer member of this workspace. Will try setting only member reviewers'
@@ -757,6 +759,17 @@ async function sanitizeReviewers(
757759 sanitizedReviewers . push ( reviewer ) ;
758760 }
759761 }
762+ } else if ( msg . endsWith ( MSG_AUTHOR_AND_REVIEWER ) ) {
763+ logger . debug (
764+ { err } ,
765+ 'PR contains reviewer accounts which are also the author. Will try setting only non-author reviewers'
766+ ) ;
767+ const author = msg . replace ( MSG_AUTHOR_AND_REVIEWER , '' ) . trim ( ) ;
768+ for ( const reviewer of reviewers ) {
769+ if ( reviewer . display_name !== author ) {
770+ sanitizedReviewers . push ( reviewer ) ;
771+ }
772+ }
760773 } else {
761774 return undefined ;
762775 }
@@ -822,6 +835,7 @@ export async function createPr({
822835 ) . body ;
823836 reviewers = reviewersResponse . values . map ( ( reviewer : EffectiveReviewer ) => ( {
824837 uuid : reviewer . user . uuid ,
838+ display_name : reviewer . user . display_name ,
825839 } ) ) ;
826840 }
827841
0 commit comments