~ruther/guix-local

f403d7abdf28d2d6e4446a2989e0d37d023b6b53 — Julien Lepiller 9 years ago 8df1faa
guix: ant-build-system: Add #:test-include and #:test-exclude arguments.

* guix/build-system/ant.scm: Add #:test-include and #:test-exclude
arguments.
* guix/build/ant-build-system.scm: Generate test list from arguments.
* doc/guix.texi (Build Systems): Document it.
3 files changed, 22 insertions(+), 5 deletions(-)

M doc/guix.texi
M guix/build-system/ant.scm
M guix/build/ant-build-system.scm
M doc/guix.texi => doc/guix.texi +5 -1
@@ 3481,7 3481,11 @@ specify the source sub-directory, defaulting to ``src''.

The @code{#:main-class} parameter can be used with the minimal ant 
buildfile to specify the main class of the resulting jar.  This makes the 
jar file executable.
jar file executable.  The @code{#:test-include} parameter can be used to 
specify the list of junit tests to run. It defaults to
@code{(list "**/*Test.java")}.  The @code{#:test-exclude} can be used to
disable some tests. It defaults to @code{(list "**/Abstract*.java")},
because abstract classes cannot be run as tests.

The parameter @code{#:build-target} can be used to specify the Ant task
that should be run during the @code{build} phase.  By default the

M guix/build-system/ant.scm => guix/build-system/ant.scm +4 -0
@@ 100,6 100,8 @@
                    (build-target "jar")
                    (jar-name #f)
                    (main-class #f)
                    (test-include (list "**/*Test.java"))
                    (test-exclude (list "**/Abstract*.java"))
                    (source-dir "src")
                    (test-dir "src/test")
                    (phases '(@ (guix build ant-build-system)


@@ 132,6 134,8 @@
                  #:build-target ,build-target
                  #:jar-name ,jar-name
                  #:main-class ,main-class
                  #:test-include (list ,@test-include)
                  #:test-exclude (list ,@test-exclude)
                  #:source-dir ,source-dir
                  #:test-dir ,test-dir
                  #:phases ,phases

M guix/build/ant-build-system.scm => guix/build/ant-build-system.scm +13 -4
@@ 36,7 36,9 @@
;; Code:

(define* (default-build.xml jar-name prefix #:optional
                            (source-dir ".") (test-dir "./test") (main-class #f))
                            (source-dir ".") (test-dir "./test") (main-class #f)
                            (test-include '("**/*Test.java"))
                            (test-exclude '("**/Abstract*Test.java")))
  "Create a simple build.xml with standard targets for Ant."
  (call-with-output-file "build.xml"
    (lambda (port)


@@ 109,7 111,12 @@
                                (batchtest (@ (fork "yes")
                                              (todir "${test.home}/test-reports"))
                                           (fileset (@ (dir "${test.home}/java"))
                                                    (include (@ (name "**/*Test.java" )))))))
                                                    ,@(map (lambda (file)
                                                            `(include (@ (name ,file))))
                                                       test-include)
                                                    ,@(map (lambda (file)
                                                            `(exclude (@ (name ,file))))
                                                       test-exclude)))))

                 (target (@ (name "jar")
                            (depends "compile, manifest"))


@@ 150,12 157,14 @@ to the default GNU unpack strategy."
(define* (configure #:key inputs outputs (jar-name #f)
                    (source-dir "src")
                    (test-dir "src/test")
                    (main-class #f) #:allow-other-keys)
                    (main-class #f)
                    (test-include '("**/*Test.java"))
                    (test-exclude '("**/Abstract*.java")) #:allow-other-keys)
  (when jar-name
    (default-build.xml jar-name
                       (string-append (assoc-ref outputs "out")
                                      "/share/java")
                       source-dir test-dir main-class))
                       source-dir test-dir main-class test-include test-exclude))
  (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
  (setenv "CLASSPATH" (generate-classpath inputs)))