Wordpress/tests/phpunit/includes/trac.php
Gary Pendergast 8f95800d52 Code is Poetry.
WordPress' code just... wasn't.
This is now dealt with.

Props jrf, pento, netweb, GaryJ, jdgrimes, westonruter, Greg Sherwood from PHPCS, and everyone who's ever contributed to WPCS and PHPCS.
Fixes #41057.



git-svn-id: https://develop.svn.wordpress.org/trunk@42343 602fd350-edb4-49c9-b593-d223f7449a82
2017-11-30 23:09:33 +00:00

59 lines
2.1 KiB
PHP

<?php
class TracTickets {
/**
* When open tickets for a Trac installation is requested, the results are stored here.
*
* @var array
*/
protected static $trac_ticket_cache = array();
/**
* Checks if track ticket #$ticket_id is resolved
*
* @return bool|null true if the ticket is resolved, false if not resolved, null on error
*/
public static function isTracTicketClosed( $trac_url, $ticket_id ) {
if ( ! extension_loaded( 'openssl' ) ) {
$trac_url = preg_replace( '/^https:/', 'http:', $trac_url );
}
if ( ! isset( self::$trac_ticket_cache[ $trac_url ] ) ) {
// In case you're running the tests offline, keep track of open tickets.
$file = DIR_TESTDATA . '/.trac-ticket-cache.' . str_replace( array( 'http://', 'https://', '/' ), array( '', '', '-' ), rtrim( $trac_url, '/' ) );
$tickets = @file_get_contents( $trac_url . '/query?status=%21closed&format=csv&col=id' );
// Check if our HTTP request failed.
if ( false === $tickets ) {
if ( file_exists( $file ) ) {
register_shutdown_function( array( 'TracTickets', 'usingLocalCache' ) );
$tickets = file_get_contents( $file );
} else {
register_shutdown_function( array( 'TracTickets', 'forcingKnownBugs' ) );
self::$trac_ticket_cache[ $trac_url ] = array();
return true; // Assume the ticket is closed, which means it gets run.
}
} else {
$tickets = substr( $tickets, 2 ); // remove 'id' column header
$tickets = trim( $tickets );
file_put_contents( $file, $tickets );
}
$tickets = explode( "\r\n", $tickets );
self::$trac_ticket_cache[ $trac_url ] = $tickets;
}
return ! in_array( $ticket_id, self::$trac_ticket_cache[ $trac_url ] );
}
public static function usingLocalCache() {
echo PHP_EOL . "\x1b[0m\x1b[30;43m\x1b[2K";
echo 'INFO: Trac was inaccessible, so a local ticket status cache was used.' . PHP_EOL;
echo "\x1b[0m\x1b[2K";
}
public static function forcingKnownBugs() {
echo PHP_EOL . "\x1b[0m\x1b[37;41m\x1b[2K";
echo "ERROR: Trac was inaccessible, so known bugs weren't able to be skipped." . PHP_EOL;
echo "\x1b[0m\x1b[2K";
}
}