gradle: add package tests

+52 -8
+40 -8
pkgs/development/tools/build-managers/gradle/default.nix
··· 26 ] 27 }: 28 29 - { lib, stdenv, fetchurl, makeWrapper, unzip, ncurses5, ncurses6, 30 31 - # The JDK/JRE used for running Gradle. 32 - java ? defaultJava, 33 34 - # Additional JDK/JREs to be registered as toolchains. 35 - # See https://docs.gradle.org/current/userguide/toolchains.html 36 - javaToolchains ? [ ] 37 }: 38 39 - stdenv.mkDerivation rec { 40 pname = "gradle"; 41 inherit version; 42 ··· 99 echo ${ncurses6} >> $out/nix-support/manual-runtime-dependencies 100 ''; 101 102 meta = with lib; { 103 inherit platforms; 104 description = "Enterprise-grade build system"; ··· 121 maintainers = with maintainers; [ lorenzleutgeb liff ]; 122 mainProgram = "gradle"; 123 }; 124 - }; 125 126 # NOTE: Default JDKs that are hardcoded below must be LTS versions 127 # and respect the compatibility matrix at
··· 26 ] 27 }: 28 29 + { lib 30 + , stdenv 31 + , fetchurl 32 + , makeWrapper 33 + , unzip 34 + , ncurses5 35 + , ncurses6 36 + , testers 37 + , runCommand 38 + , writeText 39 40 + # The JDK/JRE used for running Gradle. 41 + , java ? defaultJava 42 43 + # Additional JDK/JREs to be registered as toolchains. 44 + # See https://docs.gradle.org/current/userguide/toolchains.html 45 + , javaToolchains ? [ ] 46 }: 47 48 + stdenv.mkDerivation (finalAttrs: { 49 pname = "gradle"; 50 inherit version; 51 ··· 108 echo ${ncurses6} >> $out/nix-support/manual-runtime-dependencies 109 ''; 110 111 + passthru.tests = { 112 + version = testers.testVersion { 113 + package = finalAttrs.finalPackage; 114 + command = '' 115 + env GRADLE_USER_HOME=$TMPDIR/gradle org.gradle.native.dir=$TMPDIR/native \ 116 + gradle --version 117 + ''; 118 + }; 119 + 120 + java-application = testers.testEqualContents { 121 + assertion = "can build and run a trivial Java application"; 122 + expected = writeText "expected" "hello\n"; 123 + actual = runCommand "actual" { 124 + nativeBuildInputs = [ finalAttrs.finalPackage ]; 125 + src = ./tests/java-application; 126 + } '' 127 + cp -a $src/* . 128 + env GRADLE_USER_HOME=$TMPDIR/gradle org.gradle.native.dir=$TMPDIR/native \ 129 + gradle run --no-daemon --quiet --console plain > $out 130 + ''; 131 + }; 132 + }; 133 + 134 meta = with lib; { 135 inherit platforms; 136 description = "Enterprise-grade build system"; ··· 153 maintainers = with maintainers; [ lorenzleutgeb liff ]; 154 mainProgram = "gradle"; 155 }; 156 + }); 157 158 # NOTE: Default JDKs that are hardcoded below must be LTS versions 159 # and respect the compatibility matrix at
+7
pkgs/development/tools/build-managers/gradle/tests/java-application/build.gradle
···
··· 1 + plugins { 2 + id('application') 3 + } 4 + 5 + application { 6 + mainClass = 'Main' 7 + }
+5
pkgs/development/tools/build-managers/gradle/tests/java-application/src/main/java/Main.java
···
··· 1 + public class Main { 2 + public static void main(String[] args) { 3 + System.out.println("hello"); 4 + } 5 + }