summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorJulien Lepiller <julien@lepiller.eu>2020-06-27 23:45:57 +0200
committerJulien Lepiller <julien@lepiller.eu>2020-07-17 04:21:10 +0200
commite1ee5a75f3017315bb82f38b068bd4c003464b64 (patch)
tree311e24672b25b16bcb9bb096ed90d9ec4f2fa89d /gnu
parent586db0f9c52adc64ffce89098bf5cdb07580574c (diff)
gnu: Add java-surefire-junit4.
* gnu/packages/maven.scm (java-surefire-junit4): New variable.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/maven.scm92
1 files changed, 92 insertions, 0 deletions
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index 87a3385b094..cbeda43b72f 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -3403,3 +3403,95 @@ POM in Apache Maven Surefire project.")))
3403 (synopsis "Shared JUnit4 provider code for Maven SureFire") 3403 (synopsis "Shared JUnit4 provider code for Maven SureFire")
3404 (description "This package contains shared code for all JUnit providers, 3404 (description "This package contains shared code for all JUnit providers,
3405starting from JUnit 4."))) 3405starting from JUnit 4.")))
3406
3407(define-public java-surefire-junit4
3408 (package
3409 (inherit java-surefire-logger-api)
3410 (name "java-surefire-junit4")
3411 (arguments
3412 `(;#:tests? #f
3413 #:jar-name "java-surefire-junit4.jar"
3414 #:source-dir "surefire-providers/surefire-junit4/src/main/java"
3415 #:test-dir "surefire-providers/surefire-junit4/src/test"
3416 #:modules ((guix build ant-build-system)
3417 (guix build utils)
3418 (guix build java-utils)
3419 (sxml simple))
3420 #:phases
3421 (modify-phases %standard-phases
3422 (add-before 'install 'regenerate-own-pom
3423 (lambda _
3424 ;; Surefire struggles resolving artifacts because of this pom
3425 ;; file, resulting in a NullPointerException when collecting
3426 ;; Artifacts (and a "Failure detected." message from
3427 ;; DefaultArtifactResolver). Replace the pom file with a much
3428 ;; simpler one. Everything is shaded anyway (as used to be the
3429 ;; case in 2.22), so there will not be missing dependencies.
3430 (with-output-to-file "surefire-providers/surefire-junit4/pom.xml"
3431 (lambda _
3432 (sxml->xml
3433 `((project
3434 (modelVersion "4.0.0")
3435 (name "Surefire JUnit4")
3436 (groupId "org.apache.maven.surefire")
3437 (artifactId "surefire-junit4")
3438 (version ,,(package-version java-surefire-common-java5)))))))
3439 #t))
3440 (add-before 'build 'copy-resources
3441 (lambda _
3442 (mkdir-p "build/classes")
3443 (copy-recursively "surefire-providers/surefire-junit4/src/main/resources"
3444 "build/classes")
3445 #t))
3446 (add-before 'build 'prepare-shade
3447 (lambda* (#:key inputs #:allow-other-keys)
3448 (mkdir-p "build/classes")
3449 (with-directory-excursion "build/classes"
3450 (for-each
3451 (lambda (input)
3452 (for-each
3453 (lambda (jar-file)
3454 (invoke "jar" "xf" jar-file)
3455 (delete-file-recursively "META-INF"))
3456 (find-files (assoc-ref inputs input) ".*.jar$")))
3457 '("maven-shared-utils" "java-surefire-common-java5"
3458 "java-surefire-common-junit3" "java-surefire-common-junit4"
3459 "java-surefire-api")))
3460 #t))
3461 (add-after 'build 'shade
3462 (lambda* (#:key inputs #:allow-other-keys)
3463 (let ((jarjar
3464 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3465 (injar "java-surefire-junit4.jar")
3466 (outjar "java-surefire-junit4-shaded.jar"))
3467 (with-directory-excursion "build/jar"
3468 (with-output-to-file "rules"
3469 (lambda _
3470 (format #t (string-append
3471 "rule "
3472 "org.apache.maven.shared.utils.** "
3473 "org.apache.maven.surefire.shade."
3474 "org.apache.maven.shared.utils.@1~%"))))
3475 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3476 (delete-file injar)
3477 (rename-file outjar injar)))
3478 #t))
3479 (replace 'install
3480 (install-from-pom "surefire-providers/surefire-junit4/pom.xml")))))
3481 (propagated-inputs
3482 `(("java-junit" ,java-junit)
3483 ("java-surefire-parent-pom" ,java-surefire-parent-pom)))
3484 (inputs
3485 `(("java-surefire-common-junit4" ,java-surefire-common-junit4)
3486 ("java-surefire-common-junit3" ,java-surefire-common-junit3)
3487 ("java-surefire-common-java5" ,java-surefire-common-java5)
3488 ("java-surefire-api" ,java-surefire-api)))
3489 (native-inputs
3490 `(("java-jarjar" ,java-jarjar)
3491 ("unzip" ,unzip)
3492 ("java-junit" ,java-junit)
3493 ("java-hamcrest-all" ,java-hamcrest-all)
3494 ("java-fest-assert" ,java-fest-assert)))
3495 (synopsis "SureFire JUnit 4.0+ runner")
3496 (description "This package contains the runner for tests run on a forked
3497JVM, using JUnit 4.0 or later.")))