From 205f8269ee16092fb5bb1de69e0933ee0351c67f Mon Sep 17 00:00:00 2001 From: Benedikt Ritter Date: Fri, 21 Mar 2025 12:13:31 +0100 Subject: [PATCH] gradle: add test for toolchain functionality The test asserts for the output of the javaToolchains tasks making sure Gradle detected toolchains via environment variables created by the Nix package. Since we can't call override on finalAttrs.finalPackage, the test has to be implemented in wrapGradle instead of in the passthru of the gen function body. --- .../tools/build-managers/gradle/default.nix | 30 ++++++++++++++++++- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/pkgs/development/tools/build-managers/gradle/default.nix b/pkgs/development/tools/build-managers/gradle/default.nix index ff23eda5f569..bb8961145f91 100644 --- a/pkgs/development/tools/build-managers/gradle/default.nix +++ b/pkgs/development/tools/build-managers/gradle/default.nix @@ -1,6 +1,8 @@ { + jdk11, jdk17, jdk21, + jdk23, }: rec { @@ -251,6 +253,7 @@ rec { concatTextFile, makeSetupHook, nix-update-script, + runCommand, }: gradle-unwrapped: updateAttrPath: lib.makeOverridable ( @@ -281,8 +284,33 @@ rec { passthru = { fetchDeps = callPackage ./fetch-deps.nix { inherit mitm-cache; }; - inherit (gradle) jdk tests; + inherit (gradle) jdk; unwrapped = gradle; + tests = { + toolchains = + runCommand "detects-toolchains-from-nix-env" + { + # Use JDKs that are not the default for any of the gradle versions + nativeBuildInputs = [ + (gradle.override { + javaToolchains = [ + jdk11 + jdk23 + ]; + }) + ]; + src = ./tests/java-application; + } + '' + cp -a $src/* . + env GRADLE_USER_HOME=$TMPDIR/gradle org.gradle.native.dir=$TMPDIR/native \ + gradle javaToolchains --no-daemon --quiet --console plain > $out + cat $out | grep "Language Version: 11" + cat $out | grep "Detected by: environment variable 'JAVA_TOOLCHAIN_NIX_0'" + cat $out | grep "Language Version: 23" + cat $out | grep "Detected by: environment variable 'JAVA_TOOLCHAIN_NIX_1'" + ''; + } // gradle.tests; } // lib.optionalAttrs (updateAttrPath != null) { updateScript = nix-update-script { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bb13a9b4e526..f3d64c24402f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7848,7 +7848,7 @@ with pkgs; gnumake = callPackage ../development/tools/build-managers/gnumake { }; gradle-packages = import ../development/tools/build-managers/gradle { - inherit jdk17 jdk21; + inherit jdk11 jdk17 jdk21 jdk23; }; gradleGen = gradle-packages.gen; wrapGradle = callPackage gradle-packages.wrapGradle { };