Subject: bug#26772: [PATCH 2/3] import: cran: Robustify cran-package?.

From: [email-masked] (Ludovic Courtès)
Date: Sat, 13 May 2017 00:11:04 +0200

Mathieu Othacehe <[email-masked]> skribis:

> * 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.

[...]

> @@ -374,7 +375,8 @@ dependencies."
>                      (start (string-rindex url #\/)))
>                  ;; The URL ends on
>                  ;; (string-append "/" name "_" version ".tar.gz")
> -                (substring url (+ start 1) end)))
> +                (if (and start end)
> +                    (substring url (+ start 1) end) #f)))

This can be written as:

  (and start end (substring url …))

> @@ -415,6 +417,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))

OK!

Do you think you could add this specific case (r-minimal) as a test case
for ‘cran-package?’ in tests/cran.scm?  That would be awesome.

Otherwise LGTM, thanks!

Ludo’.