guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/03: import: cran: Robustify cran-package?.


From: Mathieu Othacehe
Subject: 02/03: import: cran: Robustify cran-package?.
Date: Sat, 13 May 2017 06:41:54 -0400 (EDT)

mothacehe pushed a commit to branch master
in repository guix.

commit db427602d8f993ee0025fa68d1af274aa8d69ab9
Author: Mathieu Othacehe <address@hidden>
Date:   Thu May 4 11:52:33 2017 +0200

    import: cran: Robustify cran-package?.
    
    * guix/import/cran.scm (package->upstream-name): Return #f if url
      start and end index could not be determined.
      (cran-package?): Check if the upstream-name can be extracted from
      given package.
    * tests/cran.scm: Add "r-minimal is not a cran package" to make sure that
      r-minimal is not detected as a cran package.
    
    This fixes a failure of guix refresh on r-minimal because no
    upsteam-name can be determined from ".../R-version.tar.gz" uri.
---
 guix/import/cran.scm | 6 +++++-
 tests/cran.scm       | 6 ++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index be34a75..a940516 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <address@hidden>
 ;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <address@hidden>
+;;; Copyright © 2017 Mathieu Othacehe <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -374,7 +375,7 @@ dependencies."
                     (start (string-rindex url #\/)))
                 ;; The URL ends on
                 ;; (string-append "/" name "_" version ".tar.gz")
-                (substring url (+ start 1) end)))
+                (and start end (substring url (+ start 1) end))))
              (_ #f)))
           (_ #f)))))
 
@@ -415,6 +416,9 @@ dependencies."
 (define (cran-package? package)
   "Return true if PACKAGE is an R package from CRAN."
   (and (string-prefix? "r-" (package-name package))
+       ;; Check if the upstream name can be extracted from package uri.
+       (package->upstream-name package)
+       ;; Check if package uri(s) are prefixed by "mirror://cran".
        (match (and=> (package-source package) origin-uri)
          ((? string? uri)
           (string-prefix? "mirror://cran" uri))
diff --git a/tests/cran.scm b/tests/cran.scm
index c162d45..d785ec5 100644
--- a/tests/cran.scm
+++ b/tests/cran.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Ricardo Wurmus <address@hidden>
+;;; Copyright © 2017 Mathieu Othacehe <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -17,6 +18,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (test-cran)
+  #:use-module (gnu packages statistics)
   #:use-module (guix import cran)
   #:use-module (guix tests)
   #:use-module (srfi srfi-1)
@@ -86,6 +88,10 @@ Date/Publication: 2015-07-14 14:15:16
   '()
   ((@@ (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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]