From 3d9dd47789802a70e04bb1724681bbb5fb0cdb47 Mon Sep 17 00:00:00 2001 From: Alexey Kopytko Date: Tue, 25 Aug 2020 03:53:31 +0900 Subject: [PATCH] Allow fractional values for timeout --- resources/schema.json | 4 ++-- src/Configuration/Configuration.php | 6 +++--- src/Configuration/Schema/SchemaConfiguration.php | 6 +++--- tests/phpunit/Configuration/ConfigurationAssertions.php | 2 +- tests/phpunit/Configuration/ConfigurationTest.php | 6 +++--- .../Configuration/Schema/SchemaConfigurationTest.php | 4 ++-- tests/phpunit/Configuration/Schema/SchemaValidatorTest.php | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/resources/schema.json b/resources/schema.json index b0b230f0f..605e3ca71 100644 --- a/resources/schema.json +++ b/resources/schema.json @@ -7,9 +7,9 @@ ], "properties": { "timeout": { - "type": "integer", + "type": "number", "description": "The allowed timeout in seconds.", - "minimum": "1" + "minimum": "0" }, "source": { "type": "object", diff --git a/src/Configuration/Configuration.php b/src/Configuration/Configuration.php index f6598a7a3..a51524e52 100644 --- a/src/Configuration/Configuration.php +++ b/src/Configuration/Configuration.php @@ -89,7 +89,7 @@ class Configuration * @param array $mutators */ public function __construct( - int $timeout, + float $timeout, array $sourceDirectories, iterable $sourceFiles, string $sourceFilesFilter, @@ -117,7 +117,7 @@ public function __construct( int $threadCount, bool $dryRun ) { - Assert::nullOrGreaterThanEq($timeout, 1); + Assert::nullOrGreaterThanEq($timeout, 0); Assert::allString($sourceDirectories); Assert::allIsInstanceOf($mutators, Mutator::class); Assert::oneOf($logVerbosity, self::LOG_VERBOSITY); @@ -154,7 +154,7 @@ public function __construct( $this->dryRun = $dryRun; } - public function getProcessTimeout(): int + public function getProcessTimeout(): float { return $this->timeout; } diff --git a/src/Configuration/Schema/SchemaConfiguration.php b/src/Configuration/Schema/SchemaConfiguration.php index 955aba706..3ec9beca8 100644 --- a/src/Configuration/Schema/SchemaConfiguration.php +++ b/src/Configuration/Schema/SchemaConfiguration.php @@ -66,7 +66,7 @@ final class SchemaConfiguration */ public function __construct( string $file, - ?int $timeout, + ?float $timeout, Source $source, Logs $logs, ?string $tmpDir, @@ -80,7 +80,7 @@ public function __construct( ?string $initialTestsPhpOptions, ?string $testFrameworkExtraOptions ) { - Assert::nullOrGreaterThanEq($timeout, 1); + Assert::nullOrGreaterThanEq($timeout, 0); Assert::nullOrOneOf($testFramework, TestFrameworkTypes::TYPES); $this->file = $file; @@ -104,7 +104,7 @@ public function getFile(): string return $this->file; } - public function getTimeout(): ?int + public function getTimeout(): ?float { return $this->timeout; } diff --git a/tests/phpunit/Configuration/ConfigurationAssertions.php b/tests/phpunit/Configuration/ConfigurationAssertions.php index 3605ec6da..55589d700 100644 --- a/tests/phpunit/Configuration/ConfigurationAssertions.php +++ b/tests/phpunit/Configuration/ConfigurationAssertions.php @@ -55,7 +55,7 @@ trait ConfigurationAssertions */ private function assertConfigurationStateIs( Configuration $configuration, - ?int $expectedTimeout, + ?float $expectedTimeout, array $expectedSourceDirectories, array $expectedSourceFiles, string $expectedFilter, diff --git a/tests/phpunit/Configuration/ConfigurationTest.php b/tests/phpunit/Configuration/ConfigurationTest.php index b58ede4ce..e9c84559b 100644 --- a/tests/phpunit/Configuration/ConfigurationTest.php +++ b/tests/phpunit/Configuration/ConfigurationTest.php @@ -59,7 +59,7 @@ final class ConfigurationTest extends TestCase * @param Mutator[] $mutators */ public function test_it_can_be_instantiated( - int $timeout, + float $timeout, array $sourceDirectories, array $sourceFiles, string $sourceFileFilter, @@ -152,7 +152,7 @@ public function test_it_can_be_instantiated( public function valueProvider(): iterable { yield 'empty' => [ - 10, + 10., [], [], '', @@ -182,7 +182,7 @@ public function valueProvider(): iterable ]; yield 'nominal' => [ - 1, + 1., ['src', 'lib'], [ new SplFileInfo('Foo.php', 'Foo.php', 'Foo.php'), diff --git a/tests/phpunit/Configuration/Schema/SchemaConfigurationTest.php b/tests/phpunit/Configuration/Schema/SchemaConfigurationTest.php index 5b91589ab..016b22967 100644 --- a/tests/phpunit/Configuration/Schema/SchemaConfigurationTest.php +++ b/tests/phpunit/Configuration/Schema/SchemaConfigurationTest.php @@ -49,7 +49,7 @@ final class SchemaConfigurationTest extends TestCase */ public function test_it_can_be_instantiated( string $path, - ?int $timeout, + ?float $timeout, Source $source, Logs $logs, ?string $tmpDir, @@ -117,7 +117,7 @@ public function valueProvider(): iterable yield 'complete' => [ '/path/to/config', - 10, + 10., new Source(['src', 'lib'], ['fixtures', 'tests']), new Logs( 'text.log', diff --git a/tests/phpunit/Configuration/Schema/SchemaValidatorTest.php b/tests/phpunit/Configuration/Schema/SchemaValidatorTest.php index 495ec6014..8b0baebbe 100644 --- a/tests/phpunit/Configuration/Schema/SchemaValidatorTest.php +++ b/tests/phpunit/Configuration/Schema/SchemaValidatorTest.php @@ -98,7 +98,7 @@ public function configProvider(): iterable <<<'ERROR' "/path/to/config" does not match the expected JSON schema: - [source] The property source is required - - [timeout] String value found, but an integer is required + - [timeout] String value found, but a number is required ERROR , ];