WordPress.org

Making WordPress.org

Changeset 9897


Ignore:
Timestamp:
05/22/2020 04:27:29 AM (19 months ago)
Author:
dd32
Message:

Trac: When pulling GitHub PR status, check the Test Runners results directly to avoid misleading/incorrect/missing PR statuses.

Merges https://github.com/WordPress/wordpress.org/pull/5
See #4903.

Location:
sites/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/api.wordpress.org/public_html/dotorg/trac/pr/functions.php

    r9877 r9897  
    1212    if ( ! $data || ! $data->number ) {
    1313        return false;
     14    }
     15
     16    // Get Travis CI State.
     17    $check_runs = [];
     18    $raw_check_runs = api_request(
     19        '/repos/' . $repo . '/commits/' . $data->head->sha . '/check-runs',
     20        null,
     21        [ 'Accept: application/vnd.github.antiope-preview+json' ]
     22    );
     23    if ( !empty( $raw_check_runs->check_runs ) ) {
     24        foreach ( $raw_check_runs->check_runs as $check ) {
     25            switch ( $check->status ) {
     26                case 'queued':
     27                case 'in_progress':
     28                    $check_runs[ $check->app->name ] = 'in_progress';
     29                    break;
     30                case 'completed':
     31                    switch( $check->conclusion ) {
     32                        case 'success':
     33                            $check_runs[ $check->app->name ] = 'success';
     34                            break;
     35                        case 'failure':
     36                            $check_runs[ $check->app->name ] = 'failed';
     37                            break;
     38                        case 'action_required':
     39                            $check_runs[ $check->app->name ] = $check->output->title;
     40                            break;
     41                    }
     42            }
     43        }
    1444    }
    1545
     
    2454        'closed_at'       => $data->closed_at,
    2555        'mergeable_state' => $data->mergeable_state,
     56        'check_runs'      => $check_runs,
    2657        'body'            => $data->body,
    2758        'user'            => (object) [
  • sites/trunk/api.wordpress.org/public_html/dotorg/trac/pr/index.php

    r9565 r9897  
    5252            &&
    5353            strtotime( $data->last_checked_at ) <= time() - 2*60
     54        ) ||
     55        // or unit tests are running, then 2min.
     56        (
     57            $data->check_runs
     58            &&
     59            in_array( 'in_progress', $data->check_runs )
     60            &&
     61            strtotime( $data->last_checked_at ) <= time() - 2*60
    5462        )
    5563    ) {
  • sites/trunk/wordpress.org/public_html/style/trac/wp-trac.js

    r9700 r9897  
    17001700                // Closed?
    17011701                if ( data.closed_at ) {
    1702                     if ( data.mergeable_state == 'clean' ) {
    1703                         return '✅ Closed';
    1704                     } else {
    1705                         return '❌ Closed'
     1702                    return '✅ Closed';
     1703                }
     1704
     1705                // Unit Tests?
     1706                if ( data.check_runs ) {
     1707                    for ( var provider in data.check_runs ) {
     1708                        switch( data.check_runs[ provider ] ) {
     1709                            case 'in_progress':
     1710                                return provider + ' running';
     1711                            case 'failed':
     1712                                return '❌ ' + provider + ' failed';
     1713                            case 'success':
     1714                                continue;
     1715                            default:
     1716                                return '❌ ' + provider + ' ' + data.check_runs[ provider ];
     1717                        }
    17061718                    }
    17071719                }
     
    17101722                switch ( data.mergeable_state ) {
    17111723                    case 'draft':
    1712                         return 'Work in progress';
     1724                        return 'Draft';
     1725                    case 'blocked': // This seems to be returned for our App with PRs but not others..
    17131726                    case 'clean':
    17141727                        return '✅ All checks pass';
    17151728                    case 'dirty':
    17161729                        return '❌ Merge conflicts';
    1717                     case 'unstable':
     1730                    case 'unstable': // Not seen, Unit Tests above should catch it.
    17181731                        return '❌ Failing tests';
     1732                    case 'unknown':
     1733                        return 'Unknown';
    17191734                }
    17201735            }
Note: See TracChangeset for help on using the changeset viewer.