aboutsummaryrefslogtreecommitdiff
path: root/gnu/tests/audio.scm
blob: 8aa6d1e81876ae3e1130a74dabfef1771f38d31d (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
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
;;;
;;; 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 (gnu tests audio)
  #:use-module (gnu tests)
  #:use-module (gnu system)
  #:use-module (gnu system vm)
  #:use-module (gnu services)
  #:use-module (gnu services audio)
  #:use-module (gnu packages mpd)
  #:use-module (guix gexp)
  #:export (%test-mpd))

(define %mpd-os
  (simple-operating-system
   (service mpd-service-type)))

(define (run-mpd-test)
  "Run tests in %mpd-os, which has mpd running."
  (define os
    (marionette-operating-system
     %mpd-os
     #:imported-modules '((gnu services herd))))

  (define vm
    (virtual-machine os))

  (define test
    (with-imported-modules '((gnu build marionette))
      #~(begin
          (use-modules (srfi srfi-64)
                       (gnu build marionette))
          (define marionette
            (make-marionette (list #$vm)))

          (test-runner-current (system-test-runner #$output))
          (test-begin "mpd")

          (test-assert "service is running"
            (marionette-eval
             '(begin
                (use-modules (gnu services herd))
                (start-service 'mpd))
             marionette))

          (test-assert "mpd listening"
            ;; Wait until mpd is actually listening before spawning 'mpc'.
            (wait-for-tcp-port 6600 marionette))

          (test-equal "mpc connect"
            0
            (marionette-eval
             '(system* #$(file-append mpd-mpc "/bin/mpc"))
             marionette))

          (test-end))))
  (gexp->derivation "mpd-test" test))

(define %test-mpd
  (system-test
   (name "mpd")
   (description "Test that the mpd can run and be connected to.")
   (value (run-mpd-test))))
srfi srfi-1) #:use-module (srfi srfi-64) #:use-module (srfi srfi-26) #:use-module (ice-9 match)) (define description " Package: My-Example Type: Package Title: Example package Version: 1.2.3 Date: 2015-12-10 Author: Ricardo Wurmus Maintainer: Guix Schmeeks <guix@gnu.org> URL: http://gnu.org/s/my-example Description: This is a long description spanning multiple lines: and it could confuse the parser that this line is very long or perhaps the fact that there is a colon : on the lines. And: this line continues the description. biocViews: 0 SystemRequirements: Cairo (>= 0) Depends: A C++11 compiler. Version 4.6.* of g++ (as currently in Rtools) is insufficient; versions 4.8.*, 4.9.* or later will be fine. License: GPL (>= 3) Imports: Rcpp (>= 0.11.5), proto, Scales LinkingTo: Rcpp, BH NeedsCompilation: yes Repository: CRAN Date/Publication: 2015-07-14 14:15:16 ") (define description-alist (description->alist description)) (define simple-alist '(("Key" . "Value") ("SimpleList" . "R, Rcpp, something, whatever") ("BadList" . "This is not a real list, you know?") ("List" . "R (>= 2.2), BH (for no reason), GenomicRanges"))) (test-begin "cran") (test-assert "description->alist: contains all valid keys" (let ((keys '("Package" "Type" "Title" "Version" "Date" "Author" "Maintainer" "URL" "Description" "SystemRequirements" "Depends" "License" "Imports" "biocViews" "LinkingTo" "NeedsCompilation" "Repository" "Date/Publication"))) (lset= string=? keys (map car description-alist)))) (test-equal "listifyx: return empty list if key cannot be found" '() ((@@ (guix import cran) listify) simple-alist "Letters")) (test-equal "listify: split comma-separated value into elements" '("R" "Rcpp" "something" "whatever") ((@@ (guix import cran) listify) simple-alist "SimpleList")) (test-equal "listify: strip off parentheses" '("R" "BH" "GenomicRanges") ((@@ (guix import cran) listify) simple-alist "List")) (test-equal "listify: ignore values that are no lists" '() ((@@ (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 (lambda* (url file-name #:key (mirrors '()) verify-certificate?) (with-output-to-file file-name (lambda () (display (match url ("mirror://cran/src/contrib/My-Example_1.2.3.tar.gz" "source") (_ (error "Unexpected URL: " url)))))))) (match (description->package 'cran description-alist) (('package ('name "r-my-example") ('version "1.2.3") ('source ('origin ('method 'url-fetch) ('uri ('cran-uri "My-Example" 'version)) ('sha256 ('base32 (? string? hash))))) ('properties ('quasiquote (('upstream-name . "My-Example")))) ('build-system 'r-build-system) ('inputs ('list 'cairo)) ('propagated-inputs ('list 'r-bh 'r-proto 'r-rcpp 'r-scales)) ('home-page "http://gnu.org/s/my-example") ('synopsis "Example package") ('description "\ This is a long description spanning multiple lines: and it could confuse the parser that this line is very long or perhaps the fact that there is a colon : on the lines. And: this line continues the description.") ('license 'gpl3+)) #t) (x (begin (format #t "~s\n" x) (pk 'fail x #f)))))) (test-end "cran")