Skip to content

Commit 424208a

Browse files
tnjclaude
andcommitted
Fix test failures for configuration cache support
- Fix BrowserUtilsSpec test by mocking CI environment check - Update BrowserUtilsConfigurationCacheSpec to use parameterized tests with mock providers - Fix UploadArtifactTask to remove extra .get() call on Boolean value 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 19e05c7 commit 424208a

File tree

3 files changed

+30
-14
lines changed

3 files changed

+30
-14
lines changed

src/main/groovy/com/deploygate/gradle/plugins/tasks/UploadArtifactTask.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ abstract class UploadArtifactTask extends DefaultTask {
128128

129129
def hasNotified = httpClient.get().lifecycleNotificationClient.notifyOnSuccessOfArtifactUpload(uploadResponse.typedResponse.application.path)
130130

131-
def shouldOpenBrowser = openBrowserAfterUpload.getOrElse(false).get()
131+
def shouldOpenBrowser = openBrowserAfterUpload.getOrElse(false)
132132
if (!hasNotified && (shouldOpenBrowser || uploadResponse.typedResponse.application.revision == 1)) {
133133
BrowserUtils.openBrowser("${endpoint.get()}${uploadResponse.typedResponse.application.path}", providerFactory)
134134
}

src/test/groovy/com/deploygate/gradle/plugins/internal/utils/BrowserUtilsConfigurationCacheSpec.groovy

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,28 @@ class BrowserUtilsConfigurationCacheSpec extends Specification {
2323
providers = project.providers
2424
}
2525

26-
def "hasBrowser with ProviderFactory returns expected result"() {
27-
given: "Provider factory from test project"
28-
// In unit tests, we can evaluate providers directly as we're not in configuration phase
26+
@Unroll
27+
def "hasBrowser with ProviderFactory works correctly in different environments"() {
28+
given: "Mock providers with controlled values"
29+
def osNameProvider = providers.provider { osName }
30+
def displayProvider = providers.provider { display }
31+
def ciProvider = providers.provider { ci }
32+
def jenkinsUrlProvider = providers.provider { jenkinsUrl }
2933

3034
when: "Checking for browser availability"
31-
def result = BrowserUtils.hasBrowser(providers)
32-
33-
then: "Result is based on current environment"
34-
// The result will depend on the test environment (CI vs local, OS, etc.)
35-
result != null
36-
// In most test environments, this will be false due to CI detection or missing display
37-
result == !BrowserUtils.isCiEnvironment() &&
38-
(BrowserUtils.isExecutableOnMacOS() ||
39-
BrowserUtils.isExecutableOnWindows() ||
40-
BrowserUtils.isExecutableOnLinux())
35+
def result = BrowserUtils.hasBrowser(osNameProvider, displayProvider, ciProvider, jenkinsUrlProvider)
36+
37+
then: "Result matches expected behavior"
38+
result == expectedResult
39+
40+
where:
41+
osName | display | ci | jenkinsUrl | expectedResult
42+
"Mac OS X" | null | "false" | null | true
43+
"Windows" | null | "false" | null | true
44+
"Linux" | ":0" | "false" | null | true
45+
"Linux" | null | "false" | null | false
46+
"Mac OS X" | null | "true" | null | false
47+
"Windows" | null | "false" | "http://ci" | false
4148
}
4249

4350
def "openBrowser with ProviderFactory executes correctly"() {

src/test/groovy/com/deploygate/gradle/plugins/internal/utils/BrowserUtilsSpec.groovy

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,19 @@ class BrowserUtilsSpec extends Specification {
1919
->
2020
[waitFor: { -> 0 }]
2121
}
22+
// Mock the CI environment to be false for testing browser functionality
23+
BrowserUtils.metaClass.static.isCiEnvironment = { -> false }
2224
BrowserUtils.metaClass.static.hasBrowserLegacy = { -> hasBrowser }
2325
BrowserUtils.metaClass.static.isExecutableOnMacOS = { -> onMacOS }
2426
BrowserUtils.metaClass.static.isExecutableOnWindows = { -> onWindows }
2527
BrowserUtils.metaClass.static.isExecutableOnLinux = { -> onLinux }
28+
BrowserUtils.metaClass.static.getOS_NAME = {
29+
->
30+
if (onMacOS) return "mac"
31+
if (onWindows) return "windows"
32+
if (onLinux) return "linux"
33+
return "unknown"
34+
}
2635

2736
expect:
2837
BrowserUtils.openBrowser(url) == result

0 commit comments

Comments
 (0)