X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=vendor%2Fgabordemooij%2Fredbean%2Ftesting%2Fcli%2Fruntests.php;fp=vendor%2Fgabordemooij%2Fredbean%2Ftesting%2Fcli%2Fruntests.php;h=8f75b5635f1468723a24d1cd3ea498a7540cfe50;hb=eba34333e3c89f208d2f72fa91351ad019a71583;hp=0000000000000000000000000000000000000000;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;p=yaffs-website diff --git a/vendor/gabordemooij/redbean/testing/cli/runtests.php b/vendor/gabordemooij/redbean/testing/cli/runtests.php new file mode 100644 index 000000000..8f75b5635 --- /dev/null +++ b/vendor/gabordemooij/redbean/testing/cli/runtests.php @@ -0,0 +1,312 @@ + '0;31', + 'pgsql' => '0;32', + 'sqlite' => '0;34', +); + +@include 'cli/test_hook.php'; + +//Configure the databases +if ( isset( $ini['mysql'] ) ) { + $dsn = "mysql:host={$ini['mysql']['host']};dbname={$ini['mysql']['schema']}"; + + R::addDatabase( 'mysql', $dsn, $ini['mysql']['user'], $ini['mysql']['pass'], FALSE ); + + R::selectDatabase( 'mysql' ); + + R::exec( ' SET GLOBAL sql_mode="" ' ); +} + +//HHVM on Travis does not yet support PostgreSQL. +if ( defined( 'HHVM_VERSION' ) ) { + unset( $ini['pgsql'] ); +} else { + if ( isset( $ini['pgsql'] ) ) { + $dsn = "pgsql:host={$ini['pgsql']['host']};dbname={$ini['pgsql']['schema']}"; + R::addDatabase( 'pgsql', $dsn, $ini['pgsql']['user'], $ini['pgsql']['pass'], FALSE ); + } +} + +if ( isset( $ini['sqlite'] ) ) { + R::addDatabase( 'sqlite', 'sqlite:' . $ini['sqlite']['file'], NULL, NULL, FALSE ); +} + +R::selectDatabase( 'sqlite' ); + +// Function to activate a driver +function activate_driver( $d ) +{ + R::selectDatabase( $d ); +} + +$arguments = $_SERVER['argc']; + +$mode = 'all'; +if ( $arguments > 1 ) { + $mode = $_SERVER['argv'][1]; +} + +$classSpec = null; +if ( $arguments > 2 ) { + $classSpec = $_SERVER['argv'][2]; +} + +$covFilter = null; +if ( $arguments > 3 ) { + $covFilter = $_SERVER['argv'][3]; +} + +$path = 'RedUNIT/'; + +// Possible Selections +$packList = array(); + +$allPacks = array( + 'Blackhole/Version', + 'Blackhole/Toolbox', + 'Blackhole/Fusebox', + 'Blackhole/Labels', + 'Blackhole/Tainted', + 'Blackhole/Meta', + 'Blackhole/Import', + 'Blackhole/Export', + 'Blackhole/Glue', + 'Blackhole/Plugins', + 'Blackhole/Debug', + 'Base/Dispense', + 'Base/Logging', + 'Base/Cursors', + 'Base/Indexes', + 'Base/Issue408', + 'Base/Threeway', + 'Base/Chill', + 'Base/Arrays', + 'Base/Boxing', + 'Base/Typechecking', + 'Base/Observers', + 'Base/Database', + 'Base/Foreignkeys', + 'Base/Namedparams', + 'Base/Prefixes', + 'Base/Copy', + 'Base/Dup', + 'Base/Update', + 'Base/Utf8', + 'Base/Batch', + 'Base/Bean', + 'Base/Writecache', + 'Base/Relations', + 'Base/Association', + 'Base/Aliasing', + 'Base/Cross', + 'Base/Finding', + 'Base/Facade', + 'Base/Frozen', + 'Base/Fuse', + 'Base/Tags', + 'Base/Xnull', + 'Base/Largenum', + 'Base/Issue90', + 'Base/Issue259', + 'Base/Issue303', + 'Base/Nuke', + 'Base/Keywords', + 'Base/Count', + 'Base/With', + 'Base/Joins', + 'Base/Traverse', + 'Base/Misc', + 'Base/Via', + 'Base/PullRequest530', + 'Mysql/Preexist', + 'Mysql/Double', + 'Mysql/Writer', + 'Mysql/Freeze', + 'Mysql/Setget', + 'Mysql/Foreignkeys', + 'Mysql/Parambind', + 'Mysql/Uuid', + 'Mysql/Bigint', + 'Mysql/Issue411', + 'Postgres/Setget', + 'Postgres/Foreignkeys', + 'Postgres/Parambind', + 'Postgres/Writer', + 'Postgres/Uuid', + 'Postgres/Bigint', + 'Sqlite/Setget', + 'Sqlite/Foreignkeys', + 'Sqlite/Parambind', + 'Sqlite/Writer', + 'Sqlite/Rebuild', +); + +$suffix = array( + 'Blackhole/Misc', + 'Base/Close' +); + +// Default (mode == all) +if ( $mode == 'all' ) { + $packList = $allPacks; +} else { + foreach ( $allPacks as $pack ) { + if ( strpos( $pack, $mode ) === 0 ) $packList[] = $pack; + } + //Add plugin pack to list. + if ( count($packList) === 0 && count($extraTestsFromHook) === 0 ) { + $packList[] = $mode; + } +} + +// Always include the last ones. +$packList = array_unique(array_merge( $packList, $suffix, $extraTestsFromHook )); +$j = 0; +foreach ( $packList as $testPack ) { + $j++; + if ( file_exists( $path . $testPack . '.php' ) ) require( $path . $testPack . '.php' ); + elseif ( file_exists( $hookPath . $testPack . '.php') ) require( $hookPath . $testPack . '.php' ); + $testPack = str_replace( '../', '', $testPack ); + if ($j === 1 && $classSpec) { + $testClass = $classSpec; + } else { + $testClassName = str_replace( ' ', '\\', ( str_replace( '/', ' ', $testPack ) ) ); + $testClass = '\\RedUNIT\\' . ucfirst( $testClassName ); + } + $test = new $testClass(); + $drivers = $test->getTargetDrivers(); + maintestpack( str_replace( '_', ' ', get_class( $test ) ) ); + $round = 0; + $test->setRound( $round ); + if ( $drivers && is_array( $drivers ) ) { + foreach ( $drivers as $driver ) { + if ( !isset( $ini[$driver] ) ) continue; + echo PHP_EOL; + echo '===== DRIVER : (' . $driver . ') ====='; + echo PHP_EOL; + echo PHP_EOL; + if ( isset( $colorMap[$driver] ) ) { + echo "\033[{$colorMap[$driver]}m"; + } + activate_driver( $driver ); + $currentDriver = $driver; + $test->setCurrentDriver( $driver ); + $test->prepare(); + $test->run(); + $test->cleanUp(); + if ( isset ( $colorMap[$driver] ) ) { + echo "\033[0m"; + } + echo PHP_EOL; + $test->setRound( ++$round ); + } + } else { + $test->prepare(); + $test->run(); + $test->cleanUp(); + } +} + +if (!$xdebugSupported) { + echo 'Done. No report - XDEBUG not installed.'; + exit(0); +} + +$report = xdebug_get_code_coverage(); +$misses = 0; +$hits = 0; + +$covLines = array(); +foreach( $report as $file => $lines ) { + + $pi = pathinfo( $file ); + + if ( $covFilter !== null ) { + if ( strpos( $file, $covFilter ) === false ) continue; + } else { + if ( strpos( $file, '/rb.php' ) === false) { + if ( strpos( $file, 'phar/' ) === false ) continue; + if ( strpos( $file, '.php' ) === false ) continue; + if ( strpos( $file, 'RedBeanPHP' ) === false ) continue; + } + } + $covLines[] = '***** File:'.$file.' ******'; + $fileData = file_get_contents( $file ); + $fileLines = explode( "\n", $fileData ); + $i = 1; + foreach( $fileLines as $covLine ) { + if ( isset( $lines [$i] ) ) { + if ( $lines[$i] === 1 ) { + $covLines[] = '[ OK ] '.$covLine; + $hits ++; + } else if ( $lines[$i] === -1 ){ + $covLines[] = '[ MISSED! ] '.$covLine; + $misses ++; + } else { + $covLines[] = '[ - ] '.$covLine; + } + } else { + $covLines[] = '[ - ] '.$covLine; + } + $i ++; + } +} +$covFile = implode( "\n", $covLines ); +@file_put_contents( 'cli/coverage_log.txt', $covFile ); +if ( $hits > 0 ) { + $perc = ( $hits / ( $hits + $misses ) ) * 100; +} else { + $perc = 0; +} +echo 'Code Coverage: '.PHP_EOL; +echo 'Hits: '.$hits.PHP_EOL; +echo 'Misses: '.$misses.PHP_EOL; +echo 'Percentage: '.$perc.' %'.PHP_EOL; +exit( 0 );