summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2023-05-17 10:57:23 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2023-07-18 18:10:25 +0200
commit3fc925aa84901072a1fc9a1d05b1b3efc24c47e2 (patch)
tree53d0839d6b954a062c4ae82b75766242187f59bf
parent308b3e83c3dc65987f7187e55b2fa549147882d1 (diff)
guix: import: Fix multiple licenses output in texlive importer.
* guix/import/texlive.scm (string->license): Add missing case and try first to split license strings before giving up. * tests/texlive.scm (%fake-tlpdb): Add test data. ("texlive->guix-package, multiple licenses"): New test.
-rw-r--r--guix/import/texlive.scm3
-rw-r--r--tests/texlive.scm48
2 files changed, 50 insertions, 1 deletions
diff --git a/guix/import/texlive.scm b/guix/import/texlive.scm
index 31abf533c4..33a0e7d1d9 100644
--- a/guix/import/texlive.scm
+++ b/guix/import/texlive.scm
@@ -109,7 +109,8 @@
("cc-by-nc-nd-2.5" 'non-free)
("cc-by-nc-nd-3" 'non-free)
("cc-by-nc-nd-4" 'non-free)
- ((x) (string->license x))
+ ((? string? x) (string->license (string-split x #\space)))
+ ((x) `(error unknown-license ,x))
((lst ...) `(list ,@(map string->license lst)))
(x `(error unknown-license ,x))))
diff --git a/tests/texlive.scm b/tests/texlive.scm
index 19bb3bda1b..9f4c965139 100644
--- a/tests/texlive.scm
+++ b/tests/texlive.scm
@@ -50,6 +50,18 @@
(runfiles
. ("texmf-dist/tex/latex/12many/12many.sty"))
(catalogue-license . "lppl")))
+ ("chs-physics-report"
+ . ((name . "ch-physics-report")
+ (shortdesc . "Physics lab reports...")
+ (longdesc . "This package may...")
+ (docfiles
+ .
+ ("texmf-dist/doc/latex/chs-physics-report/README.txt"
+ "texmf-dist/doc/latex/chs-physics-report/chs-physics-report.pdf"))
+ (runfiles
+ .
+ ("texmf-dist/tex/latex/chs-physics-report/chs-physics-report.sty"))
+ (catalogue-license . "pd cc-by-sa-3")))
("example"
. ((name . "example")
(shortdesc . "Typeset examples...")
@@ -302,4 +314,40 @@ completely compatible with Plain TeX.")
(format #t "~s~%" result)
(pk 'fail result #f)))))))
+(test-assert "texlive->guix-package, multiple licenses"
+ ;; Replace network resources with sample data.
+ (mock ((guix build svn) svn-fetch
+ (lambda* (url revision directory
+ #:key (svn-command "svn")
+ (user-name #f)
+ (password #f)
+ (recursive? #t))
+ (mkdir-p directory)
+ (with-output-to-file (string-append directory "/foo")
+ (lambda ()
+ (display "source")))))
+ (let ((result (texlive->guix-package "chs-physics-report"
+ #:package-database
+ (lambda _ %fake-tlpdb))))
+ (match result
+ (('package
+ ('name "texlive-chs-physics-report")
+ ('version _)
+ ('source ('texlive-origin
+ 'name 'version
+ ('list "doc/latex/chs-physics-report/"
+ "tex/latex/chs-physics-report/")
+ ('base32 (? string? hash))))
+ ('outputs ''("out" "doc"))
+ ('build-system 'texlive-build-system)
+ ('home-page (? string?))
+ ('synopsis (? string?))
+ ('description (? string?))
+ ('license ('list 'public-domain 'cc-by-sa3.0)))
+ #true)
+ (_
+ (begin
+ (format #t "~s~%" result)
+ (pk 'fail result #f)))))))
+
(test-end "texlive")