summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/AbuseFilter/tests/legacyParserTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/tests/legacyParserTest.php')
-rw-r--r--www/wiki/extensions/AbuseFilter/tests/legacyParserTest.php52
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";