diff --git a/RoboFile.php b/RoboFile.php index 119c23f..ae515db 100644 --- a/RoboFile.php +++ b/RoboFile.php @@ -11,18 +11,44 @@ class RoboFile extends \Robo\Tasks { const BASE = __DIR__.\DIRECTORY_SEPARATOR; const BASE_TEST = self::BASE."tests".\DIRECTORY_SEPARATOR; + /** Runs the full test suite */ public function test(array $args): Result { // start the built-in PHP server, which is required for some of the tests $this->taskServer(8000)->host("localhost")->dir(self::BASE_TEST."docroot")->rawArg("-n")->arg(self::BASE_TEST."server.php")->background()->run(); // run tests - return $this->taskPHPUnit()->configFile(self::BASE_TEST."phpunit.xml")->args($args)->run(); + $execpath = realpath(self::BASE."vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit"); + $confpath = realpath(self::BASE_TEST."phpunit.xml"); + return $this->taskExec("php")->arg($execpath)->option("-c", $confpath)->args($args)->run(); + } + + /** Runs a quick subset of the test suite */ + public function testQuick(array $args): Result { + return $this->test(array_merge(["--exclude-group","slow"], $args)); } public function coverage(array $args): Result { + // start the built-in PHP server, which is required for some of the tests + $this->taskServer(8000)->host("localhost")->dir(self::BASE_TEST."docroot")->rawArg("-n")->arg(self::BASE_TEST."server.php")->background()->run(); + // run tests with code coverage reporting enabled + $exec = $this->findCoverageEngine(); + $execpath = realpath(self::BASE."vendor-bin/phpunit/vendor/phpunit/phpunit/phpunit"); + $confpath = realpath(self::BASE_TEST."phpunit.xml"); + return $this->taskExec($exec)->arg($execpath)->option("-c", $confpath)->option("--coverage-html", self::BASE_TEST."coverage")->args($args)->run(); // run the test suite with code coverage reporting enabled return $this->test(array_merge(["--coverage-html",self::BASE_TEST."coverage"], $args)); } + protected function findCoverageEngine(): string { + $null = null; + $code = 0; + exec("phpdbg --version", $null, $code); + if (!$code) { + return "phpdbg -qrr"; + } else { + return "php"; + } + } + public function package(array $args): Result { // establish which commit to package $version = $args ? $args[0] : $this->askDefault("Commit to package:", "head"); diff --git a/lib/Misc/ValueInfo.php b/lib/Misc/ValueInfo.php index f4d765b..a025bb5 100644 --- a/lib/Misc/ValueInfo.php +++ b/lib/Misc/ValueInfo.php @@ -103,7 +103,7 @@ class ValueInfo { } else { return 0; } - break; + break; // @codeCoverageIgnore case self::T_FLOAT: if (is_float($value)) { return $value; @@ -161,7 +161,7 @@ class ValueInfo { } else { return (string) $value; } - break; + break; // @codeCoverageIgnore case self::T_DATE: if ($value instanceof \DateTimeImmutable) { return $value->setTimezone(new \DateTimeZone("UTC")); @@ -239,7 +239,7 @@ class ValueInfo { return [$value]; } } - break; + break; // @codeCoverageIgnore default: throw new ExceptionType("typeUnknown", $type); // @codeCoverageIgnore } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 7a4a020..628bd3d 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -8,5 +8,5 @@ namespace JKingWeb\Arsse; const NS_BASE = __NAMESPACE__."\\"; define(NS_BASE."BASE", dirname(__DIR__).DIRECTORY_SEPARATOR); - +ini_set("memory_limit", "-1"); require_once BASE."vendor".DIRECTORY_SEPARATOR."autoload.php";