Skip to content

Commit

Permalink
Fixes an issue with gradle command from a multimodule project (#708)
Browse files Browse the repository at this point in the history
  • Loading branch information
haroon-sheikh committed Jul 24, 2023
1 parent a256de0 commit c44f8c8
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 10 deletions.
36 changes: 28 additions & 8 deletions gauge-java.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ const (
gradleBuildFile = "build.gradle"
gradleCommadUnix = "gradlew"
gradleCommadWindows = "gradlew.bat"
gaugeDependencyValidation = "gauge_dependency_validation"
)

var propertiesToPrint = []string{
Expand Down Expand Up @@ -144,17 +145,25 @@ func getGaugeJavaDepFromMavenPom() (string, string, error) {
return matches[1], mavenPomFile, nil
}

func getGradleCommand() string {
windowsGradleW := filepath.Join(projectRoot, gradleCommadWindows)
unixGradleW := filepath.Join(projectRoot, gradleCommadUnix)
if runtime.GOOS == "windows" && fileExists(windowsGradleW) {
return windowsGradleW
} else if fileExists(unixGradleW) {
return unixGradleW
func getGradleWrapperCommand(command string) string {
commandGradleW := filepath.Join(projectRoot, command)
gradleProjectRootDir := os.Getenv("PWD")
commandProjectRootGradleW := filepath.Join(gradleProjectRootDir, command)
if fileExists(commandGradleW) {
return commandGradleW
} else if gradleProjectRootDir != "" && fileExists(commandProjectRootGradleW) {
return commandProjectRootGradleW
}
return "gradle"
}

func getGradleCommand() string {
if runtime.GOOS == "windows" {
return getGradleWrapperCommand(gradleCommadWindows)
}
return getGradleWrapperCommand(gradleCommadUnix)
}

func getGaugeJavaDepFromGradleBuild() (string, string, error) {
args := []string{"-q", "dependencyInsight", "--dependency", "com.thoughtworks.gauge", "--configuration", "testCompileClasspath"}
cmd := exec.Command(getGradleCommand(), args...)
Expand Down Expand Up @@ -204,6 +213,15 @@ func getInstalledGaugeJavaVersion() (string, error) {
return v.Version, nil
}

func shouldValidateDependency() bool {
validateDependency := os.Getenv(gaugeDependencyValidation)
validate, err := strconv.ParseBool(strings.TrimSpace(validateDependency))
if err != nil {
return true
}
return validate
}

func validateGaugeJavaVersion() {
depVersion, file, err := getDepVersionFromBuildFile()
if err != nil {
Expand All @@ -223,7 +241,9 @@ func validateGaugeJavaVersion() {
}

func startJava() {
validateGaugeJavaVersion()
if shouldValidateDependency() {
validateGaugeJavaVersion()
}
err := os.Chdir(projectRoot)
if err != nil {
logMessage("fatal", "failed to set gauge project root. "+err.Error())
Expand Down
2 changes: 1 addition & 1 deletion java.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"id": "java",
"version": "0.10.1",
"version": "0.10.2",
"description": "Java support for gauge",
"install": {
"windows": [],
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@

<properties>
<maven.build.timestamp.format>yyyy-MM-dd</maven.build.timestamp.format>
<projectVersion>0.10.1</projectVersion>
<projectVersion>0.10.2</projectVersion>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>11</java.version>
Expand Down

0 comments on commit c44f8c8

Please sign in to comment.