From bc136b82732d81f1966eb8d025f1563462675d35 Mon Sep 17 00:00:00 2001 From: Leonardo Pilastri Date: Mon, 4 Nov 2024 15:45:51 +0100 Subject: [PATCH] Fix unit tests on Windows --- .../sonarqube/gradle/FunctionalTests.groovy | 24 ++++++++++--------- .../gradle/SonarQubePluginTest.groovy | 2 +- .../sonarqube/gradle/SourceCollectorTest.java | 15 ++++++++---- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/test/groovy/org/sonarqube/gradle/FunctionalTests.groovy b/src/test/groovy/org/sonarqube/gradle/FunctionalTests.groovy index 2316f42e..1acd05bb 100644 --- a/src/test/groovy/org/sonarqube/gradle/FunctionalTests.groovy +++ b/src/test/groovy/org/sonarqube/gradle/FunctionalTests.groovy @@ -390,14 +390,15 @@ class FunctionalTests extends Specification { var mainSources = ((String) props."sonar.sources").split(",") mainSources.size() == 3 - mainSources[0].endsWith("""$projectDir/build.gradle""") - mainSources[1].endsWith("""$projectDir/gradle.properties""") - mainSources[2].endsWith("""$projectDir/settings.gradle""") + var projectPath = projectDir.toString() + File.separator + mainSources[0].endsWith("""${projectPath}build.gradle""") + mainSources[1].endsWith("""${projectPath}gradle.properties""") + mainSources[2].endsWith("""${projectPath}settings.gradle""") var testSources = ((String) props."sonar.tests").split(",") testSources.size() == 2 - testSources[0].endsWith("""$projectDir/integrationTests/run-all.sh""") - testSources[1].endsWith("""$projectDir/test-license.sh""") + testSources[0].endsWith("""${projectPath}integrationTests${File.separator}run-all.sh""") + testSources[1].endsWith("""${projectPath}test-license.sh""") } def "scan all is enabled but not applied because of overridden properties on the command line"() { @@ -538,14 +539,15 @@ class FunctionalTests extends Specification { // Test that the empty script is is collected but the reports are not collected var mainSources = ((String) props."sonar.sources").split(",") mainSources.size() == 4 - mainSources[0].endsWith("""$projectDir/build.gradle""") - mainSources[1].endsWith("""$projectDir/empty-script.groovy""") - mainSources[2].endsWith("""$projectDir/gradle.properties""") - mainSources[3].endsWith("""$projectDir/settings.gradle""") + var projectPath = projectDir.toString() + File.separator + mainSources[0].endsWith("""${projectPath}build.gradle""") + mainSources[1].endsWith("""${projectPath}empty-script.groovy""") + mainSources[2].endsWith("""${projectPath}gradle.properties""") + mainSources[3].endsWith("""${projectPath}settings.gradle""") var testSources = ((String) props."sonar.tests").split(",") testSources.size() == 2 - testSources[0].endsWith("""$projectDir/integrationTests/run-all.sh""") - testSources[1].endsWith("""$projectDir/test-license.sh""") + testSources[0].endsWith("""${projectPath}integrationTests${File.separator}run-all.sh""") + testSources[1].endsWith("""${projectPath}test-license.sh""") } } diff --git a/src/test/groovy/org/sonarqube/gradle/SonarQubePluginTest.groovy b/src/test/groovy/org/sonarqube/gradle/SonarQubePluginTest.groovy index f0e2081c..ece9cc1e 100644 --- a/src/test/groovy/org/sonarqube/gradle/SonarQubePluginTest.groovy +++ b/src/test/groovy/org/sonarqube/gradle/SonarQubePluginTest.groovy @@ -1116,7 +1116,7 @@ class SonarQubePluginTest extends Specification { return properties.getOrDefault(propertyName, "").split(",") .stream() .filter(s -> !s.isBlank()) - .map(s -> project.projectDir.toPath().relativize(Path.of(s)).toString()) + .map(s -> project.projectDir.toPath().relativize(Path.of(s)).toString().replace(File.separator, '/')) // filter out an unexpected file internally created by the test framework .filter(s -> !s.endsWith("file-access.properties")) .sorted() diff --git a/src/test/java/org/sonarqube/gradle/SourceCollectorTest.java b/src/test/java/org/sonarqube/gradle/SourceCollectorTest.java index d6b653b9..22ae4a7f 100644 --- a/src/test/java/org/sonarqube/gradle/SourceCollectorTest.java +++ b/src/test/java/org/sonarqube/gradle/SourceCollectorTest.java @@ -19,14 +19,18 @@ */ package org.sonarqube.gradle; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; - import java.io.IOException; -import java.nio.file.*; +import java.nio.file.FileVisitResult; +import java.nio.file.FileVisitor; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.Collections; import java.util.Set; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledOnOs; +import org.junit.jupiter.api.condition.OS; +import org.junit.jupiter.api.io.TempDir; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -156,6 +160,7 @@ void visitorIgnoresExcludedFiles() throws IOException { } @Test + @DisabledOnOs(OS.WINDOWS) void visitorIgnoresSymbolicLinks() throws IOException { Path simpleProjectPom = simpleProjectBasedDir.resolve("pom.xml"); simpleProjectPom.toFile().createNewFile();