Changeset 9898
- Timestamp:
- 05/22/2020 05:12:41 AM (5 years ago)
- Location:
- sites/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/api.wordpress.org/public_html/dotorg/trac/pr/functions.php
r9897 r9898 44 44 } 45 45 46 $_reviews = api_request( 47 '/repos/' . $repo . '/pulls/' . intval( $pr ) . '/reviews', 48 null, 49 [ 'Accept: application/vnd.github.antiope-preview+json' ] 50 ); 51 $reviews = []; 52 foreach ( $_reviews as $r ) { 53 if ( 54 in_array( $r->state, [ 'CHANGES_REQUESTED', 'APPROVED' ] ) && 55 ! in_array( $r->user->login, $reviews[ $r->state ] ?? [], true ) 56 ) { 57 $reviews[ $r->state ][] = $r->user->login; 58 } 59 } 60 46 61 return (object) [ 47 62 'repo' => $data->base->repo->full_name, … … 55 70 'mergeable_state' => $data->mergeable_state, 56 71 'check_runs' => $check_runs, 72 'reviews' => $reviews, 57 73 'body' => $data->body, 58 74 'user' => (object) [ -
sites/trunk/wordpress.org/public_html/style/trac/wp-trac.js
r9897 r9898 1698 1698 // Logic to determine what the PRs status is 1699 1699 function prStatus( data ) { 1700 // Closed? 1700 var stack = [], 1701 emojiState = ''; 1702 1703 // Closed? Skip everything else. 1701 1704 if ( data.closed_at ) { 1702 1705 return '✅ Closed'; 1706 } 1707 1708 // Merge State then 1709 switch ( data.mergeable_state ) { 1710 case 'draft': 1711 stack.push( 'Draft' ); 1712 break; 1713 case 'blocked': 1714 // All Good, Changes Requested, or unit tests failing. 1715 // Why 'blocked' is returned for some PRs is not obvious. 1716 if ( 1717 data.reviews.CHANGES_REQUESTED || 1718 ( 1719 data.check_runs && 1720 'failed' == Object.values( data.check_runs ).reduce( function( result, element ) { 1721 return 'failed' == element ? element : result; 1722 } ) 1723 ) 1724 ) { 1725 // Let the unit tests / reviews section take care of it. 1726 break; 1727 } // else fall through. 1728 case 'clean': 1729 emojiState = '✅'; 1730 stack.push( 'All checks pass' ); 1731 break; 1732 case 'dirty': 1733 emojiState = '❌'; 1734 stack.push( 'Merge conflicts' ); 1735 break; 1736 case 'unstable': 1737 emojiState = '❌'; 1738 stack.push( 'Failing tests' ); 1739 break; 1740 case 'unknown': 1741 stack.push( 'Unknown' ); 1742 break; 1703 1743 } 1704 1744 … … 1706 1746 if ( data.check_runs ) { 1707 1747 for ( var provider in data.check_runs ) { 1708 switch ( data.check_runs[ provider ] ) {1748 switch ( data.check_runs[ provider ] ) { 1709 1749 case 'in_progress': 1710 return provider + ' running'; 1750 stack.push( provider + ' running' ); 1751 break; 1711 1752 case 'failed': 1712 return '❌ ' + provider + ' failed'; 1753 emojiState = '❌'; 1754 stack.push( provider ); 1755 break; 1713 1756 case 'success': 1714 1757 continue; 1715 1758 default: 1716 return '❌ ' + provider + ' ' + data.check_runs[ provider ]; 1717 } 1718 } 1719 } 1720 1721 // Merge State then 1722 switch ( data.mergeable_state ) { 1723 case 'draft': 1724 return 'Draft'; 1725 case 'blocked': // This seems to be returned for our App with PRs but not others.. 1726 case 'clean': 1727 return '✅ All checks pass'; 1728 case 'dirty': 1729 return '❌ Merge conflicts'; 1730 case 'unstable': // Not seen, Unit Tests above should catch it. 1731 return '❌ Failing tests'; 1732 case 'unknown': 1733 return 'Unknown'; 1734 } 1759 stack.push( provider + ' ' + data.check_runs[ provider ] ); 1760 break; 1761 } 1762 } 1763 } 1764 1765 // Changes requested? 1766 if ( data.reviews ) { 1767 if ( data.reviews.APPROVED ) { 1768 emojiState = '✅'; 1769 stack.push( 1770 $('<span>Approved</span>').prop( 1771 'title', 1772 'Changes approved by: ' + data.reviews.APPROVED.join(', ') 1773 )[0].outerHTML 1774 ); 1775 } 1776 if ( data.reviews.CHANGES_REQUESTED ) { 1777 emojiState = '❌'; 1778 stack.push( 1779 $('<span>Changes Requested</span>').prop( 1780 'title', 1781 'Changes requested by: ' + data.reviews.CHANGES_REQUESTED.join(', ') 1782 )[0].outerHTML 1783 ); 1784 } 1785 } 1786 1787 return emojiState + ' ' + stack.join( ', ' ); 1735 1788 } 1736 1789
Note: See TracChangeset
for help on using the changeset viewer.