45 if ( !$this->db->tableExists(
'testrun', __METHOD__ )
46 || !$this->db->tableExists(
'testitem', __METHOD__ )
48 print
"WARNING> `testrun` table not found in database.\n";
49 $this->prevRun =
false;
52 $this->prevRun = $this->db->selectField(
'testrun',
'MAX(tr_id)' );
59 $this->results[$test[
'desc']] =
$result->isSuccess() ? 1 : 0;
63 if ( $this->prevRun ) {
67 'fp' =>
'previously failing test(s) now PASSING! :)',
68 'pn' =>
'previously PASSING test(s) removed o_O',
69 'np' =>
'new PASSING test(s) :)',
71 'pf' =>
'previously passing test(s) now FAILING! :(',
72 'fn' =>
'previously FAILING test(s) removed O_o',
73 'nf' =>
'new FAILING test(s) :(',
74 'ff' =>
'still FAILING test(s) :(',
79 $res = $this->db->select(
'testitem', [
'ti_name',
'ti_success' ],
80 [
'ti_run' => $this->prevRun ], __METHOD__ );
85 $prevResults[$row->ti_name] = $row->ti_success;
89 $combined = array_keys( $this->results + $prevResults );
91 # Determine breakdown by change type
93 foreach ( $combined
as $test ) {
94 if ( !isset( $prevResults[$test] ) ) {
96 } elseif ( $prevResults[$test] == 1 ) {
102 if ( !isset( $this->results[$test] ) ) {
104 } elseif ( $this->results[$test] == 1 ) {
110 $code = $before . $after;
112 if ( isset( $table[
$code] ) ) {
118 foreach ( $table
as $code => $label ) {
119 if ( !empty( $breakdown[
$code] ) ) {
121 printf(
"\n%4d %s\n", $count, $label );
123 foreach ( $breakdown[
$code]
as $differing_test_name => $statusInfo ) {
124 print
" * $differing_test_name [$statusInfo]\n";
129 print
"No previous test runs to compare against.\n";
145 if ( $after ==
'n' ) {
146 $changedRun = $this->db->selectField(
'testitem',
148 [
'ti_name' => $testname ],
150 $appear = $this->db->selectRow(
'testrun',
151 [
'tr_date',
'tr_mw_version' ],
152 [
'tr_id' => $changedRun ],
155 return "First recorded appearance: "
156 . date(
"d-M-Y H:i:s", strtotime( $appear->tr_date ) )
157 .
", " . $appear->tr_mw_version;
163 'ti_name' => $testname,
164 'ti_success' => ( $after ==
'f' ?
"1" :
"0" ) ];
166 if ( $this->curRun ) {
167 $conds[] =
"ti_run != " . $this->db->addQuotes( $this->curRun );
170 $changedRun = $this->db->selectField(
'testitem',
'MAX(ti_run)', $conds, __METHOD__ );
173 if ( is_null( $changedRun ) ) {
174 if ( $after ==
"f" ) {
175 return "Has never passed";
177 return "Has never failed";
184 $pre = $this->db->selectRow(
'testrun',
185 [
'tr_date',
'tr_mw_version' ],
186 [
'tr_id' => $changedRun ],
188 $post = $this->db->selectRow(
'testrun',
189 [
'tr_date',
'tr_mw_version' ],
190 [
"tr_id > " . $this->db->addQuotes( $changedRun ) ],
192 [
"LIMIT" => 1,
"ORDER BY" =>
'tr_id' ]
196 $postDate = date(
"d-M-Y H:i:s", strtotime( $post->tr_date ) ) .
", {$post->tr_mw_version}";
201 return ( $after ==
"f" ?
"Introduced" :
"Fixed" ) .
" between "
202 . date(
"d-M-Y H:i:s", strtotime(
$pre->tr_date ) ) .
", " .
$pre->tr_mw_version