run.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php namespace thiagoalessio\TesseractOCR\Tests;
  2. require_once __DIR__.'/../vendor/autoload.php';
  3. if (in_array('unit', $argv)) {
  4. foreach(glob(__DIR__.'/Unit/*Test.php') as $file) require_once $file;
  5. foreach(glob(__DIR__.'/Unit/**/*Test.php') as $file) require_once $file;
  6. }
  7. if (in_array('e2e', $argv))
  8. foreach(glob(__DIR__.'/EndToEnd/*.php') as $file) require_once $file;
  9. // setting up code coverage
  10. if (extension_loaded('xdebug')) {
  11. if (class_exists('\PHP_CodeCoverage')) {
  12. $coverage = new \PHP_CodeCoverage;
  13. $coverage->filter()->addDirectoryToWhitelist('./src');
  14. } else {
  15. $filter = new \SebastianBergmann\CodeCoverage\Filter;
  16. $filter->includeDirectory('./src');
  17. $selector = new \SebastianBergmann\CodeCoverage\Driver\Selector;
  18. $coverage = new \SebastianBergmann\CodeCoverage\CodeCoverage(
  19. $selector->forLineCoverage($filter),
  20. $filter
  21. );
  22. }
  23. $coverage->start('tests');
  24. }
  25. // running tests
  26. $isTest = function($class) {
  27. return strstr($class, __NAMESPACE__) && !strstr($class, 'Common');
  28. };
  29. $tests = array_filter(get_declared_classes(), $isTest);
  30. $rc = 0;
  31. foreach ($tests as $test) {
  32. echo str_replace(__NAMESPACE__.'\\', '', $test), PHP_EOL;
  33. $testInstance = new $test;
  34. $results = $testInstance->run();
  35. foreach ($results as $name => $result) {
  36. switch ($result['status']) {
  37. case 'fail':
  38. $status = "\033[31m✕";
  39. break;
  40. case 'pass':
  41. $status = "\033[32m✓";
  42. break;
  43. case 'skip':
  44. $status = "\033[33m‖";
  45. break;
  46. }
  47. echo "\t{$status} {$name}\033[0m", PHP_EOL;
  48. if ($result['status'] == 'fail') {
  49. $rc++;
  50. echo "\033[35m{$result['msg']}\033[0m", PHP_EOL;
  51. }
  52. }
  53. echo PHP_EOL;
  54. }
  55. // saving coverage results
  56. if (isset($coverage)) {
  57. $coverage->stop();
  58. $reportClass = class_exists('\PHP_CodeCoverage_Report_Clover')
  59. ? '\PHP_CodeCoverage_Report_Clover'
  60. : '\SebastianBergmann\CodeCoverage\Report\Clover';
  61. $writer = new $reportClass;
  62. $writer->process($coverage, 'coverage.xml');
  63. // dev
  64. //$reportClass = class_exists('\PHP_CodeCoverage_Report_HTML')
  65. // ? '\PHP_CodeCoverage_Report_HTML'
  66. // : '\SebastianBergmann\CodeCoverage\Report\Html\Facade';
  67. //$writer = new $reportClass;
  68. //@$writer->process($coverage, 'coverage-report');
  69. }
  70. exit($rc);