aboutsummaryrefslogtreecommitdiff
path: root/tests/cpan.scm
blob: b4db9e60e46daccd3cd5c387c4cb311bf0de6712 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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 <http://www.gnu.org/licenses/>.

(define-module (test-cpan)
  #:use-module (guix import cpan)
  #:use-module (guix base32)
  #:use-module (gcrypt hash)
  #:use-module (guix tests http)
  #:use-module (guix grafts)
  #:use-module (srfi srfi-64)
  #:use-module (web client)
  #:use-module (ice-9 match))

;; Globally disable grafts because they can trigger early builds.
(%graft? #f)

(define test-json
  "{
  \"metadata\" : {
    \"name\" : \"Foo-Bar\",
    \"version\" : \"0.1\"
  }
  \"name\" : \"Foo-Bar-0.1\",
  \"distribution\" : \"Foo-Bar\",
  \"license\" : [
    \"perl_5\"
  ],
  \"dependency\": [
     { \"relationship\": \"requires\",
       \"phase\": \"runtime\",
       \"version\": \"1.05\",
       \"module\": \"Test::Script\"
     }
  ],
  \"abstract\" : \"Fizzle Fuzz\",
  \"download_url\" : \"http://example.com/Foo-Bar-0.1.tar.gz\",
  \"author\" : \"Guix\",
  \"version\" : \"0.1\"
}")

(define test-source
  "foobar")

;; Avoid collisions with other tests.
(%http-server-port 10400)

(test-begin "cpan")

