From 4e444841579927d4cb26f6146bb885700ed96880 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Wed, 28 Aug 2024 14:10:17 -0700 Subject: [PATCH] Cleaned up API to match bld operations aand options APIs --- .idea/bld.xml | 6 + examples/lib/bld/bld-wrapper.properties | 4 +- .../bld/extension/TestNgOperationBuild.java | 7 +- .../rife/bld/extension/TestNgOperation.java | 111 +++++++++++++++++- .../rife/bld/extension/TestNgExample.java | 2 +- .../rife/bld/extension/TestNgExampleTest.java | 1 + .../bld/extension/TestNgOperationTest.java | 40 ++++++- 7 files changed, 153 insertions(+), 18 deletions(-) create mode 100644 .idea/bld.xml diff --git a/.idea/bld.xml b/.idea/bld.xml new file mode 100644 index 0000000..6600cee --- /dev/null +++ b/.idea/bld.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties index f79dc2b..26902e5 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.7 -bld.extension-testng=com.uwyn.rife2:bld-testng:0.9.9 +bld.extension-jacoco=com.uwyn.rife2:bld-jacoco-report:0.9.8-SNAPSHOT +bld.extension-testng=com.uwyn.rife2:bld-testng:1.0.0-SNAPSHOT bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.0.1 diff --git a/src/bld/java/rife/bld/extension/TestNgOperationBuild.java b/src/bld/java/rife/bld/extension/TestNgOperationBuild.java index b189af9..32da44c 100644 --- a/src/bld/java/rife/bld/extension/TestNgOperationBuild.java +++ b/src/bld/java/rife/bld/extension/TestNgOperationBuild.java @@ -24,10 +24,7 @@ import rife.bld.publish.PublishScm; import java.util.List; -import static rife.bld.dependencies.Repository.MAVEN_CENTRAL; -import static rife.bld.dependencies.Repository.MAVEN_LOCAL; -import static rife.bld.dependencies.Repository.RIFE2_RELEASES; -import static rife.bld.dependencies.Repository.RIFE2_SNAPSHOTS; +import static rife.bld.dependencies.Repository.*; import static rife.bld.dependencies.Scope.compile; import static rife.bld.dependencies.Scope.test; import static rife.bld.operations.JavadocOptions.DocLinkOption.NO_MISSING; @@ -36,7 +33,7 @@ public class TestNgOperationBuild extends Project { public TestNgOperationBuild() { pkg = "rife.bld.extension"; name = "bld-testng"; - version = version(0, 9, 9); + version = version(1, 0, 0, "SNAPSHOT"); javaRelease = 17; diff --git a/src/main/java/rife/bld/extension/TestNgOperation.java b/src/main/java/rife/bld/extension/TestNgOperation.java index 7eef93e..62966eb 100644 --- a/src/main/java/rife/bld/extension/TestNgOperation.java +++ b/src/main/java/rife/bld/extension/TestNgOperation.java @@ -118,6 +118,30 @@ public class TestNgOperation extends TestOperation return this; } + /** + * The directory where the reports will be generated + * + *

Default is {@code build/test-output})

+ * + * @param directoryPath the directory path + * @return this operation instance + */ + public TestNgOperation directory(File directoryPath) { + return directory(directoryPath.getAbsolutePath()); + } + + /** + * The directory where the reports will be generated + * + *

Default is {@code build/test-output})

+ * + * @param directoryPath the directory path + * @return this operation instance + */ + public TestNgOperation directory(Path directoryPath) { + return directory(directoryPath.toFile()); + } + /** * The list of groups you want to be excluded from this run. * @@ -678,10 +702,49 @@ public class TestNgOperation extends TestOperation * * @param directory one or more directories * @return this operation instance - * @see #sourceDir(String...) #sourceDir(String...) + * @see #sourceDir(Collection) */ public TestNgOperation sourceDir(String... directory) { - options_.put("-sourcedir", String.join(";", Arrays.stream(directory).filter(this::isNotBlank).toList())); + return sourceDir(List.of(directory)); + } + + /** + * The directories where your javadoc annotated test sources are. This option is only necessary + * if you are using javadoc type annotations. (e.g. {@code "src/test"} or + * {@code "src/test/org/testng/eclipse-plugin", "src/test/org/testng/testng"}). + * + * @param directory one or more directories + * @return this operation instance + * @see #sourceDirFiles(Collection) + */ + public TestNgOperation sourceDir(File... directory) { + return sourceDirFiles(List.of(directory)); + } + + /** + * The directories where your javadoc annotated test sources are. This option is only necessary + * if you are using javadoc type annotations. (e.g. {@code "src/test"} or + * {@code "src/test/org/testng/eclipse-plugin", "src/test/org/testng/testng"}). + * + * @param directory one or more directories + * @return this operation instance + * @see #sourceDirPaths(Collection) + */ + public TestNgOperation sourceDir(Path... directory) { + return sourceDirPaths(List.of(directory)); + } + + /** + * The directories where your javadoc annotated test sources are. This option is only necessary + * if you are using javadoc type annotations. (e.g. {@code "src/test"} or + * {@code "src/test/org/testng/eclipse-plugin", "src/test/org/testng/testng"}). + * + * @param directory the list of directories + * @return this operation instance + * @see #sourceDir(String...) + */ + public TestNgOperation sourceDir(Collection directory) { + options_.put("-sourcedir", String.join(";", directory.stream().filter(this::isNotBlank).toList())); return this; } @@ -692,11 +755,23 @@ public class TestNgOperation extends TestOperation * * @param directory the list of directories * @return this operation instance - * @see #sourceDir(String...) #sourceDir(String...) + * @see #sourceDir(File...) */ - public TestNgOperation sourceDir(Collection directory) { - options_.put("-sourcedir", String.join(";", directory.stream().filter(this::isNotBlank).toList())); - return this; + public TestNgOperation sourceDirFiles(Collection directory) { + return sourceDir(directory.stream().map(File::getAbsolutePath).toList()); + } + + /** + * The directories where your javadoc annotated test sources are. This option is only necessary + * if you are using javadoc type annotations. (e.g. {@code "src/test"} or + * {@code "src/test/org/testng/eclipse-plugin", "src/test/org/testng/testng"}). + * + * @param directory the list of directories + * @return this operation instance + * @see #sourceDir(Path...) + */ + public TestNgOperation sourceDirPaths(Collection directory) { + return sourceDirFiles(directory.stream().map(Path::toFile).toList()); } /** @@ -1031,6 +1106,30 @@ public class TestNgOperation extends TestOperation return this; } + /** + * This attribute should contain the path to a valid XML file inside the test jar + * (e.g. {@code "resources/testng.xml"}). The default is {@code testng.xml}, which means a file called + * {@code testng.xml} at the root of the jar file. This option will be ignored unless a test jar is specified. + * + * @param path the path + * @return this operation instance + */ + public TestNgOperation xmlPathInJar(File path) { + return xmlPathInJar(path.getAbsolutePath()); + } + + /** + * This attribute should contain the path to a valid XML file inside the test jar + * (e.g. {@code "resources/testng.xml"}). The default is {@code testng.xml}, which means a file called + * {@code testng.xml} at the root of the jar file. This option will be ignored unless a test jar is specified. + * + * @param path the path + * @return this operation instance + */ + public TestNgOperation xmlPathInJar(Path path) { + return xmlPathInJar(path.toFile()); + } + /** * Parallel Mechanisms */ diff --git a/src/test/java/rife/bld/extension/TestNgExample.java b/src/test/java/rife/bld/extension/TestNgExample.java index c2dc3e0..bfe36ca 100644 --- a/src/test/java/rife/bld/extension/TestNgExample.java +++ b/src/test/java/rife/bld/extension/TestNgExample.java @@ -22,7 +22,7 @@ package rife.bld.extension; * @author Erik C. Thauvin * @since 1.0 */ -@SuppressWarnings("PMD.TestClassWithoutTestCases") +@SuppressWarnings({"PMD.TestClassWithoutTestCases", "unused"}) class TestNgExample { public String getMessage() { return "Hello World!"; diff --git a/src/test/java/rife/bld/extension/TestNgExampleTest.java b/src/test/java/rife/bld/extension/TestNgExampleTest.java index a2c35b9..bc8cac5 100644 --- a/src/test/java/rife/bld/extension/TestNgExampleTest.java +++ b/src/test/java/rife/bld/extension/TestNgExampleTest.java @@ -25,6 +25,7 @@ import org.testng.annotations.Test; * @author Erik C. Thauvin * @since 1.0 */ +@SuppressWarnings("unused") class TestNgExampleTest { private final TestNgExample example = new TestNgExample(); diff --git a/src/test/java/rife/bld/extension/TestNgOperationTest.java b/src/test/java/rife/bld/extension/TestNgOperationTest.java index 83b1f80..b6e97b7 100644 --- a/src/test/java/rife/bld/extension/TestNgOperationTest.java +++ b/src/test/java/rife/bld/extension/TestNgOperationTest.java @@ -140,8 +140,16 @@ class TestNgOperationTest { @Test void testDirectory() { + var foo = new File("FOO"); + var op = new TestNgOperation().directory(FOO); - assertThat(op.options().get("-d")).isEqualTo(FOO); + assertThat(op.options().get("-d")).as("as string").isEqualTo(FOO); + + op = new TestNgOperation().directory(foo); + assertThat(op.options().get("-d")).as("as file").isEqualTo(foo.getAbsolutePath()); + + op = new TestNgOperation().directory(foo.toPath()); + assertThat(op.options().get("-d")).as("as path").isEqualTo(foo.getAbsolutePath()); } @Test @@ -401,11 +409,28 @@ class TestNgOperationTest { @Test void testSourceDir() { + var foo = new File(FOO); + var bar = new File(BAR); + + var foobar = String.format("%s;%s", FOO, BAR); var op = new TestNgOperation().sourceDir(FOO, BAR); - assertThat(op.options().get("-sourcedir")).isEqualTo(String.format("%s;%s", FOO, BAR)); + assertThat(op.options().get("-sourcedir")).as("String...").isEqualTo(foobar); op = new TestNgOperation().sourceDir(List.of(FOO, BAR)); - assertThat(op.options().get("-sourcedir")).as("as list").isEqualTo(String.format("%s;%s", FOO, BAR)); + assertThat(op.options().get("-sourcedir")).as("List(String...)").isEqualTo(foobar); + + foobar = String.format("%s;%s", foo.getAbsolutePath(), bar.getAbsolutePath()); + op = new TestNgOperation().sourceDir(foo, bar); + assertThat(op.options().get("-sourcedir")).as("File...").isEqualTo(foobar); + + op = new TestNgOperation().sourceDirFiles(List.of(foo, bar)); + assertThat(op.options().get("-sourcedir")).as("List(String...)").isEqualTo(foobar); + + op = new TestNgOperation().sourceDir(foo.toPath(), bar.toPath()); + assertThat(op.options().get("-sourcedir")).as("Path...").isEqualTo(foobar); + + op = new TestNgOperation().sourceDirPaths(List.of(foo.toPath(), bar.toPath())); + assertThat(op.options().get("-sourcedir")).as("List(Path...)").isEqualTo(foobar); } @Test @@ -479,7 +504,14 @@ class TestNgOperationTest { @Test void testXmlPathInJar() { + var foo = new File(FOO); var op = new TestNgOperation().xmlPathInJar(FOO); - assertThat(op.options().get("-xmlpathinjar")).isEqualTo(FOO); + assertThat(op.options().get("-xmlpathinjar")).as("as string").isEqualTo(FOO); + + op = new TestNgOperation().xmlPathInJar(foo); + assertThat(op.options().get("-xmlpathinjar")).as("as file").isEqualTo(foo.getAbsolutePath()); + + op = new TestNgOperation().xmlPathInJar(foo.toPath()); + assertThat(op.options().get("-xmlpathinjar")).as("as path").isEqualTo(foo.getAbsolutePath()); } }