Skip to content

Commit 87e91b8

Browse files
committed
Merge pull request #83 from php-school/run-events
Run executing events + bug fixes
2 parents 10f557e + 8447c12 commit 87e91b8

File tree

6 files changed

+18
-9
lines changed

6 files changed

+18
-9
lines changed

src/Event/CgiExecuteEvent.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,12 @@ class CgiExecuteEvent extends Event
2121
/**
2222
* @param string $name
2323
* @param RequestInterface $request
24+
* @param array $parameters
2425
*/
25-
public function __construct($name, RequestInterface $request)
26+
public function __construct($name, RequestInterface $request, array $parameters = [])
2627
{
27-
parent::__construct($name, ['request' => $request]);
28+
$parameters['request'] = $request;
29+
parent::__construct($name, $parameters);
2830
$this->request = $request;
2931
}
3032

src/Event/CliExecuteEvent.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ class CliExecuteEvent extends Event
2020
/**
2121
* @param string $name
2222
* @param ArrayObject $args
23+
* @param array $parameters
2324
*/
24-
public function __construct($name, ArrayObject $args)
25+
public function __construct($name, ArrayObject $args, array $parameters = [])
2526
{
26-
parent::__construct($name, ['args' => $args]);
27+
$parameters['args'] = $args;
28+
parent::__construct($name, $parameters);
2729
$this->args = $args;
2830
}
2931

src/ExerciseDispatcher.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ public function verify(ExerciseInterface $exercise, $fileName)
173173
*/
174174
public function run(ExerciseInterface $exercise, $fileName, OutputInterface $output)
175175
{
176+
$exercise->configure($this);
176177
$this->eventDispatcher->dispatch(new Event('run.start', compact('exercise', 'fileName')));
177178

178179
$exitStatus = $this->runnerFactory

src/ExerciseRunner/CgiRunner.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ public function run($fileName, OutputInterface $output)
193193
{
194194
$success = true;
195195
foreach ($this->exercise->getRequests() as $i => $request) {
196-
$event = $this->eventDispatcher->dispatch(new CgiExecuteEvent('cgi.run.usr-execute.pre', $request));
196+
$event = $this->eventDispatcher->dispatch(new CgiExecuteEvent('cgi.run.user-execute.pre', $request));
197197
$process = $this->getProcess($fileName, $event->getRequest());
198198

199199
$output->writeTitle("Request");
@@ -202,7 +202,9 @@ public function run($fileName, OutputInterface $output)
202202

203203
$output->writeTitle("Output");
204204
$output->emptyLine();
205-
$process->run(function ($outputType, $outputBuffer) use ($output) {
205+
$process->start();
206+
$this->eventDispatcher->dispatch(new CgiExecuteEvent('cgi.run.executing', $request, ['output' => $output]));
207+
$process->wait(function ($outputType, $outputBuffer) use ($output) {
206208
$output->write($outputBuffer);
207209
});
208210
$output->emptyLine();

src/ExerciseRunner/CliRunner.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,11 @@ public function run($fileName, OutputInterface $output)
143143
$output->write(implode($glue, $args->getArrayCopy()));
144144
}
145145

146-
$output->writeTitle("\nOutput");
146+
$output->writeTitle("Output");
147147
$process = $this->getPhpProcess($fileName, $args);
148-
$process->run(function ($outputType, $outputBuffer) use ($output) {
148+
$process->start();
149+
$this->eventDispatcher->dispatch(new CliExecuteEvent('cli.run.executing', $args, ['output' => $output]));
150+
$process->wait(function ($outputType, $outputBuffer) use ($output) {
149151
$output->writeLine($outputBuffer);
150152
});
151153

test/ExerciseRunner/CliRunnerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public function testRunPassesOutputAndReturnsSuccessIfScriptIsSuccessful()
136136

137137
$exp = "\n\e[1m\e[4mArguments\e[0m\e[0m\n";
138138
$exp .= "1, 2, 3\n";
139-
$exp .= "\e[1m\e[4m\n";
139+
$exp .= "\e[1m\e[4m";
140140
$exp .= "Output\e[0m\e[0m\n";
141141
$exp .= "6\n";
142142

0 commit comments

Comments
 (0)