diff --git a/.github/workflows/bld.yml b/.github/workflows/bld.yml index f7e10f8..d55711f 100644 --- a/.github/workflows/bld.yml +++ b/.github/workflows/bld.yml @@ -1,14 +1,16 @@ name: bld-ci -on: [push, pull_request, workflow_dispatch] +on: [ push, pull_request, workflow_dispatch ] jobs: build-bld-project: - runs-on: ubuntu-latest - strategy: matrix: - java-version: [17, 21, 23] + java-version: [ 17, 21, 24 ] + kotlin-version: [ 1.9.25, 2.0.21, 2.1.20 ] + os: [ ubuntu-latest, windows-latest, macos-latest ] + + runs-on: ${{ matrix.os }} steps: - name: Checkout source repository @@ -22,8 +24,16 @@ jobs: distribution: "zulu" java-version: ${{ matrix.java-version }} + - name: Download dependencies [examples] + working-directory: examples + run: ./bld download + + - name: Run tests with JaCoCo [examples] + working-directory: examples + run: ./bld compile jacoco + - name: Download dependencies run: ./bld download - name: Run tests - run: ./bld compile test + run: ./bld compile test \ No newline at end of file diff --git a/.idea/libraries/bld.xml b/.idea/libraries/bld.xml index 63c014a..a203de8 100644 --- a/.idea/libraries/bld.xml +++ b/.idea/libraries/bld.xml @@ -2,12 +2,12 @@ - + - + diff --git a/.vscode/settings.json b/.vscode/settings.json index a3f4fd0..ba429d0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,7 +9,7 @@ ], "java.configuration.updateBuildConfiguration": "automatic", "java.project.referencedLibraries": [ - "${HOME}/.bld/dist/bld-2.2.0.jar", + "${HOME}/.bld/dist/bld-2.2.1.jar", "lib/**/*.jar" ] } diff --git a/README.md b/README.md index be61ab7..e44b64e 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,20 @@ [![License](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Java](https://img.shields.io/badge/java-17%2B-blue)](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) -[![bld](https://img.shields.io/badge/2.2.0-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld) +[![bld](https://img.shields.io/badge/2.2.1-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld) [![Release](https://flat.badgen.net/maven/v/metadata-url/repo.rife2.com/releases/com/uwyn/rife2/bld-testng/maven-metadata.xml?color=blue)](https://repo.rife2.com/#/releases/com/uwyn/rife2/bld-testng) [![Snapshot](https://flat.badgen.net/maven/v/metadata-url/repo.rife2.com/snapshots/com/uwyn/rife2/bld-testng/maven-metadata.xml?label=snapshot)](https://repo.rife2.com/#/snapshots/com/uwyn/rife2/bld-testng) [![GitHub CI](https://github.com/rife2/bld-testng/actions/workflows/bld.yml/badge.svg)](https://github.com/rife2/bld-testng/actions/workflows/bld.yml) -To install, please refer to the [extensions documentation](https://github.com/rife2/bld/wiki/Extensions). +To install the latest version, add the following to the `lib/bld/bld-wrapper.properties` file: + +```properties +bld.extension-testng=com.uwyn.rife2:bld-testng +``` + +For more information, please refer to the [extensions](https://github.com/rife2/bld/wiki/Extensions) documentation. + +## Test with TestNG To run the tests with TestNG, add the following to your build file: diff --git a/examples/.idea/bld.xml b/examples/.idea/bld.xml new file mode 100644 index 0000000..6600cee --- /dev/null +++ b/examples/.idea/bld.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/examples/.idea/libraries/bld.xml b/examples/.idea/libraries/bld.xml index 63c014a..a203de8 100644 --- a/examples/.idea/libraries/bld.xml +++ b/examples/.idea/libraries/bld.xml @@ -2,12 +2,12 @@ - + - + diff --git a/examples/.vscode/settings.json b/examples/.vscode/settings.json index edeefde..3005cd9 100644 --- a/examples/.vscode/settings.json +++ b/examples/.vscode/settings.json @@ -10,7 +10,7 @@ ], "java.configuration.updateBuildConfiguration": "automatic", "java.project.referencedLibraries": [ - "${HOME}/.bld/dist/bld-2.2.0.jar", + "${HOME}/.bld/dist/bld-2.2.1.jar", "lib/**/*.jar" ] } diff --git a/examples/lib/bld/bld-wrapper.jar b/examples/lib/bld/bld-wrapper.jar index efa2089..88faac2 100644 Binary files a/examples/lib/bld/bld-wrapper.jar and b/examples/lib/bld/bld-wrapper.jar differ diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties index 1421422..85fd25e 100644 --- a/examples/lib/bld/bld-wrapper.properties +++ b/examples/lib/bld/bld-wrapper.properties @@ -1,8 +1,8 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= -bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.9 -bld.extension-testng=com.uwyn.rife2:bld-testng:1.0.2 +bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.10-SNAPSHOT +bld.extension-testng=com.uwyn.rife2:bld-testng:1.0.3-SNAPSHOT bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= -bld.version=2.2.0 +bld.version=2.2.1 diff --git a/examples/src/bld/java/com/example/ExamplesBuild.java b/examples/src/bld/java/com/example/ExamplesBuild.java index f73038a..9bd0bea 100644 --- a/examples/src/bld/java/com/example/ExamplesBuild.java +++ b/examples/src/bld/java/com/example/ExamplesBuild.java @@ -6,7 +6,6 @@ import rife.bld.extension.JacocoReportOperation; import rife.bld.extension.TestNgOperation; import rife.bld.operations.TestOperation; -import java.io.IOException; import java.util.List; import java.util.logging.ConsoleHandler; import java.util.logging.Level; @@ -17,7 +16,7 @@ import static rife.bld.dependencies.Scope.test; /** * Example build. - * + * *
{@code
  * ./bld compile test
  * ./bld compile jacoco
diff --git a/lib/bld/bld-wrapper.jar b/lib/bld/bld-wrapper.jar
index 6249257..97c0a4b 100644
Binary files a/lib/bld/bld-wrapper.jar and b/lib/bld/bld-wrapper.jar differ
diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties
index 4f5f791..c5da09f 100644
--- a/lib/bld/bld-wrapper.properties
+++ b/lib/bld/bld-wrapper.properties
@@ -2,7 +2,7 @@ bld.downloadExtensionJavadoc=false
 bld.downloadExtensionSources=true
 bld.downloadLocation=
 bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.4
-bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.2.0
+bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.2.1
 bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
 bld.sourceDirectories=
-bld.version=2.2.0
+bld.version=2.2.1
diff --git a/src/bld/java/rife/bld/extension/TestNgOperationBuild.java b/src/bld/java/rife/bld/extension/TestNgOperationBuild.java
index 8097262..88f713c 100644
--- a/src/bld/java/rife/bld/extension/TestNgOperationBuild.java
+++ b/src/bld/java/rife/bld/extension/TestNgOperationBuild.java
@@ -33,7 +33,7 @@ public class TestNgOperationBuild extends Project {
     public TestNgOperationBuild() {
         pkg = "rife.bld.extension";
         name = "bld-testng";
-        version = version(1, 0, 2);
+        version = version(1, 0, 3, "SNAPSHOT");
 
         javaRelease = 17;
 
@@ -43,12 +43,12 @@ public class TestNgOperationBuild extends Project {
         repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS);
 
         scope(compile)
-                .include(dependency("com.uwyn.rife2", "bld", version(2, 2, 0)));
+                .include(dependency("com.uwyn.rife2", "bld", version(2, 2, 1)));
 
         scope(test)
                 .include(dependency("org.testng", "testng", version(7, 11, 0)))
-                .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 4)))
-                .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 4)))
+                .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 1)))
+                .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 1)))
                 .include(dependency("org.assertj", "assertj-core", version(3, 27, 3)));
 
         javadocOperation()
