aboutsummaryrefslogtreecommitdiff
path: root/tests/elpa.scm
blob: 46c6ac2d757a20000d8d911f3e4e00b146851aeb (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
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;;
;;; 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-elpa)
  #:use-module (guix import elpa)
  #:use-module (guix tests)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-64)
  #:use-module (ice-9 match))

(define elpa-mock-archive
  '(1
    (ace-window .
                [(0 9 0)
                 ((avy
                   (0 2 0)))
                 "Quickly switch windows." single
                 ((:url . "https://github.com/abo-abo/ace-window")
                  (:keywords "window" "location"))])
    (auctex .
            [(11 88 6)
             nil "Integrated environment for *TeX*" tar
             ((:url . "http://www.gnu.org/software/auctex/"))])))

(define auctex-readme-mock "This is the AUCTeX description.")

(define* (elpa-package-info-mock name #:optional (repo "gnu"))
  "Simulate retrieval of 'archive-contents' file from REPO and extraction of
information about package NAME. (Function 'elpa-package-info'.)"
  (let* ((archive elpa-mock-archive)
         (info (filter (lambda (p) (eq? (first p) (string->symbol name)))
                       (cdr archive))))
    (if (pair? info) (first info) #f)))

(define elpa-version->string
  (@@ (guix import elpa) elpa-version->string))

(define package-source-url
  (@@ (guix import elpa) package-source-url))

(define ensure-list
  (@@ (guix import elpa) ensure-list))

(define package-home-page
  (@@ (guix import elpa) package-home-page))

(define make-elpa-package
  (@@ (guix import elpa) make-elpa-package))

(test-begin "elpa")

(define (eval-test-with-elpa pkg)
  (mock
   ;; replace the two fetching functions
   ((guix import elpa) fetch-elpa-package
    (lambda* (name #:optional (repo "gnu"))
      (let ((pkg (elpa-package-info-mock name repo)))
        (match pkg
          ((name version reqs synopsis kind . rest)
           (let* ((name (symbol->string name))
                  (ver (elpa-version->string version))
                  (url (package-source-url kind name ver repo)))
             (make-elpa-package name ver
                                (ensure-list reqs) synopsis kind
                                (package-home-page (first rest))
                                auctex-readme-mock
                                url)))
          (_ #f)))))
   (match (elpa->guix-package pkg)
     (('package
        ('name "emacs-auctex")
        ('version "11.88.6")
        ('source
         ('origin
           ('method 'url-fetch)
           ('uri ('string-append
                  "http://elpa.gnu.org/packages/auctex-" 'version ".tar"))
           ('sha256 ('base32 (? string? hash)))))
        ('build-system 'emacs-build-system)
        ('home-page "http://www.gnu.org/software/auctex/")
        ('synopsis "Integrated environment for *TeX*")
        ('description (? string?))
        ('license 'license:gpl3+))
      #t)
     (x
      (pk 'fail x #f)))))

(test-assert "elpa->guix-package test 1"
  (eval-test-with-elpa "auctex"))

(test-end "elpa")
7 04:02:22 +0200'>2018-04-17gnu: qtscxml: Update to 5.9.5....Tobias Geerinckx-Rice 2018-04-17gnu: qtserialbus: Update to 5.9.5....Tobias Geerinckx-Rice 2018-03-27gnu: Use invoke and return #t from all builders....Mark H Weaver 2018-03-20Merge branch 'master' into core-updatesMark H Weaver 2018-03-20Correct name and Email for ng0....ng0 2018-03-20Merge branch 'master' into core-updatesMark H Weaver 2018-03-17gnu: Fix common unquote typos....Tobias Geerinckx-Rice 2018-03-16gnu: qtbase: Build with mariadb....Ricardo Wurmus 2018-03-16gnu: qt: Build with mariadb....Ricardo Wurmus 2018-03-16gnu: All snippets report errors using exceptions, else return #t....Mark H Weaver 2018-03-02gnu: qscintilla: Use HTTPS home page....Tobias Geerinckx-Rice 2018-02-18gnu: qt.scm: Remove unneeded import....Marius Bakke 2018-02-18gnu: qtserialport: Use the store paths for dynamically loaded libs....Hartmut Goebel 2018-02-18gnu: qtbase: Use the store paths for other packages and dynamically loaded libs....Hartmut Goebel 2018-02-10gnu: qtsensors: Fix build....Nicolas Goaziou 2018-01-25gnu: qt: Update to 5.9.4....Efraim Flashner 2018-01-24gnu: python-qscintilla: Remove result code plumbing....Mark H Weaver 2018-01-23gnu: qscintilla: Update to 2.10.2....Kei Kebreau 2017-12-24gnu: dotherside: Update to 0.6.3....Tobias Geerinckx-Rice