Skip to content
Snippets Groups Projects
run-tests.php 1.37 KiB
Newer Older
#!/usr/bin/env php
<?php
if (php_sapi_name() != 'cli') exit();

require_once "tests/class.test.php";

function get_osticket_root_path() {
    # Hop up to the root folder
    $start = dirname(__file__);
    for (;;) {
        if (file_exists($start . '/main.inc.php')) break;
        $start .= '/..';
    }
    return realpath($start);
}
$root = get_osticket_root_path();

# Check PHP syntax across all php files
function glob_recursive($pattern, $flags = 0) {
    $files = glob($pattern, $flags);
    foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) {
        $files = array_merge($files, 
            glob_recursive($dir.'/'.basename($pattern), $flags));
    }
    return $files;
}

$fails = array();
foreach (glob_recursive(dirname(__file__)."/tests/test.*.php") as $t) {
    if (strpos($t,"class.") !== false)
        continue;
    $class = (include $t);
    if (!is_string($class))
        continue;
    $test = new $class();
    echo "Running: " . $test->name . "\n";
    $test->run();
    $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");
    }
}

?>