(test-assert "cpan->guix-package"
  ;; Replace network resources with sample data.
  (with-http-server `((200 ,test-json)
                      (200 ,test-source)
                      (200 "{ \"distribution\" : \"Test-Script\" }"))
    (parameterize ((%metacpan-base-url (%local-url))
                   (current-http-proxy (%local-url)))
      (match (cpan->guix-package "Foo::Bar")
        (('package
           ('name "perl-foo-bar")
           ('version "0.1")
           ('source ('origin
                      ('method 'url-fetch)
                      ('uri ('string-append "http://example.com/Foo-Bar-"
                                            'version ".tar.gz"))
                      ('sha256
                       ('base32
                        (? string? hash)))))
           ('build-system 'perl-build-system)
           ('propagated-inputs
            ('quasiquote
             (("perl-test-script" ('unquote 'perl-test-script)))))
           ('home-page "https://metacpan.org/release/Foo-Bar")
           ('synopsis "Fizzle Fuzz")
           ('description 'fill-in-yourself!)
           ('license 'perl-license))
         (string=? (bytevector->nix-base32-string
                    (call-with-input-string test-source port-sha256))
                   hash))
        (x
         (pk 'fail x #f))))))

(test-equal "metacpan-url->mirror-url, http"
  "mirror://cpan/authors/id/T/TE/TEST/Foo-Bar-0.1.tar.gz"
  (metacpan-url->mirror-url
   "http://cpan.metacpan.org/authors/id/T/TE/TEST/Foo-Bar-0.1.tar.gz"))

(test-equal "metacpan-url->mirror-url, https"
  "mirror://cpan/authors/id/T/TE/TEST/Foo-Bar-0.1.tar.gz"
  (metacpan-url->mirror-url
   "https://cpan.metacpan.org/authors/id/T/TE/TEST/Foo-Bar-0.1.tar.gz"))

(test-end "cpan")
hacking on guix-daemon or when guix-daemon is not already running. Ludovic Courtès 2020-10-08doc: Developers don't need to run "make install" in Guix....Suggested by Emmanuel Agullo. * doc/contributing.texi (Building from Git): Mention that running "make install" is unnecessary. Ludovic Courtès 2020-09-18doc: Fix broken hyperlinks in the contribution instructions....* doc/contributing.texi (Packaging Guidelines, Submitting Patches): Change URLs from relative to absolute links. Greg Hogan 2020-09-12doc: Document the use of snippets vs phases....* doc/contributing.texi (Snippets versus phases): New section. Maxim Cournoyer 2020-08-27doc: Improve the instructions regarding `guix git authenticate`....* doc/contributing.texi (Building from Git): Instruct the user to fetch the 'keyring' branch. Fix a typo. Signed-off-by: Leo Famulari <leo@famulari.name> Joshua Branson 2020-07-23doc: Recommend running 'guix git authenticate' when cloning the repo....* doc/contributing.texi (Building from Git): Adjust instruction and recommend 'guix git authenticate'. Ludovic Courtès 2020-07-09doc: Fix typo....* doc/contributing.texi (The Perfect Setup): Fix spelling & placement of ‘additionally’. Tobias Geerinckx-Rice 2020-06-20doc: Make issues.guix.gnu.org more visible....* doc/contributing.texi (Tracking Bugs and Patches): Make issues.guix.gnu.org more visible, update issue URL. Ludovic Courtès 2020-06-16doc: Recommend "make authenticate" after ./bootstrap....* doc/contributing.texi (Building from Git): Move "make authenticate" instructions below. Ludovic Courtès 2020-06-14doc: Adjust branching and rebuilding strategy to match reality....The amount of packages has more than tripled since this section was written. Adjust the rebuild limits and cycle lengths based on current practices. * doc/contributing.texi (Submitting Patches): Increase 'staging' rebuild limit to 1800 packages, and adjust the cycle to six weeks. Increase 'core-updates' cycle to six months. Marius Bakke 2020-05-28doc: Remove explicit support for mips64el-linux....It's been a good run, but no one is maintaining the architecture. So long, and thanks for all the fish. * doc/guix.texi (GNU Distribution): Change text for mips64el-linux to denote it is deprecated. (Daemon Offload Setup): Change occurrences of mips64el-linux to aarch64-linux and adjust local code snippets. (Guix Environment)[cross-compilation]: Change mips64el-linux-gnu to aarch64-linux-gnu. (GNU Build System)(package-cross-derivation]: Same. (G-Expressions)[cross compilation]: Same. (Additional Build Options)[cross-compilation, build logs]: Same. (qemu-binfmt-service-type): Remove mips64el. * doc/contributing.texi (Submitting Patches): Same. * m4/guix.m4: (GUIX_ASSERT_SUPPORTED_SYSTEM): Remove mips64el-linux. Efraim Flashner 2020-05-25doc: Fix typos....* doc/guix.texi: Fix typos. * doc/contributing.texi: Fix typos. Signed-off-by: Julien Lepiller <julien@lepiller.eu> zimoun 2020-05-22maint: Add "make check-channel-news"....* build-aux/check-channel-news.scm: New file. * Makefile.am (EXTRA_DIST): Add it. (check-channel-news): New phony rule. * doc/contributing.texi (Commit Access): Mention "make check-channel-news". Ludovic Courtès 2020-05-12doc: Specify the branch name in the title of a patch....* doc/contributing.texi (Submitting Patches): Add branch name in the title of a patch if different than master. Brice Waegeneire 2020-05-04doc: Recommend against SHA1 OpenPGP signatures....* doc/contributing.texi (Commit Access): Recommend against SHA1 signatures. Ludovic Courtès 2020-05-04doc: Document committer authorization....* doc/contributing.texi (Commit Access): Add instructions for authorizing committers. Ludovic Courtès 2020-03-13doc: Update guidance about Python 2 package variants....* doc/contributing.texi (Python Modules): Don't recommend adding Python-2 package variants by default. Leo Famulari 2020-03-10doc: Use HTTPS for external links....* doc/contributing.texi (14.1 Building from Git, 14.3 The Perfect Setup, 14.4.1 Software Freedom, 14.4.4 Synopses and Descriptions, 14.5.4 Formatting Code): Use HTTPS for @uref{}s and @url{}s that support it. * doc/fdl-1.3.texi (Appendix A GNU Free Documentation License): Use HTTPS for @uref{}s and @url{}s that support it. * doc/guix.texi (6.3 Build Systems, 8.8.4 Networking Services, 8.8.8 Sound Services, 8.8.16 Web Services, 8.11 Name Service Switch, 12.2 Preparing to Use the Bootstrap Binaries); Use HTTPS for @uref{}s and @url{}s that support it. Signed-off-by: Marius Bakke <mbakke@fastmail.com> Vitaliy Shatrov 2020-03-09doc: Use an https link for Contributor Covenant....* doc/contributing.texi: Switch to https for the link to contributor-covenant.org Reported-By: guix-vits on IRC Jakub Kądziołka 2020-02-22etc: Add copyright....* etc/copyright.el: New file. * doc/contributing.texi (The Perfect Setup): Document this. Oleg Pykhalov 2020-02-18doc: Document packaging guidelines for Rust crates....* doc/contributing.texi (Rust Crates): New section. Efraim Flashner 2020-01-19Use HTTPS for www.emacswiki.org....* doc/contributing.texi (The Perfect Setup): Use HTTPS for ParEdit wiki page. * gnu/packages/emacs-xyz.scm (emacs-wget, emacs-iedit)[home-page]: Use HTTPS. (emacs-transpose-frame)[source]: Likewise. Tobias Geerinckx-Rice 2020-01-09doc: Add a cooptation policy for commit access....* doc/contributing.texi (Commit Access): Draft a cooptation policy. Ludovic Courtès 2020-01-09doc: Encourage patch review....* doc/contributing.texi (Commit Access): Add note about patch review. Ludovic Courtès 2020-01-09doc: Move "Commit Access" section from 'HACKING' to the manual....* HACKING (Commit Access): Remove. (Contributing): Update URL of the manual. * doc/contributing.texi (Commit Access): New section. (Submitting Patches): Add cross reference. Ludovic Courtès 2020-01-09doc: Add "Tracking Bugs and Patches" section....* doc/contributing.texi (Tracking Bugs and Patches): New section. (Submitting Patches): Refer to it. * doc/guix.texi: Update copyright line. * HACKING (Using emacs-debbugs): Remove. Ludovic Courtès