From 29862f666b37c455d9f5298f39a9d0ba8dc0f609 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Tue, 14 Nov 2017 16:01:07 +0100 Subject: [PATCH] feat(test) Add the `--atoum-configuration-file` option. --- src/Bin/Test.php | 34 ++++++++++++++----- src/Compiler/Target/DocTest/Configuration.php | 11 ++++++ 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/Bin/Test.php b/src/Bin/Test.php index 757c92a..1769048 100644 --- a/src/Bin/Test.php +++ b/src/Bin/Test.php @@ -58,14 +58,15 @@ class Test extends Console\Dispatcher\Kit * Options description. */ protected $options = [ - ['configuration-file', Console\GetOption::REQUIRED_ARGUMENT, 'c'], - ['autoloader', Console\GetOption::REQUIRED_ARGUMENT, 'l'], - ['output-directory', Console\GetOption::REQUIRED_ARGUMENT, 'o'], - ['concurrent-processes', Console\GetOption::REQUIRED_ARGUMENT, 'p'], - ['bypass-cache', Console\GetOption::NO_ARGUMENT, 'C'], - ['verbose', Console\GetOption::NO_ARGUMENT, 'v'], - ['help', Console\GetOption::NO_ARGUMENT, 'h'], - ['help', Console\GetOption::NO_ARGUMENT, '?'] + ['configuration-file', Console\GetOption::REQUIRED_ARGUMENT, 'c'], + ['autoloader', Console\GetOption::REQUIRED_ARGUMENT, 'l'], + ['output-directory', Console\GetOption::REQUIRED_ARGUMENT, 'o'], + ['concurrent-processes', Console\GetOption::REQUIRED_ARGUMENT, 'p'], + ['bypass-cache', Console\GetOption::NO_ARGUMENT, 'C'], + ['atoum-configuration-file', Console\GetOption::REQUIRED_ARGUMENT, 'a'], + ['verbose', Console\GetOption::NO_ARGUMENT, 'v'], + ['help', Console\GetOption::NO_ARGUMENT, 'h'], + ['help', Console\GetOption::NO_ARGUMENT, '?'] ]; @@ -128,6 +129,15 @@ public function run(): int break; + case 'a': + if (false === file_exists($v)) { + throw new RuntimeException('Extra atoum configuration file `' . $v . '` does not exist.'); + } + + $configuration->atoumConfigurationFile = $v; + + break; + case 'v': $verbose = $v; @@ -255,6 +265,12 @@ public function run(): int ' --directories ' . escapeshellarg($outputDirectory); + if (!empty($configuration->atoumConfigurationFile)) { + $command .= + ' --configurations ' . + escapeshellarg($configuration->atoumConfigurationFile); + } + $processus = new Processus($command, null, null, getcwd(), $_SERVER); $processus->on( 'input', @@ -300,6 +316,8 @@ public function usage() 'o' => 'Directory that will receive the generated documentation test suites.', 'p' => 'Maximum concurrent processes that can run.', 'C' => 'Bypass the cache; compile test suites like it is for the first time.', + 'a' => 'atoum is used to execute the generated tests. This option adds an ' . + 'extra atoum configuration file after the one embedded inside Kitab.', 'v' => 'Be verbose (add some debug information).', 'help' => 'This help.' ]); diff --git a/src/Compiler/Target/DocTest/Configuration.php b/src/Compiler/Target/DocTest/Configuration.php index 2d50a1b..23c20c5 100644 --- a/src/Compiler/Target/DocTest/Configuration.php +++ b/src/Compiler/Target/DocTest/Configuration.php @@ -95,4 +95,15 @@ class Configuration extends Kitab\Configuration public $codeBlockHandlerNames = [ CodeBlockHandler\Php::class ]; + + /** + * atoum configuration file. + * + * Kitab uses [atoum](http://atoum.org/) to execute tests. Kitab comes + * with a default atoum configuration file, but it is possible to add + * another one that will be executed just after with the same context + * (variables & co.). It is useful to add specific atoum extensions for + * instance. + */ + public $atoumConfigurationFile = null; }