Skip to content

Commit 7caf309

Browse files
authored
Fix broken link format detection (#16)
This broke in #10. The condition was wrong. Added tests to assure this won't break again.
1 parent 9c3abdb commit 7caf309

File tree

3 files changed

+55
-7
lines changed

3 files changed

+55
-7
lines changed

extension.neon

+1
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ services:
55
relativePathHelper: '@simpleRelativePathHelper'
66
ciDetectedErrorFormatter: '@PHPStan\Command\ErrorFormatter\CiDetectedErrorFormatter'
77
editorUrl: '%editorUrl%'
8+
environmentVariables: '%env%'

src/TicketSwapErrorFormatter.php

+14-6
Original file line numberDiff line numberDiff line change
@@ -27,31 +27,39 @@ final class TicketSwapErrorFormatter implements ErrorFormatter
2727
private ErrorFormatter $ciDetectedErrorFormatter;
2828
private ?string $editorUrl;
2929

30+
/**
31+
* @param RelativePathHelper $relativePathHelper
32+
* @param ErrorFormatter $ciDetectedErrorFormatter
33+
* @param string|null $editorUrl
34+
* @param array<string, mixed> $environmentVariables
35+
*/
3036
public function __construct(
3137
RelativePathHelper $relativePathHelper,
3238
ErrorFormatter $ciDetectedErrorFormatter,
33-
?string $editorUrl = null
39+
?string $editorUrl,
40+
array $environmentVariables
3441
) {
3542
$this->relativePathHelper = $relativePathHelper;
3643
$this->ciDetectedErrorFormatter = $ciDetectedErrorFormatter;
3744
$this->editorUrl = $editorUrl;
38-
$this->linkFormat = self::getLinkFormatFromEnv();
45+
$this->linkFormat = self::getLinkFormatFromEnv($environmentVariables);
3946
}
4047

4148
/**
49+
* @param array<string, mixed> $environmentVariables
4250
* @return self::LINK_FORMAT_*
4351
*/
44-
public static function getLinkFormatFromEnv() : string
52+
public static function getLinkFormatFromEnv(array $environmentVariables) : string
4553
{
46-
if (getenv('GITHUB_ACTIONS') !== false) {
54+
if (isset($environmentVariables['GITHUB_ACTIONS'])) {
4755
return self::LINK_FORMAT_GITHUB_ACTIONS;
4856
}
4957

50-
if (getenv('TERMINAL_EMULATOR') !== 'JetBrains-JediTerm') {
58+
if (isset($environmentVariables['TERMINAL_EMULATOR']) && $environmentVariables['TERMINAL_EMULATOR'] === 'JetBrains-JediTerm') {
5159
return self::LINK_FORMAT_PHPSTORM;
5260
}
5361

54-
if (getenv('TERM_PROGRAM') !== 'WarpTerminal') {
62+
if (isset($environmentVariables['TERM_PROGRAM']) && $environmentVariables['TERM_PROGRAM'] === 'WarpTerminal') {
5563
return self::LINK_FORMAT_WARP;
5664
}
5765

tests/TicketSwapErrorFormatterTest.php

+40-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,46 @@ public function formatErrors(AnalysisResult $analysisResult, Output $output): in
3131
return 0;
3232
}
3333
},
34-
self::PHPSTOR_EDITOR_URL
34+
self::PHPSTOR_EDITOR_URL,
35+
[]
36+
);
37+
}
38+
39+
/**
40+
* @return iterable<array{TicketSwapErrorFormatter::LINK_FORMAT_*, array<string, string>}>
41+
*/
42+
public static function provideLinkFormatFromEnv() : iterable
43+
{
44+
yield 'GitHub Actions' => [
45+
TicketSwapErrorFormatter::LINK_FORMAT_GITHUB_ACTIONS,
46+
['GITHUB_ACTIONS' => 'true'],
47+
];
48+
yield 'JetBrains' => [
49+
TicketSwapErrorFormatter::LINK_FORMAT_PHPSTORM,
50+
['TERMINAL_EMULATOR' => 'JetBrains-JediTerm'],
51+
];
52+
yield 'Warp' => [
53+
TicketSwapErrorFormatter::LINK_FORMAT_WARP,
54+
['TERM_PROGRAM' => 'WarpTerminal'],
55+
];
56+
yield 'Ghostty' => [
57+
TicketSwapErrorFormatter::LINK_FORMAT_DEFAULT,
58+
['TERM_PROGRAM' => 'ghostty'],
59+
];
60+
yield 'Default' => [
61+
TicketSwapErrorFormatter::LINK_FORMAT_DEFAULT,
62+
[],
63+
];
64+
}
65+
66+
/**
67+
* @dataProvider provideLinkFormatFromEnv
68+
*/
69+
public function testGetLinkFormatFromEnv(string $expected, array $environmentVariables) : void
70+
{
71+
self::assertSame(
72+
$expected,
73+
TicketSwapErrorFormatter::getLinkFormatFromEnv($environmentVariables)
3574
);
3675
}
3776

0 commit comments

Comments
 (0)