<?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";