MediaWiki  REL1_21
StructureTest.php
Go to the documentation of this file.
00001 <?php
00007 class StructureTest extends MediaWikiTestCase {
00013         public function testUnitTestFileNamesEndWithTest() {
00014                 if ( wfIsWindows() ) {
00015                         $this->markTestSkipped( 'This test does not work on Windows' );
00016                 }
00017                 $rootPath = escapeshellarg( __DIR__ );
00018                 $testClassRegex = implode( '|', array(
00019                         'ApiFormatTestBase',
00020                         'ApiTestCase',
00021                         'ApiQueryTestBase',
00022                         'ApiQueryContinueTestBase',
00023                         'MediaWikiLangTestCase',
00024                         'MediaWikiTestCase',
00025                         'PHPUnit_Framework_TestCase',
00026                         'DumpTestCase',
00027                 ) );
00028                 $testClassRegex = "^class .* extends ($testClassRegex)";
00029                 $finder = "find $rootPath -name '*.php' '!' -name '*Test.php'" .
00030                         " | xargs grep -El '$testClassRegex|function suite\('";
00031 
00032                 $results = null;
00033                 $exitCode = null;
00034                 exec( $finder, $results, $exitCode );
00035 
00036                 $this->assertEquals(
00037                         0,
00038                         $exitCode,
00039                         'Verify find/grep command succeeds.'
00040                 );
00041 
00042                 $results = array_filter(
00043                         $results,
00044                         array( $this, 'filterSuites' )
00045                 );
00046                 $strip = strlen( $rootPath ) - 1;
00047                 foreach ( $results as $k => $v ) {
00048                         $results[$k] = substr( $v, $strip );
00049                 }
00050                 $this->assertEquals(
00051                         array(),
00052                         $results,
00053                         "Unit test file in $rootPath must end with Test."
00054                 );
00055         }
00056 
00060         public function filterSuites( $filename ) {
00061                 return strpos( $filename, __DIR__ . '/suites/' ) !== 0;
00062         }
00063 }