Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TestDox colorization #3439

Merged
merged 51 commits into from Dec 24, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
184175e
Added ANSI dim colors
epdenouden Nov 30, 2018
9c551e1
Use result success colors also to render test duration
epdenouden Dec 3, 2018
432c7c8
Mirror test result color in verbose duration. Colorize stacktraces.
epdenouden Dec 3, 2018
d56e314
Use built-in pretty print for error messages
epdenouden Dec 3, 2018
9ebba27
Underline test suite names
epdenouden Dec 3, 2018
363a3cb
WIP refactoring TestDox CLI printer
epdenouden Dec 5, 2018
ff663d1
Remove some dead code
epdenouden Dec 6, 2018
50693bb
Remove obsolete code for handling TestSuite setup failures
epdenouden Dec 6, 2018
4d0ec36
WIP refactor TestDox printer to allow for prettier output
epdenouden Dec 6, 2018
1a46f39
Make basic ANSI colors available in NamePrettifier. Colorize data sets.
epdenouden Dec 6, 2018
bd59324
Refactor colorization
epdenouden Dec 7, 2018
1db8387
Colorize @testdox annotation parameter values
epdenouden Dec 7, 2018
8ba1b43
Remove clutter from runtime when using color
epdenouden Dec 7, 2018
9082a29
Restore cacheResult configuration
epdenouden Dec 7, 2018
a0e2e9d
Add $_dataName parameter for @testdox with a dataprovider
epdenouden Dec 7, 2018
d51ad7a
Improve colorizer and add tests
epdenouden Dec 7, 2018
07f4816
Visiualize whitespace characters with dimmed interpuncts
epdenouden Dec 10, 2018
355f20b
Improve readability of @testdox and @dataprovider parameters
epdenouden Dec 10, 2018
ff9f1d7
CS/WS fixes and better @testdox annotations
epdenouden Dec 10, 2018
0abdb87
Do not highlight PHPT paths when colors are off
epdenouden Dec 10, 2018
83f0388
Improve colorization of test result messages
epdenouden Dec 10, 2018
a976be8
CS/WS fixes
epdenouden Dec 10, 2018
f0cb171
Fix missing testdox result. Add some more descriptive annotations.
epdenouden Dec 10, 2018
392fe39
Show empty string parameters in @testdox annotations
epdenouden Dec 10, 2018
93bc853
Improve description of named and unnamed dataprovider sets
epdenouden Dec 10, 2018
eb682c3
Add test for testdox parameter colorization
epdenouden Dec 10, 2018
ce45189
Fiddle with path to get Windows CI working
epdenouden Dec 10, 2018
47dad52
Add raw example output for ANSI colors test
epdenouden Dec 10, 2018
aa5e1dd
Fix test to support generic directory separators
epdenouden Dec 10, 2018
4128cf6
Improve test coverage of testdox annotation with a dataprovider
epdenouden Dec 10, 2018
bd110df
Clean up
epdenouden Dec 10, 2018
52fcad0
Mirror test result colors for nicer verbose messages
epdenouden Dec 11, 2018
9274c82
Remove dead code
epdenouden Dec 13, 2018
0e9f9e3
Refactor generic parts of buffering TestDox printer
epdenouden Dec 13, 2018
4a43d86
Improve coverage of TestDox colorization of unsuccessful test results
epdenouden Dec 14, 2018
d13fb1b
Make visualizing EOL optional
epdenouden Dec 14, 2018
5b04b95
Clean up colorized TestDox format of test result exception messages
epdenouden Dec 14, 2018
f350c9b
Fix raw test data mangled by editor
epdenouden Dec 14, 2018
adfde1f
CS/WS fixes. Work around edge case with Risky result messages.
epdenouden Dec 14, 2018
8c73bdf
Make PHPT filenames prettier
epdenouden Dec 14, 2018
4e87106
Everybody needs some space
epdenouden Dec 14, 2018
f5c0e26
Optimize ANSI code sequences
epdenouden Dec 14, 2018
1364433
Improve line ending support
epdenouden Dec 14, 2018
186d2df
CS fix
epdenouden Dec 14, 2018
a3843da
Show @testdox empty string parameters as '' when color is off
epdenouden Dec 14, 2018
a3aaef8
Clean up a few obsolete tests for TestDox and test ordering
epdenouden Dec 18, 2018
ca84382
Improve test maintainability
epdenouden Dec 20, 2018
aa9b8ed
Move logger and printer tests together; nicer ARGV handling
epdenouden Dec 20, 2018
811da6f
Move execution ordering tests together
epdenouden Dec 20, 2018
0977a2c
Move some more CLI tests together
epdenouden Dec 20, 2018
ae1cb17
Misc test housekeeping
epdenouden Dec 22, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion phpunit.xml
Expand Up @@ -2,7 +2,8 @@
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="phpunit.xsd"
bootstrap="tests/bootstrap.php"
executionOrder="depends"
cacheResult="true"
colors="true"
verbose="true">
<testsuites>
<testsuite name="unit">
Expand Down
34 changes: 2 additions & 32 deletions src/TextUI/ResultPrinter.php
Expand Up @@ -21,6 +21,7 @@
use PHPUnit\Runner\PhptTestCase;
use PHPUnit\Util\InvalidArgumentHelper;
use PHPUnit\Util\Printer;
use PHPUnit\Util\TestDox\Color;
use SebastianBergmann\Environment\Console;
use SebastianBergmann\Timer\Timer;

Expand All @@ -47,29 +48,6 @@ class ResultPrinter extends Printer implements TestListener

private const AVAILABLE_COLORS = [self::COLOR_NEVER, self::COLOR_AUTO, self::COLOR_ALWAYS];

/**
* @var array
*/
private static $ansiCodes = [
'bold' => 1,
'fg-black' => 30,
'fg-red' => 31,
'fg-green' => 32,
'fg-yellow' => 33,
'fg-blue' => 34,
'fg-magenta' => 35,
'fg-cyan' => 36,
'fg-white' => 37,
'bg-black' => 40,
'bg-red' => 41,
'bg-green' => 42,
'bg-yellow' => 43,
'bg-blue' => 44,
'bg-magenta' => 45,
'bg-cyan' => 46,
'bg-white' => 47,
];

/**
* @var int
*/
Expand Down Expand Up @@ -533,21 +511,13 @@ protected function formatWithColor(string $color, string $buffer): string
return $buffer;
}

$codes = \array_map('\trim', \explode(',', $color));
$lines = \explode("\n", $buffer);
$padding = \max(\array_map('\strlen', $lines));
$styles = [];

foreach ($codes as $code) {
$styles[] = self::$ansiCodes[$code];
}

$style = \sprintf("\x1b[%sm", \implode(';', $styles));

$styledLines = [];

foreach ($lines as $line) {
$styledLines[] = $style . \str_pad($line, $padding) . "\x1b[0m";
$styledLines[] = Color::colorize($color, \str_pad($line, $padding));
}

return \implode("\n", $styledLines);
Expand Down