Skip to content

Commit cbcfe38

Browse files
committed
update test for windows vs non-windows directory separator use
1 parent cd15105 commit cbcfe38

File tree

1 file changed

+56
-16
lines changed

1 file changed

+56
-16
lines changed

tests/TicketSwapErrorFormatterTest.php

Lines changed: 56 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -87,18 +87,17 @@ public function testGetLinkFormatFromEnv(string $expected, array $environmentVar
8787
*/
8888
public static function provideLinkFormats() : iterable
8989
{
90-
yield [
91-
self::isWindows()
92-
? "↳ <href=phpstorm://open?file=/www/project/src/Core/Admin/Controller/Dashboard/User/AddUserController.php&line=20>src/Core/Admin/Controller/Dashboard/User/AddUserController.php:20</>\n"
93-
: "↳ <href=phpstorm://open?file=/www/project/src/Core/Admin/Controller/Dashboard/User/AddUserController.php&line=20>src/Core/Admin/.../User/AddUserController.php:20</>\n",
90+
// Unix/Linux paths (forward slashes)
91+
yield 'Unix - DEFAULT with editor and decoration' => [
92+
"↳ <href=phpstorm://open?file=/www/project/src/Core/Admin/Controller/Dashboard/User/AddUserController.php&line=20>src/Core/Admin/Controller/Dashboard/User/AddUserController.php:20</>\n",
9493
TicketSwapErrorFormatter::LINK_FORMAT_DEFAULT,
9594
20,
9695
'/www/project/src/Core/Admin/Controller/Dashboard/User/AddUserController.php',
9796
'src/Core/Admin/Controller/Dashboard/User/AddUserController.php',
9897
self::PHPSTORM_EDITOR_URL,
9998
true,
10099
];
101-
yield [
100+
yield 'Unix - GITHUB_ACTIONS' => [
102101
"↳ src/Core/Admin/Controller/Dashboard/User/AddUserController.php:20\n",
103102
TicketSwapErrorFormatter::LINK_FORMAT_GITHUB_ACTIONS,
104103
20,
@@ -107,7 +106,7 @@ public static function provideLinkFormats() : iterable
107106
self::PHPSTORM_EDITOR_URL,
108107
true,
109108
];
110-
yield [
109+
yield 'Unix - WARP' => [
111110
"↳ src/Core/Admin/Controller/Dashboard/User/AddUserController.php:20\n",
112111
TicketSwapErrorFormatter::LINK_FORMAT_WARP,
113112
20,
@@ -116,7 +115,7 @@ public static function provideLinkFormats() : iterable
116115
self::PHPSTORM_EDITOR_URL,
117116
true,
118117
];
119-
yield [
118+
yield 'Unix - PHPSTORM' => [
120119
"↳ file:///www/project/src/Core/Admin/Controller/Dashboard/User/AddUserController.php:20\n",
121120
TicketSwapErrorFormatter::LINK_FORMAT_PHPSTORM,
122121
20,
@@ -125,7 +124,7 @@ public static function provideLinkFormats() : iterable
125124
self::PHPSTORM_EDITOR_URL,
126125
true,
127126
];
128-
yield [
127+
yield 'Unix - WITHOUT_EDITOR' => [
129128
"↳ src/Core/Admin/Controller/Dashboard/User/AddUserController.php:20\n",
130129
TicketSwapErrorFormatter::LINK_FORMAT_WITHOUT_EDITOR,
131130
20,
@@ -134,7 +133,7 @@ public static function provideLinkFormats() : iterable
134133
self::PHPSTORM_EDITOR_URL,
135134
true,
136135
];
137-
yield [
136+
yield 'Unix - DEFAULT without decoration' => [
138137
"↳ src/Core/Admin/Controller/Dashboard/User/AddUserController.php:20\n",
139138
TicketSwapErrorFormatter::LINK_FORMAT_DEFAULT,
140139
20,
@@ -143,7 +142,7 @@ public static function provideLinkFormats() : iterable
143142
self::PHPSTORM_EDITOR_URL,
144143
false,
145144
];
146-
yield [
145+
yield 'Unix - DEFAULT without editor URL' => [
147146
"↳ src/Core/Admin/Controller/Dashboard/User/AddUserController.php:20\n",
148147
TicketSwapErrorFormatter::LINK_FORMAT_DEFAULT,
149148
20,
@@ -152,6 +151,35 @@ public static function provideLinkFormats() : iterable
152151
null,
153152
true,
154153
];
154+
155+
// Windows paths (backslashes)
156+
yield 'Windows - DEFAULT with editor and decoration' => [
157+
"↳ <href=phpstorm://open?file=C:\\www\\project\\src\\Core\\Admin\\Controller\\Dashboard\\User\\AddUserController.php&line=20>src\\Core\\Admin\\...\\User\\AddUserController.php:20</>\n",
158+
TicketSwapErrorFormatter::LINK_FORMAT_DEFAULT,
159+
20,
160+
'C:\\www\\project\\src\\Core\\Admin\\Controller\\Dashboard\\User\\AddUserController.php',
161+
'src\\Core\\Admin\\Controller\\Dashboard\\User\\AddUserController.php',
162+
self::PHPSTORM_EDITOR_URL,
163+
true,
164+
];
165+
yield 'Windows - GITHUB_ACTIONS' => [
166+
"↳ src\\Core\\Admin\\Controller\\Dashboard\\User\\AddUserController.php:20\n",
167+
TicketSwapErrorFormatter::LINK_FORMAT_GITHUB_ACTIONS,
168+
20,
169+
'C:\\www\\project\\src\\Core\\Admin\\Controller\\Dashboard\\User\\AddUserController.php',
170+
'src\\Core\\Admin\\Controller\\Dashboard\\User\\AddUserController.php',
171+
self::PHPSTORM_EDITOR_URL,
172+
true,
173+
];
174+
yield 'Windows - WITHOUT_EDITOR' => [
175+
"↳ src\\Core\\Admin\\Controller\\Dashboard\\User\\AddUserController.php:20\n",
176+
TicketSwapErrorFormatter::LINK_FORMAT_WITHOUT_EDITOR,
177+
20,
178+
'C:\\www\\project\\src\\Core\\Admin\\Controller\\Dashboard\\User\\AddUserController.php',
179+
'src\\Core\\Admin\\Controller\\Dashboard\\User\\AddUserController.php',
180+
self::PHPSTORM_EDITOR_URL,
181+
true,
182+
];
155183
}
156184

157185
/**
@@ -405,12 +433,20 @@ public function testFormatErrorsNoErrorsWritesNoErrorsAndReturnsZero() : void
405433

406434
public function testFormatErrorsWithErrorsPrintsMessagesLinksSummaryAndReturnsOne() : void
407435
{
436+
// Use OS-appropriate paths to test directory separator handling
437+
$absolutePath = self::isWindows()
438+
? 'C:\\www\\project\\src\\Foo\\Bar.php'
439+
: '/www/project/src/Foo/Bar.php';
440+
$configPath = self::isWindows()
441+
? 'C:\\www\\project\\phpstan.neon'
442+
: '/www/project/phpstan.neon';
443+
408444
$fileError = new Error(
409445
'Parameter #1 $var expects string, int given.',
410-
'/www/project/src/Foo/Bar.php',
446+
$absolutePath,
411447
12,
412448
null,
413-
'/www/project/src/Foo/Bar.php',
449+
$absolutePath,
414450
null,
415451
'Adjust in %configurationFile%',
416452
null,
@@ -426,7 +462,7 @@ public function testFormatErrorsWithErrorsPrintsMessagesLinksSummaryAndReturnsOn
426462
[],
427463
[],
428464
false,
429-
'/www/project/phpstan.neon',
465+
$configPath,
430466
false,
431467
0,
432468
false,
@@ -440,9 +476,13 @@ public function testFormatErrorsWithErrorsPrintsMessagesLinksSummaryAndReturnsOn
440476

441477
self::assertSame(1, $result);
442478

443-
$expectedLink = self::isWindows()
444-
? "↳ <href=phpstorm://open?file=/www/project/src/Foo/Bar.php&line=12>/www/project/src/Foo/Bar.php:12</>\n"
445-
: "↳ <href=phpstorm://open?file=/www/project/src/Foo/Bar.php&line=12>/www/project/.../Foo/Bar.php:12</>\n";
479+
// NullRelativePathHelper returns the absolute path, which has 6+ parts and gets trimmed
480+
// Windows: C:\www\project\src\Foo\Bar.php -> C:\www\project\...\Foo\Bar.php
481+
// Unix: /www/project/src/Foo/Bar.php -> /www/project/.../Foo/Bar.php
482+
$expectedShortPath = self::isWindows()
483+
? 'C:\\www\\project\\...\\Foo\\Bar.php'
484+
: '/www/project/.../Foo/Bar.php';
485+
$expectedLink = "↳ <href=phpstorm://open?file=$absolutePath&line=12>$expectedShortPath:12</>\n";
446486
$expectedSummary = '<bg=red;options=bold>Found 1 error</>';
447487

448488
$writes = $output->getWrites();

0 commit comments

Comments
 (0)