Subject: [bug#56112] [PATCH] gnu: Add java-lambdatest

From: "Artyom V. Poptsov" <[email-masked]>
Date: Mon, 20 Jun 2022 22:26:10 +0300

Hello,

this patch adds "LambdaTest" under the name "java-lambdatest". [1]

"LambdaTest" package is required to pack "java-cmdoption" [2] package
properly.

From 2eff8e7fc79336f6eb7795fd942daeb07da63f00 Mon Sep 17 00:00:00 2001
From: "Artyom V. Poptsov" <[email-masked]>
Date: Mon, 20 Jun 2022 22:06:28 +0300
Subject: [PATCH] gnu: Add java-lambdatest

* gnu/packages/java.scm (java-lambdatest): New variable.
* gnu/packages/patches/java-lambdatest-fix.patch: Add to the repository.
* gnu/local.mk (dist_patch_DATA): Add 'java-lambdatest-fix.patch'.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/java.scm                         | 56 +++++++++++++++++++
 .../patches/java-lambdatest-fix.patch         | 29 ++++++++++
 3 files changed, 86 insertions(+)
 create mode 100644 gnu/packages/patches/java-lambdatest-fix.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 197c8679eb..2f0a187125 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1321,6 +1321,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/java-commons-collections-fix-java8.patch \
   %D%/packages/patches/java-commons-lang-fix-dependency.patch \
   %D%/packages/patches/java-jeromq-fix-tests.patch		\
+  %D%/packages/patches/java-lambdatest-fix.patch		\
   %D%/packages/patches/java-openjfx-build-jdk_version.patch     \
   %D%/packages/patches/java-powermock-fix-java-files.patch		\
   %D%/packages/patches/java-simple-xml-fix-tests.patch		\
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 7b0507d93c..794ccf22f7 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -14282,3 +14282,59 @@ The following TLA+ tools are available in this distribution:
 @item The PlusCal translator.
 @end itemize")
       (license license:expat))))
+
+(define-public java-lambdatest
+  (package
+    (name "java-lambdatest")
+    (version "0.7.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/lefou/LambdaTest")
+                    (commit version)))
+              (patches
+               (search-patches "java-lambdatest-fix.patch"))
+              (sha256
+               (base32
+                "172wz2cxrwganx0xwx395z627ph9b20hj8mw21fygq8hwcvmy94m"))))
+    (build-system ant-build-system)
+    (native-inputs (list openjdk11 java-logback-classic java-logback-core))
+    (inputs (list java-junit
+                  java-slf4j-api
+                  java-testng))
+    (arguments
+     `(#:jar-name "lambdatest.jar"
+       #:source-dir "src/main"
+       #:test-dir   "src/test"
+       #:jdk ,openjdk11
+       #:phases (modify-phases %standard-phases
+                  (replace 'check
+                    (lambda _
+                      (invoke "ant" "compile-tests")
+                      (let ((tests (filter
+                                    (lambda (file-name)
+                                      ;; Remove non-working tests.
+                                      (not (string-contains file-name
+                                                            "RuntimeTest")))
+                                    (find-files "build" ".*Test.class")))
+                            (classpath (string-append
+                                        (getenv "CLASSPATH")
+                                        ":build/classes"
+                                        ":build/test-classes")))
+                        (catch #t
+                          (lambda _
+                            (invoke "java"
+                                    "-cp" classpath
+                                    "org.testng.TestNG" "-testclass"
+                                    (string-join tests ",")))
+                          (lambda (exception c)
+                            ;; XXX: TestNG exits with exit code 2 when some
+                            ;; tests are skipped.  Just ignore this.
+                            (unless (= (invoke-error-exit-status c) 2)
+                              (throw exception c))
+                            #t))))))))
+    (home-page "https://github.com/lefou/LambdaTest")
+    (synopsis "Functional testing API on top of JUnit and TestNG")
+    (description "Lambda-enabled functional testing on top of JUnit and
+TestNG.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/patches/java-lambdatest-fix.patch b/gnu/packages/patches/java-lambdatest-fix.patch
new file mode 100644
index 0000000000..e04ff0471f
--- /dev/null
+++ b/gnu/packages/patches/java-lambdatest-fix.patch
@@ -0,0 +1,29 @@
+From 49645c94fc8bdbea342d6f96d46e0405b81b874c Mon Sep 17 00:00:00 2001
+From: "Artyom V. Poptsov" <[email-masked]>
+Date: Sun, 19 Jun 2022 23:11:42 +0300
+Subject: [PATCH] test: Fix tests
+
+* src/test/java/de/tobiasroeser/lambdatest/AssertTest.java
+  (testAssertEqualsInteger): Fix a regex so it will match the actual test
+  output.
+
+---
+ src/test/java/de/tobiasroeser/lambdatest/AssertTest.java | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/test/java/de/tobiasroeser/lambdatest/AssertTest.java b/src/test/java/de/tobiasroeser/lambdatest/AssertTest.java
+index fe2db12..5ef5ab3 100644
+--- a/src/test/java/de/tobiasroeser/lambdatest/AssertTest.java
++++ b/src/test/java/de/tobiasroeser/lambdatest/AssertTest.java
+@@ -51,7 +51,7 @@ public class AssertTest {
+ 		Assert.assertEquals(0, 0);
+ 		Assert.assertEquals(Integer.valueOf(0), 0);
+ 		Assert.assertEquals(0, Integer.valueOf(0));
+-		intercept(AssertionError.class, "\\QActual 0 is not equal to 1.\\E", () -> {
++		intercept(AssertionError.class, "\\QActual false is not equal to true\\E", () -> {
+ 			Assert.assertEquals(0, 1);
+ 		});
+ 		intercept(AssertionError.class, "\\QActual 0 is not equal to 1.\\E", () -> {
+-- 
+2.25.1
+
-- 
2.25.1

Thanks,

- Artyom

References:
1. LambdaTest - Lambda-enabled functional testing API on top of JUnit
   and TestNG
   <https://github.com/lefou/LambdaTest>
2. CmdOption is a simple annotation-driven command line parser toolkit
   for Java 6+ applications that is configured through annotations.
   <https://github.com/ToToTec/CmdOption>

-- 
Artyom "avp" Poptsov <[email-masked]>
Home page: https://memory-heap.org/~avp/
CADR Hackerspace co-founder: https://cadrspace.ru/
GPG: D0C2 EAC1 3310 822D 98DE  B57C E9C5 A2D9 0898 A02F