aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Fredrik Salomonsson <plattfot@posteo.net>
;;;
;;; 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 build-emacs-utils)
  #:use-module (guix tests)
  #:use-module (guix build emacs-utils)
  #:use-module (guix build utils)
  #:use-module ((guix utils)
                #:select (call-with-temporary-directory))
  #:use-module (ice-9 regex)
  #:use-module (srfi srfi-34)
  #:use-module (srfi srfi-64))

(test-begin "build-emacs-utils")
;; Only run the following tests if emacs is present.
(test-skip (if (which "emacs") 0 5))

(test-equal "emacs-batch-script: print foo from emacs"
  "foo"
  (emacs-batch-script '(princ "foo")))

(test-assert "emacs-batch-script: raise &emacs-batch-error on failure"
  (guard (c ((emacs-batch-error? c)
             ;; The error message format changed between Emacs 27 and Emacs
             ;; 28.
             (string-match "[Ww]rong.*argument.*numberp.*\"three\""
                           (emacs-batch-error-message c))))
    (emacs-batch-script '(mapcar 'number-to-string (list 1 2 "three")))))

(call-with-temporary-directory
 (lambda (directory)
   (let ((mock-elisp-file (string-append directory "/foo.el")))
     (call-with-output-file mock-elisp-file
       (lambda (port)
         (display ";;; foo --- mock emacs package -*- lexical-binding: t -*-

;; Created: 4 Jun 2022
;; Keywords: lisp test
;; Version: 1.0.0
;;; Commentary:
;;; Code:
;;; foo.el ends here
"
                  port)))
     (test-equal "emacs-header-parse: fetch version"
       "1.0.0"
       (emacs-header-parse "version" mock-elisp-file))
     (test-equal "emacs-header-parse: fetch keywords"
       "lisp test"
       (emacs-header-parse "keywords" mock-elisp-file))
     (test-equal "emacs-header-parse: fetch nonexistent author"
       "nil"
       (emacs-header-parse "author" mock-elisp-file)))))

(test-end "build-emacs-utils")
ad of '&message' where appropriate....Ludovic Courtès 2020-07-25utils: Move <location> and '&error-location' to (guix diagnostics)....Ludovic Courtès 2020-07-13packages: Ensure bags are insensitive to '%current-system'....Ludovic Courtès 2020-06-27packages: Recognize SHA3 and BLAKE2s for 'content-hash'....Ludovic Courtès 2020-06-11packages: 'package-grafts' returns grafts for all the relevant outputs....Ludovic Courtès 2020-06-06packages: Make 'bag-grafts' insensitive to '%current-target-system'....Ludovic Courtès 2020-05-23tests: Use a #:prefix for (gcrypt hash)....Ludovic Courtès 2020-05-22packages: Introduce <content-hash> and use it in <origin>....Ludovic Courtès 2020-05-14packages: Ensure bags are insensitive to '%current-target-system'....Ludovic Courtès 2020-03-31guix package: Do not misdiagnose upgrades when there are propagated inputs....Ludovic Courtès 2020-03-31guix package: Add 'transaction-upgrade-entry' test....Ludovic Courtès 2020-03-31guix package: 'transaction-upgrade-entry' swallows build requests....Ludovic Courtès 2020-01-16guix package: Export 'transaction-upgrade-entry'....Ludovic Courtès 2019-09-06packages: 'supported-package?' binds '%current-system' for graph traversal....Ludovic Courtès 2019-06-27Merge branch 'master' into core-updatesLudovic Courtès 2019-06-27packages: 'specification->package+output' distinguishes "no output specified"....Ludovic Courtès 2019-06-14tests: Make builds less expensive....Ludovic Courtès 2019-03-23Merge branch 'staging' into core-updatesMarius Bakke 2019-03-17packages: Add 'package-input-rewriting/spec'....Ludovic Courtès 2019-02-20Merge branch 'staging' into core-updatesMarius Bakke 2019-02-16packages: Remove duplicates from package cache....Ludovic Courtès 2019-02-06Merge branch 'master' into core-updatesRicardo Wurmus 2019-01-25packages: Add 'package-closure'....Ludovic Courtès 2019-01-21store: Rename '&nix-error' to '&store-error'....Ludovic Courtès 2019-01-15guix package: '--list-available' can use data from the cache....Ludovic Courtès 2019-01-15edit: Use 'specification->location' to read information from the cache....Ludovic Courtès 2019-01-15channels: Compute a package cache and use it....Ludovic Courtès 2019-01-15guix package: Avoid 'find-newest-available-packages'....Ludovic Courtès 2018-09-23tests: Update package-transitive-supported-systems tests....Jan Nieuwenhuizen 2018-09-04Switch to Guile-Gcrypt....Ludovic Courtès 2018-06-09packages: Add 'package-patched-vulnerabilities'....Ludovic Courtès 2018-03-27tests: Use invoke and return #t from all builders....Mark H Weaver 2018-03-15tests: Do not assume the bootstrap guile tarball is available locally....Ludovic Courtès 2018-02-28build-system/trivial: Add support for #:allowed-references....Ludovic Courtès