Skip to content

Commit 7bc420e

Browse files
committed
Update CLI result renderer to look similar to CGI
1 parent a8e4a15 commit 7bc420e

File tree

2 files changed

+50
-2
lines changed

2 files changed

+50
-2
lines changed

src/ResultRenderer/CliResultRenderer.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,22 @@ public function render(ResultsRenderer $renderer)
4343
});
4444

4545
$output = '';
46+
if (count($results)) {
47+
$output .= $renderer->center("Some executions of your solution produced incorrect output!\n");
48+
}
49+
50+
/** @var FailureInterface $request **/
4651
foreach ($results as $key => $request) {
47-
$output .= $renderer->renderResult($request) . "\n";
52+
$output .= $renderer->lineBreak();
53+
$output .= "\n";
54+
$output .= $renderer->style(sprintf('Execution %d', $key + 1), ['bold', 'underline', 'blue']);
55+
$output .= ' ' . $renderer->style(' FAILED ', ['bg_red', 'bold']) . "\n\n";
56+
57+
$output .= $request->getArgs()->isEmpty()
58+
? "Arguments: None\n"
59+
: sprintf("Arguments: \"%s\"\n", $request->getArgs()->implode('", "'));
60+
61+
$output .= "\n" . $renderer->renderResult($request) . "\n";
4862
}
4963

5064
return $output;

test/ResultRenderer/CliResultRendererTest.php

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,41 @@ function (RequestFailure $failure) use ($failureRenderer) {
4444
$result = new CliResult([$failure]);
4545
$renderer = new CliResultRenderer($result, new RequestRenderer);
4646

47-
$expected = "REQUEST FAILURE\n\n";
47+
$expected = "Some executions of your solution produced incorrect output!\n";
48+
$expected .= "\e[33m──────────────────────────────────────────────────\e[0m\n";
49+
$expected .= "\e[34m\e[4m\e[1mExecution 1\e[0m\e[0m\e[0m \e[1m\e[41m FAILED \e[0m\e[0m\n";
50+
$expected .= "\n";
51+
$expected .= "Arguments: None\n\nREQUEST FAILURE\n\n";
52+
53+
$this->assertSame($expected, $renderer->render($this->getRenderer()));
54+
}
55+
56+
public function testRenderWithFailedRequestWithMultipleArgs()
57+
{
58+
$failureRenderer = $this->prophesize(RequestFailureRenderer::class);
59+
$failureRenderer->render($this->getRenderer())->willReturn("REQUEST FAILURE\n");
60+
61+
$this->getResultRendererFactory()->registerRenderer(
62+
RequestFailure::class,
63+
RequestFailureRenderer::class,
64+
function (RequestFailure $failure) use ($failureRenderer) {
65+
return $failureRenderer->reveal();
66+
}
67+
);
68+
69+
$failure = new RequestFailure(
70+
new ArrayObject(['one', 'two', 'three']),
71+
'EXPECTED OUTPUT',
72+
'ACTUAL OUTPUT'
73+
);
74+
$result = new CliResult([$failure]);
75+
$renderer = new CliResultRenderer($result, new RequestRenderer);
76+
77+
$expected = "Some executions of your solution produced incorrect output!\n";
78+
$expected .= "\e[33m──────────────────────────────────────────────────\e[0m\n";
79+
$expected .= "\e[34m\e[4m\e[1mExecution 1\e[0m\e[0m\e[0m \e[1m\e[41m FAILED \e[0m\e[0m\n";
80+
$expected .= "\n";
81+
$expected .= "Arguments: \"one\", \"two\", \"three\"\n\nREQUEST FAILURE\n\n";
4882

4983
$this->assertSame($expected, $renderer->render($this->getRenderer()));
5084
}

0 commit comments

Comments
 (0)