1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
<?php
/**
* Tests for the \PHP_CodeSniffer\Util\Common::prepareForOutput() method.
*
* @copyright 2024 PHPCSStandards and contributors
* @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
*/
namespace PHP_CodeSniffer\Tests\Core\Util\Common;
use PHP_CodeSniffer\Util\Common;
use PHPUnit\Framework\TestCase;
/**
* Tests for the \PHP_CodeSniffer\Util\Common::prepareForOutput() method.
*
* @covers \PHP_CodeSniffer\Util\Common::prepareForOutput
* @group Windows
*/
final class PrepareForOutputTest extends TestCase
{
/**
* Test formatting whitespace characters, on anything other than Windows.
*
* @param string $content The content to prepare.
* @param string[] $exclude A list of characters to leave invisible.
* @param string $expected Expected function output.
* @param string $expectedWin Expected function output on Windows (unused in this test).
*
* @requires OS ^(?!WIN).*
* @dataProvider dataPrepareForOutput
*
* @return void
*/
public function testPrepareForOutput($content, $exclude, $expected, $expectedWin)
{
$this->assertSame($expected, Common::prepareForOutput($content, $exclude));
}//end testPrepareForOutput()
/**
* Test formatting whitespace characters, on Windows.
*
* @param string $content The content to prepare.
* @param string[] $exclude A list of characters to leave invisible.
* @param string $expected Expected function output (unused in this test).
* @param string $expectedWin Expected function output on Windows.
*
* @requires OS ^WIN.*.
* @dataProvider dataPrepareForOutput
*
* @return void
*/
public function testPrepareForOutputWindows($content, $exclude, $expected, $expectedWin)
{
$this->assertSame($expectedWin, Common::prepareForOutput($content, $exclude));
}//end testPrepareForOutputWindows()
/**
* Data provider.
*
* @see testPrepareForOutput()
* @see testPrepareForOutputWindows()
*
* @return array<string, array<string, mixed>>
*/
public static function dataPrepareForOutput()
{
return [
'Special characters are replaced with their escapes' => [
'content' => "\r\n\t",
'exclude' => [],
'expected' => "\033[30;1m\\r\033[0m\033[30;1m\\n\033[0m\033[30;1m\\t\033[0m",
'expectedWin' => "\\r\\n\\t",
],
'Spaces are replaced with a unique mark' => [
'content' => " ",
'exclude' => [],
'expected' => "\033[30;1m·\033[0m\033[30;1m·\033[0m\033[30;1m·\033[0m\033[30;1m·\033[0m",
'expectedWin' => " ",
],
'Other characters are unaffected' => [
'content' => "{echo 1;}",
'exclude' => [],
'expected' => "{echo\033[30;1m·\033[0m1;}",
'expectedWin' => "{echo 1;}",
],
'No replacements' => [
'content' => 'nothing-should-be-replaced',
'exclude' => [],
'expected' => 'nothing-should-be-replaced',
'expectedWin' => 'nothing-should-be-replaced',
],
'Excluded whitespace characters are unaffected' => [
'content' => "\r\n\t ",
'exclude' => [
"\r",
"\n",
],
'expected' => "\r\n\033[30;1m\\t\033[0m\033[30;1m·\033[0m",
'expectedWin' => "\r\n\\t ",
],
];
}//end dataPrepareForOutput()
}//end class
|