aboutsummaryrefslogtreecommitdiff
path: root/gnu/tests/audio.scm
blob: 8eadaf02e12567a151c6ad100af6537e98bc4594 (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
            (mpd-configuration
             (user "root")))))

(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)))

          (mkdir #$output)
          (chdir #$output)

          (test-begin "mpd")

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

          (test-assert "mpc connect"
            (marionette-eval
             '(zero? (system #$(file-append mpd-mpc "/bin/mpc")))
             marionette))

          (test-end)
          (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
  (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))))
new)) (noteworthy (filter (match-lambda ((package . version) (member package important))) upgraded))) (with-atomic-file-replacement news-file (lambda (input output) (rewrite-org-section input output (make-regexp "^(\\*+).*package updates") (lambda (match port) (let ((stars (match:substring match 1)) (lst (map (match-lambda ((package . version) (string-append package " " version))) noteworthy))) (format port "~a ~a package updates~%~%Noteworthy updates:~%~a~%~%" stars (length upgraded) (enumeration->paragraph lst))))))))) (define (main . args) (match args ((news-file data-directory) ;; Don't browse things listed in the user's $GUIX_PACKAGE_PATH and ;; in external channels. (parameterize ((%package-module-path %default-package-module-path)) (define (package-file version) (string-append data-directory "/packages-" version ".txt")) (define (package<? p1 p2) (string<? (package-full-name p1) (package-full-name p2))) (let-values (((previous-version new-version) (call-with-input-file news-file NEWS->versions))) (format (current-error-port) "Updating NEWS for ~a to ~a...~%" previous-version new-version) (let* ((old (call-with-input-file (package-file previous-version) read)) (all-packages/sorted (sort (fold-packages (lambda (p r) (cons p r)) '()) package<?)) (new (map (lambda (p) (cons (package-name p) (package-version p))) all-packages/sorted))) (call-with-output-file (package-file new-version) (lambda (port) (pretty-print new port))) (write-packages-added news-file old new) (write-packages-updates news-file old new))))) (x (format (current-error-port) "Usage: update-NEWS NEWS-FILE DATA-DIRECTORY Update the list of new and updated packages in NEWS-FILE using the previous-version package list from DATA-DIRECTORY.\n") (exit 1)))) (apply main (cdr (command-line)))