From 7a41349bed30d03032ee249d43dc64de5cefdd84 Mon Sep 17 00:00:00 2001 From: Nicolas Graves Date: Wed, 17 Sep 2025 01:03:44 +0200 Subject: import: cran: Move tests to tests/import/cran.scm. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * tests/cran.scm: Move to tests/import/cran.scm. * Makefile.am: Refresh it. * CODEOWNERS: Refresh it. * etc/teams.scm: Refresh it. Signed-off-by: Ludovic Courtès --- CODEOWNERS | 2 +- Makefile.am | 2 +- etc/teams.scm | 2 +- tests/cran.scm | 137 -------------------------------------------------- tests/import/cran.scm | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 140 insertions(+), 140 deletions(-) delete mode 100644 tests/cran.scm create mode 100644 tests/import/cran.scm diff --git a/CODEOWNERS b/CODEOWNERS index ecabe612760..6fe2544a97f 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -286,7 +286,7 @@ guix/build/r-build-system\.scm @guix/r guix/build-system/r\.scm @guix/r guix/import/cran\.scm @guix/r guix/scripts/import/cran\.scm @guix/r -tests/cran\.scm @guix/r +tests/import/cran\.scm @guix/r gnu/packages/chez\.scm @guix/racket gnu/packages/racket\.scm @guix/racket diff --git a/Makefile.am b/Makefile.am index 472909a62a2..ff87e9baf28 100644 --- a/Makefile.am +++ b/Makefile.am @@ -549,7 +549,6 @@ SCM_TESTS = \ tests/composer.scm \ tests/containers.scm \ tests/cpio.scm \ - tests/cran.scm \ tests/cve.scm \ tests/debug-link.scm \ tests/derivations.scm \ @@ -566,6 +565,7 @@ SCM_TESTS = \ tests/gremlin.scm \ tests/hexpm.scm \ tests/import/cpan.scm \ + tests/import/cran.scm \ tests/import/crate.scm \ tests/import/egg.scm \ tests/import/elm.scm \ diff --git a/etc/teams.scm b/etc/teams.scm index 08f1f5ec381..1f5a2da6228 100755 --- a/etc/teams.scm +++ b/etc/teams.scm @@ -883,7 +883,7 @@ and the r-build-system." "guix/build-system/r.scm" "guix/import/cran.scm" "guix/scripts/import/cran.scm" - "tests/cran.scm"))) + "tests/import/cran.scm"))) (define-team racket (team 'racket diff --git a/tests/cran.scm b/tests/cran.scm deleted file mode 100644 index 5c820b1ab32..00000000000 --- a/tests/cran.scm +++ /dev/null @@ -1,137 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015 Ricardo Wurmus -;;; Copyright © 2017 Mathieu Othacehe -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (test-cran) - #:use-module (gnu packages statistics) - #:use-module (guix import cran) - #:use-module (guix tests) - #:use-module (srfi srfi-1) - #:use-module (srfi srfi-64) - #:use-module (srfi srfi-26) - #:use-module (ice-9 match)) - -(define description " -Package: My-Example -Type: Package -Title: Example package -Version: 1.2.3 -Date: 2015-12-10 -Author: Ricardo Wurmus -Maintainer: Guix Schmeeks -URL: http://gnu.org/s/my-example -Description: This is a long description -spanning multiple lines: and it could confuse the parser that this line is very long or perhaps the fact that -there is a colon : on the lines. - And: this line continues the description. -biocViews: 0 -SystemRequirements: Cairo (>= 0) -Depends: A C++11 compiler. Version 4.6.* of g++ (as - currently in Rtools) is insufficient; versions 4.8.*, 4.9.* or - later will be fine. -License: GPL (>= 3) -Imports: Rcpp (>= 0.11.5), proto, Scales -LinkingTo: Rcpp, BH -NeedsCompilation: yes -Repository: CRAN -Date/Publication: 2015-07-14 14:15:16 -") - -(define description-alist - (description->alist description)) - -(define simple-alist - '(("Key" . "Value") - ("SimpleList" . "R, Rcpp, something, whatever") - ("BadList" . "This is not a real list, you know?") - ("List" . "R (>= 2.2), BH (for no reason), GenomicRanges"))) - -(test-begin "cran") - -(test-assert "description->alist: contains all valid keys" - (let ((keys '("Package" "Type" "Title" "Version" "Date" - "Author" "Maintainer" "URL" "Description" - "SystemRequirements" "Depends" "License" - "Imports" "biocViews" "LinkingTo" - "NeedsCompilation" "Repository" - "Date/Publication"))) - (lset= string=? keys (map car description-alist)))) - -(test-equal "listifyx: return empty list if key cannot be found" - '() - ((@@ (guix import cran) listify) simple-alist "Letters")) - -(test-equal "listify: split comma-separated value into elements" - '("R" "Rcpp" "something" "whatever") - ((@@ (guix import cran) listify) simple-alist "SimpleList")) - -(test-equal "listify: strip off parentheses" - '("R" "BH" "GenomicRanges") - ((@@ (guix import cran) listify) simple-alist "List")) - -(test-equal "listify: ignore values that are no lists" - '() - ((@@ (guix import cran) listify) simple-alist "BadList")) - -(test-equal "r-mininal is not a cran package" - #f - ((@@ (guix import cran) cran-package?) r-minimal)) - -(test-assert "description->package" - ;; Replace network resources with sample data. - (mock ((guix build download) url-fetch - (lambda* (url file-name - #:key - (mirrors '()) verify-certificate?) - (with-output-to-file file-name - (lambda () - (display - (match url - ("mirror://cran/src/contrib/My-Example_1.2.3.tar.gz" - "source") - (_ (error "Unexpected URL: " url)))))))) - (match (description->package 'cran description-alist) - (('package - ('name "r-my-example") - ('version "1.2.3") - ('source ('origin - ('method 'url-fetch) - ('uri ('cran-uri "My-Example" 'version)) - ('sha256 - ('base32 - (? string? hash))))) - ('properties ('quasiquote (('upstream-name . "My-Example")))) - ('build-system 'r-build-system) - ('inputs ('list 'cairo)) - ('propagated-inputs - ('list 'r-bh 'r-proto 'r-rcpp 'r-scales)) - ('home-page "http://gnu.org/s/my-example") - ('synopsis "Example package") - ('description - "\ -This is a long description spanning multiple lines: and it could confuse the -parser that this line is very long or perhaps the fact that there is a colon : -on the lines. And: this line continues the description.") - ('license 'gpl3+)) - #t) - (x - (begin - (format #t "~s\n" x) - (pk 'fail x #f)))))) - -(test-end "cran") diff --git a/tests/import/cran.scm b/tests/import/cran.scm new file mode 100644 index 00000000000..5c820b1ab32 --- /dev/null +++ b/tests/import/cran.scm @@ -0,0 +1,137 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Ricardo Wurmus +;;; Copyright © 2017 Mathieu Othacehe +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (test-cran) + #:use-module (gnu packages statistics) + #:use-module (guix import cran) + #:use-module (guix tests) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-64) + #:use-module (srfi srfi-26) + #:use-module (ice-9 match)) + +(define description " +Package: My-Example +Type: Package +Title: Example package +Version: 1.2.3 +Date: 2015-12-10 +Author: Ricardo Wurmus +Maintainer: Guix Schmeeks +URL: http://gnu.org/s/my-example +Description: This is a long description +spanning multiple lines: and it could confuse the parser that this line is very long or perhaps the fact that +there is a colon : on the lines. + And: this line continues the description. +biocViews: 0 +SystemRequirements: Cairo (>= 0) +Depends: A C++11 compiler. Version 4.6.* of g++ (as + currently in Rtools) is insufficient; versions 4.8.*, 4.9.* or + later will be fine. +License: GPL (>= 3) +Imports: Rcpp (>= 0.11.5), proto, Scales +LinkingTo: Rcpp, BH +NeedsCompilation: yes +Repository: CRAN +Date/Publication: 2015-07-14 14:15:16 +") + +(define description-alist + (description->alist description)) + +(define simple-alist + '(("Key" . "Value") + ("SimpleList" . "R, Rcpp, something, whatever") + ("BadList" . "This is not a real list, you know?") + ("List" . "R (>= 2.2), BH (for no reason), GenomicRanges"))) + +(test-begin "cran") + +(test-assert "description->alist: contains all valid keys" + (let ((keys '("Package" "Type" "Title" "Version" "Date" + "Author" "Maintainer" "URL" "Description" + "SystemRequirements" "Depends" "License" + "Imports" "biocViews" "LinkingTo" + "NeedsCompilation" "Repository" + "Date/Publication"))) + (lset= string=? keys (map car description-alist)))) + +(test-equal "listifyx: return empty list if key cannot be found" + '() + ((@@ (guix import cran) listify) simple-alist "Letters")) + +(test-equal "listify: split comma-separated value into elements" + '("R" "Rcpp" "something" "whatever") + ((@@ (guix import cran) listify) simple-alist "SimpleList")) + +(test-equal "listify: strip off parentheses" + '("R" "BH" "GenomicRanges") + ((@@ (guix import cran) listify) simple-alist "List")) + +(test-equal "listify: ignore values that are no lists" + '() + ((@@ (guix import cran) listify) simple-alist "BadList")) + +(test-equal "r-mininal is not a cran package" + #f + ((@@ (guix import cran) cran-package?) r-minimal)) + +(test-assert "description->package" + ;; Replace network resources with sample data. + (mock ((guix build download) url-fetch + (lambda* (url file-name + #:key + (mirrors '()) verify-certificate?) + (with-output-to-file file-name + (lambda () + (display + (match url + ("mirror://cran/src/contrib/My-Example_1.2.3.tar.gz" + "source") + (_ (error "Unexpected URL: " url)))))))) + (match (description->package 'cran description-alist) + (('package + ('name "r-my-example") + ('version "1.2.3") + ('source ('origin + ('method 'url-fetch) + ('uri ('cran-uri "My-Example" 'version)) + ('sha256 + ('base32 + (? string? hash))))) + ('properties ('quasiquote (('upstream-name . "My-Example")))) + ('build-system 'r-build-system) + ('inputs ('list 'cairo)) + ('propagated-inputs + ('list 'r-bh 'r-proto 'r-rcpp 'r-scales)) + ('home-page "http://gnu.org/s/my-example") + ('synopsis "Example package") + ('description + "\ +This is a long description spanning multiple lines: and it could confuse the +parser that this line is very long or perhaps the fact that there is a colon : +on the lines. And: this line continues the description.") + ('license 'gpl3+)) + #t) + (x + (begin + (format #t "~s\n" x) + (pk 'fail x #f)))))) + +(test-end "cran") -- cgit v1.3