From a41b7035dce937a197d655edb7acdb3717058c9e Mon Sep 17 00:00:00 2001 From: Alexandre Emsenhuber Date: Fri, 28 Mar 2008 16:11:36 +0000 Subject: [PATCH] Some tweaks to the test tree: * Moved Test.php to t/Test.php * Updated t/inc/Languages.t so that it doesn't throw a fatal error because $wgMemc isn't set when creating the Laguage object * Added t/inc/Parser.t, a version of the parser tests with TAP output. I modified some methods of the ParserTests class so that i can extend it in t/inc/Parser.t to modify the format of the output. * Killed ending ?> tags in PHP tests --- Makefile | 6 +++--- maintenance/parserTests.inc | 27 ++++++++++++++++--------- t/README | 8 +++----- Test.php => t/Test.php | 2 -- t/inc/IP.t | 3 +-- t/inc/Language.t | 30 +++++++++++++--------------- t/inc/Licenses.t | 3 +-- t/inc/Parser.t | 39 +++++++++++++++++++++++++++++++++++++ t/inc/Sanitizer.t | 3 +-- t/inc/Title.t | 3 +-- t/inc/Xml.t | 3 +-- 11 files changed, 81 insertions(+), 46 deletions(-) rename Test.php => t/Test.php (99%) create mode 100644 t/inc/Parser.t diff --git a/Makefile b/Makefile index b9d5b1cfad..94d9cbda7d 100644 --- a/Makefile +++ b/Makefile @@ -15,11 +15,11 @@ MAINTENANCE_TESTS=$(wildcard t/maint/*t) FAST_TESTS=$(BASE_TEST) $(INCLUDES_TESTS) ALL_TESTS=$(BASE_TEST) $(INCLUDES_TESTS) $(MAINTENANCE_TESTS) -test: Test.php +test: t/Test.php $(PROVE_BIN) $(ALL_TESTS) -fast: Test.php +fast: t/Test.php $(PROVE_BIN) $(FAST_TESTS) -verbose: Test.php +verbose: t/Test.php $(PROVE_BIN) -v $(ALL_TESTS) | egrep -v '^ok' diff --git a/maintenance/parserTests.inc b/maintenance/parserTests.inc index 680ca234b5..e08a5d2c41 100644 --- a/maintenance/parserTests.inc +++ b/maintenance/parserTests.inc @@ -142,10 +142,7 @@ class ParserTest { } else { global $IP; $relative = wfRelativePath( $filename, $IP ); - print $this->term->color( 1 ) . - "Reading tests from \"$relative\"..." . - $this->term->reset() . - "\n"; + $this->showRunFile( $relative ); } $data = array(); @@ -646,7 +643,7 @@ class ParserTest { /** * "Running test $desc..." */ - private function showTesting( $desc ) { + protected function showTesting( $desc ) { print "Running test $desc... "; } @@ -656,7 +653,7 @@ class ParserTest { * @param string $desc The test name * @return bool */ - private function showSuccess( $desc ) { + protected function showSuccess( $desc ) { if( $this->showProgress ) { print $this->term->color( '1;32' ) . 'PASSED' . $this->term->reset() . "\n"; } @@ -672,7 +669,7 @@ class ParserTest { * @param string $html Actual HTML output * @return bool */ - private function showFailure( $desc, $result, $html ) { + protected function showFailure( $desc, $result, $html ) { if( $this->showFailure ) { if( !$this->showProgress ) { # In quiet mode we didn't show the 'Testing' message before the @@ -703,7 +700,7 @@ class ParserTest { * @param string $outFileTail Tailing for the output file name * @return string */ - private function quickDiff( $input, $output, $inFileTail='expected', $outFileTail='actual' ) { + protected function quickDiff( $input, $output, $inFileTail='expected', $outFileTail='actual' ) { $prefix = wfTempDir() . "/mwParser-" . mt_rand(); $infile = "$prefix-$inFileTail"; @@ -738,7 +735,7 @@ class ParserTest { * @param string $text * @return string */ - private function colorDiff( $text ) { + protected function colorDiff( $text ) { return preg_replace( array( '/^(-.*)$/m', '/^(\+.*)$/m' ), array( $this->term->color( 34 ) . '$1' . $this->term->reset(), @@ -746,6 +743,18 @@ class ParserTest { $text ); } + /** + * Show "Reading tests from ..." + * + * @param String $path + */ + protected function showRunFile( $path ){ + print $this->term->color( 1 ) . + "Reading tests from \"$path\"..." . + $this->term->reset() . + "\n"; + } + /** * Insert a temporary test article * @param string $name the title, including any prefix diff --git a/t/README b/t/README index 2bf42abac7..b3b9f42083 100644 --- a/t/README +++ b/t/README @@ -6,17 +6,15 @@ F - MediaWiki test tree This is the MediaWiki test tree (well, one of them), tests in this directory are self-contained programs that produce TAP output via the -F module (/trunk/Test/Test.php) (see +F module (/trunk/phase3/t/Test.php) (see http://search.cpan.org/~petdance/TAP-1.00/TAP.pm#THE_TAP_FORMAT for information on the TAP format). =head1 Running the tests -You'll need F to run the tests, it lives in the -F directory and can be copied or linked to the F -directory. +To run all tests, you can run - ln -s ../Test/Test.php . + make test Since the tests are self-contained PHP programs you can run them (Xml.t here) as: diff --git a/Test.php b/t/Test.php similarity index 99% rename from Test.php rename to t/Test.php index d6a2cf9100..7904f3ba42 100644 --- a/Test.php +++ b/t/Test.php @@ -494,5 +494,3 @@ code under copyright law. =cut */ - -?> diff --git a/t/inc/IP.t b/t/inc/IP.t index 82a61fe130..eb717252c0 100644 --- a/t/inc/IP.t +++ b/t/inc/IP.t @@ -1,7 +1,7 @@ #!/usr/bin/env php diff --git a/t/inc/Language.t b/t/inc/Language.t index df5e491d1d..125d67c1b8 100644 --- a/t/inc/Language.t +++ b/t/inc/Language.t @@ -1,18 +1,18 @@ #!/usr/bin/env php userAdjust( $date, '' ), + strval( $langObj->userAdjust( $date, '' ) ), '==', - $expected, - "User adjust $date by $offset minutes should give $expected" + strval( $expected ), + "User adjust {$date} by {$offset} minutes should give {$expected}" ); } @@ -31,25 +31,22 @@ $userAdjust_tests = array( array( 20061231235959, -60, 20061231225959 ), ); -plan( 7 + count($userAdjust_tests) ); +plan( count($userAdjust_tests) ); +define( 'MEDIAWIKI', 1 ); -require_ok( 'includes/Defines.php' ); +# Don't use require_ok as these files need global variables + +require 'includes/Defines.php'; +require 'includes/ProfilerStub.php'; -# require_ok() doesn't work for these, find out why -define( 'MEDIAWIKI', 1 ); require 'LocalSettings.php'; require 'includes/DefaultSettings.php'; +require 'includes/Setup.php'; + # Create a language object -require_ok( 'languages/Language.php' ); -require_ok( 'includes/Title.php' ); $wgContLang = $en = Language::factory( 'en' ); -# We need an user to test the lang -require_ok( 'includes/GlobalFunctions.php' ); -require_ok( 'includes/ProfilerStub.php' ); -require_ok( 'includes/Exception.php' ); -require_ok( 'includes/User.php' ); global $wgUser; $wgUser = new User(); @@ -59,4 +56,3 @@ foreach( $userAdjust_tests as $data ) { } /* vim: set filetype=php: */ -?> diff --git a/t/inc/Licenses.t b/t/inc/Licenses.t index 7e9f67c89f..81e7abe9aa 100644 --- a/t/inc/Licenses.t +++ b/t/inc/Licenses.t @@ -1,6 +1,6 @@ #!/usr/bin/env php html; /* vim: set filetype=php: */ -?> diff --git a/t/inc/Parser.t b/t/inc/Parser.t new file mode 100644 index 0000000000..9df21d9a50 --- /dev/null +++ b/t/inc/Parser.t @@ -0,0 +1,39 @@ +#!/usr/bin/env php +showProgress = false; +$tester->showFailure = false; +$tester->recorder = new ProveTestRecorder( $tester->term ); + +// Do not output the number of tests, if will be done automatically at the end + +$tester->runTestsFromFiles( $wgParserTestFiles ); + +/* vim: set filetype=php: */ diff --git a/t/inc/Sanitizer.t b/t/inc/Sanitizer.t index 601f8a8842..ae2c9a23d0 100644 --- a/t/inc/Sanitizer.t +++ b/t/inc/Sanitizer.t @@ -1,7 +1,7 @@ #!/usr/bin/env php diff --git a/t/inc/Title.t b/t/inc/Title.t index 53ebfcd8b7..7373b9f23f 100644 --- a/t/inc/Title.t +++ b/t/inc/Title.t @@ -1,7 +1,7 @@ #!/usr/bin/env php diff --git a/t/inc/Xml.t b/t/inc/Xml.t index 527cd7f569..b7cef881ad 100644 --- a/t/inc/Xml.t +++ b/t/inc/Xml.t @@ -1,7 +1,7 @@ #!/usr/bin/env php ', 'closeElement() shortcut' ); /* vim: set filetype=php: */ -?> -- 2.20.1