From 0dab97eb4db705372723aff979738dcd4dcc492c Mon Sep 17 00:00:00 2001 From: Aydin Hassan Date: Thu, 28 Jan 2016 19:36:45 +0000 Subject: [PATCH 1/3] Make sure to configure exercise when in run mode --- src/ExerciseDispatcher.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ExerciseDispatcher.php b/src/ExerciseDispatcher.php index b1399aee..62fc9d3b 100644 --- a/src/ExerciseDispatcher.php +++ b/src/ExerciseDispatcher.php @@ -173,6 +173,7 @@ public function verify(ExerciseInterface $exercise, $fileName) */ public function run(ExerciseInterface $exercise, $fileName, OutputInterface $output) { + $exercise->configure($this); $this->eventDispatcher->dispatch(new Event('run.start', compact('exercise', 'fileName'))); $exitStatus = $this->runnerFactory From 9bb716b328c98d8b546868f71e6f3f6ded5262c3 Mon Sep 17 00:00:00 2001 From: Aydin Hassan Date: Thu, 28 Jan 2016 21:25:49 +0000 Subject: [PATCH 2/3] Dispatch event when executing in run mode --- src/Event/CgiExecuteEvent.php | 6 ++++-- src/Event/CliExecuteEvent.php | 6 ++++-- src/ExerciseRunner/CgiRunner.php | 6 ++++-- src/ExerciseRunner/CliRunner.php | 4 +++- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/Event/CgiExecuteEvent.php b/src/Event/CgiExecuteEvent.php index 1ad970b6..6b78c370 100644 --- a/src/Event/CgiExecuteEvent.php +++ b/src/Event/CgiExecuteEvent.php @@ -21,10 +21,12 @@ class CgiExecuteEvent extends Event /** * @param string $name * @param RequestInterface $request + * @param array $parameters */ - public function __construct($name, RequestInterface $request) + public function __construct($name, RequestInterface $request, array $parameters = []) { - parent::__construct($name, ['request' => $request]); + $parameters['request'] = $request; + parent::__construct($name, $parameters); $this->request = $request; } diff --git a/src/Event/CliExecuteEvent.php b/src/Event/CliExecuteEvent.php index 202d2a72..0743519c 100644 --- a/src/Event/CliExecuteEvent.php +++ b/src/Event/CliExecuteEvent.php @@ -20,10 +20,12 @@ class CliExecuteEvent extends Event /** * @param string $name * @param ArrayObject $args + * @param array $parameters */ - public function __construct($name, ArrayObject $args) + public function __construct($name, ArrayObject $args, array $parameters = []) { - parent::__construct($name, ['args' => $args]); + $parameters['args'] = $args; + parent::__construct($name, $parameters); $this->args = $args; } diff --git a/src/ExerciseRunner/CgiRunner.php b/src/ExerciseRunner/CgiRunner.php index 7b265e50..7179322b 100644 --- a/src/ExerciseRunner/CgiRunner.php +++ b/src/ExerciseRunner/CgiRunner.php @@ -193,7 +193,7 @@ public function run($fileName, OutputInterface $output) { $success = true; foreach ($this->exercise->getRequests() as $i => $request) { - $event = $this->eventDispatcher->dispatch(new CgiExecuteEvent('cgi.run.usr-execute.pre', $request)); + $event = $this->eventDispatcher->dispatch(new CgiExecuteEvent('cgi.run.user-execute.pre', $request)); $process = $this->getProcess($fileName, $event->getRequest()); $output->writeTitle("Request"); @@ -202,7 +202,9 @@ public function run($fileName, OutputInterface $output) $output->writeTitle("Output"); $output->emptyLine(); - $process->run(function ($outputType, $outputBuffer) use ($output) { + $process->start(); + $this->eventDispatcher->dispatch(new CgiExecuteEvent('cgi.run.executing', $request, ['output' => $output])); + $process->wait(function ($outputType, $outputBuffer) use ($output) { $output->write($outputBuffer); }); $output->emptyLine(); diff --git a/src/ExerciseRunner/CliRunner.php b/src/ExerciseRunner/CliRunner.php index 7a24a30c..f1a476d7 100644 --- a/src/ExerciseRunner/CliRunner.php +++ b/src/ExerciseRunner/CliRunner.php @@ -145,7 +145,9 @@ public function run($fileName, OutputInterface $output) $output->writeTitle("\nOutput"); $process = $this->getPhpProcess($fileName, $args); - $process->run(function ($outputType, $outputBuffer) use ($output) { + $process->start(); + $this->eventDispatcher->dispatch(new CliExecuteEvent('cli.run.executing', $args, ['output' => $output])); + $process->wait(function ($outputType, $outputBuffer) use ($output) { $output->writeLine($outputBuffer); }); From 8447c12a16865e8dab089681a3035529d14b425a Mon Sep 17 00:00:00 2001 From: Aydin Hassan Date: Thu, 28 Jan 2016 21:51:55 +0000 Subject: [PATCH 3/3] Remove new line --- src/ExerciseRunner/CliRunner.php | 2 +- test/ExerciseRunner/CliRunnerTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ExerciseRunner/CliRunner.php b/src/ExerciseRunner/CliRunner.php index f1a476d7..6fd03cac 100644 --- a/src/ExerciseRunner/CliRunner.php +++ b/src/ExerciseRunner/CliRunner.php @@ -143,7 +143,7 @@ public function run($fileName, OutputInterface $output) $output->write(implode($glue, $args->getArrayCopy())); } - $output->writeTitle("\nOutput"); + $output->writeTitle("Output"); $process = $this->getPhpProcess($fileName, $args); $process->start(); $this->eventDispatcher->dispatch(new CliExecuteEvent('cli.run.executing', $args, ['output' => $output])); diff --git a/test/ExerciseRunner/CliRunnerTest.php b/test/ExerciseRunner/CliRunnerTest.php index 487b070f..e967a27f 100644 --- a/test/ExerciseRunner/CliRunnerTest.php +++ b/test/ExerciseRunner/CliRunnerTest.php @@ -136,7 +136,7 @@ public function testRunPassesOutputAndReturnsSuccessIfScriptIsSuccessful() $exp = "\n\e[1m\e[4mArguments\e[0m\e[0m\n"; $exp .= "1, 2, 3\n"; - $exp .= "\e[1m\e[4m\n"; + $exp .= "\e[1m\e[4m"; $exp .= "Output\e[0m\e[0m\n"; $exp .= "6\n";