diff options
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/tests/legacyParserTest.php')
-rw-r--r-- | www/wiki/extensions/AbuseFilter/tests/legacyParserTest.php | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/www/wiki/extensions/AbuseFilter/tests/legacyParserTest.php b/www/wiki/extensions/AbuseFilter/tests/legacyParserTest.php new file mode 100644 index 00000000..c3055c15 --- /dev/null +++ b/www/wiki/extensions/AbuseFilter/tests/legacyParserTest.php @@ -0,0 +1,52 @@ +<?php +/** + * Runs tests against the PHP parser. + */ + +require_once getenv( 'MW_INSTALL_PATH' ) !== false + ? getenv( 'MW_INSTALL_PATH' ) . "/maintenance/commandLine.inc" + : __DIR__ . '/../../../maintenance/commandLine.inc'; + +$tester = new AbuseFilterParser; + +$test_path = __DIR__ . "/parserTests"; +$tests = glob( $test_path . "/*.t" ); + +$check = 0; +$pass = 0; + +foreach ( $tests as $test ) { + $result = substr( $test, 0, -2 ) . ".r"; + + $rule = trim( file_get_contents( $test ) ); + $output = trim( file_get_contents( $result ) ) == 'MATCH'; + + $testname = basename( $test ); + + print "Trying test $testname...\n"; + + try { + $check++; + $actual = intval( $tester->parse( $rule ) ); + + if ( $actual == $output ) { + print "-PASSED.\n"; + $pass++; + } else { + print "-FAILED - expected output $output, actual output $actual.\n"; + print "-Expression: $rule\n"; + + // export + $vars = var_export( $tester->mTokens, true ); + file_put_contents( $test . '.parsed', $vars ); + } + } catch ( AFPException $excep ) { + print "-FAILED - exception " . $excep->getMessage() . " with input $rule\n"; + + // export + $vars = var_export( $tester->mTokens, true ); + file_put_contents( $test . '.parsed', $vars ); + } +} + +print "$pass tests passed out of $check\n"; |