diff --git a/setup/test/run-tests.php b/setup/test/run-tests.php index 45f8859a3be5f72d6853d862575ff1333966495b..0f42dd7d024f04bf03d87a8b5611a3b658c6953e 100644 --- a/setup/test/run-tests.php +++ b/setup/test/run-tests.php @@ -19,13 +19,37 @@ $root = get_osticket_root_path(); function glob_recursive($pattern, $flags = 0) { $files = glob($pattern, $flags); foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) { - $files = array_merge($files, + $files = array_merge($files, glob_recursive($dir.'/'.basename($pattern), $flags)); } return $files; } $fails = array(); + +function show_fails() { + global $fails, $root; + if ($fails) { + echo count($fails) . " FAIL(s)\n"; + echo "-------------------------------------------------------\n"; + foreach ($fails as $f) { + list($test, $script, $line, $message) = $f; + $script = str_replace($root.'/', '', $script); + print("$test: $message @ $script:$line\n"); + } + } +} +if (function_exists('pcntl_signal')) { + declare(ticks=1); + function show_fails_on_ctrlc() { + while (@ob_end_flush()); + print("\n"); + show_fails(); + exit(); + } + pcntl_signal(SIGINT, 'show_fails_on_ctrlc'); +} + foreach (glob_recursive(dirname(__file__)."/tests/test.*.php") as $t) { if (strpos($t,"class.") !== false) continue; @@ -38,15 +62,6 @@ foreach (glob_recursive(dirname(__file__)."/tests/test.*.php") as $t) { $fails = array_merge($fails, $test->fails); echo " ok\n"; } - -if ($fails) { - echo count($fails) . " FAIL(s)\n"; - echo "-------------------------------------------------------\n"; - foreach ($fails as $f) { - list($test, $script, $line, $message) = $f; - $script = str_replace($root.'/', '', $script); - print("$test: $message @ $script:$line\n"); - } -} +show_fails(); ?>