@@ -100,10 +100,13 @@ public class TestNgOperationBuild extends Project {
 
     @Override
     public void test() throws Exception {
-        new ExecOperation()
-                .fromProject(this)
-                .command("scripts/cliargs.sh")
-                .execute();
+        var os = System.getProperty("os.name");
+        if (os != null && os.toLowerCase().contains("linux")) {
+            new ExecOperation()
+                    .fromProject(this)
+                    .command("scripts/cliargs.sh")
+                    .execute();
+        }
         super.test();
     }
 }
diff --git a/src/main/java/rife/bld/extension/TestNgOperation.java b/src/main/java/rife/bld/extension/TestNgOperation.java
index 0617152..298857f 100644
--- a/src/main/java/rife/bld/extension/TestNgOperation.java
+++ b/src/main/java/rife/bld/extension/TestNgOperation.java
@@ -75,6 +75,19 @@ public class TestNgOperation extends TestOperation
         return this;
     }
 
+    private String buildClassPath(String... path) {
+        var classpath = new StringBuilder();
+        for (var p : path) {
+            if (!p.isBlank()) {
+                if (!classpath.isEmpty()) {
+                    classpath.append(File.pathSeparator);
+                }
+                classpath.append(p);
+            }
+        }
+        return classpath.toString();
+    }
+
     /**
      * This sets the default maximum number of threads to use for data providers when running tests in parallel.
      * It will only take effect if the parallel mode has been selected (for example,with the
@@ -202,11 +215,13 @@ public class TestNgOperation extends TestOperation
 
             args.add("-cp");
             if (testClasspath_.isEmpty()) {
-                args.add(String.format("%s:%s:%s:%s", new File(project_.libTestDirectory(), "*"),
-                        new File(project_.libCompileDirectory(), "*"), project_.buildMainDirectory(),
-                        project_.buildTestDirectory()));
+                args.add(buildClassPath(joinClasspathJar(project_.testClasspathJars()),
+                        joinClasspathJar(project_.compileClasspathJars()),
+                        joinClasspathJar(project_.providedClasspathJars()),
+                        project_.buildMainDirectory().getAbsolutePath(),
+                        project_.buildTestDirectory().getAbsolutePath()));
             } else {
-                args.add(String.join(":", testClasspath_));
+                args.add(String.join(File.pathSeparator, testClasspath_));
             }
 
             args.add("org.testng.TestNG");
@@ -224,7 +239,7 @@ public class TestNgOperation extends TestOperation
                 } catch (IOException ioe) {
                     if (LOGGER.isLoggable(Level.SEVERE) && !silent()) {
                         LOGGER.severe("An IO error occurred while accessing the default testng.xml file: "
-                                + ioe.getMessage());
+                                      + ioe.getMessage());
                     }
                     throw new RuntimeException(ioe);
                 }
@@ -372,6 +387,14 @@ public class TestNgOperation extends TestOperation
         return this;
     }
 
+    private String joinClasspathJar(List jars) {
+        if (!jars.isEmpty()) {
+            return String.join(File.pathSeparator, jars.stream().map(File::getAbsolutePath).toList());
+        } else {
+            return "";
+        }
+    }
+
     /**
      * The list of {@code .class} files or list of class names implementing {@code ITestListener} or
      * {@code ISuiteListener}
@@ -1056,10 +1079,10 @@ public class TestNgOperation extends TestOperation
         var temp = tempFile();
         try (var bufWriter = Files.newBufferedWriter(Paths.get(temp.getPath()))) {
             bufWriter.write("" +
-                    "" +
-                    "" +
-                    "" +
-                    "");
+                            "" +
+                            "" +
+                            "" +
+                            "");
             for (var p : packages_) {
                 bufWriter.write(String.format("", p));
             }
diff --git a/src/test/java/rife/bld/extension/TestNgOperationTest.java b/src/test/java/rife/bld/extension/TestNgOperationTest.java
index 3a9f795..d4f3193 100644
--- a/src/test/java/rife/bld/extension/TestNgOperationTest.java
+++ b/src/test/java/rife/bld/extension/TestNgOperationTest.java
@@ -18,6 +18,8 @@ package rife.bld.extension;
 
 import org.assertj.core.api.AutoCloseableSoftAssertions;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledOnOs;
+import org.junit.jupiter.api.condition.OS;
 import rife.bld.Project;
 import rife.bld.blueprints.BaseProjectBlueprint;
 import rife.bld.operations.exceptions.ExitStatusException;
@@ -51,6 +53,7 @@ class TestNgOperationTest {
     }
 
     @Test
+    @EnabledOnOs(OS.LINUX)
     void testCheckAllParameters() throws IOException {
         var args = Files.readAllLines(Paths.get("src", "test", "resources", "testng-args.txt"));