aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@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 package-management)
  #:use-module (gnu packages base)
  #:use-module (gnu packages package-management)
  #:use-module (gnu services)
  #:use-module (gnu services networking)
  #:use-module (gnu services nix)
  #:use-module (gnu system)
  #:use-module (gnu system vm)
  #:use-module (gnu tests)
  #:use-module (guix gexp)
  #:use-module (guix packages)
  #:export (%test-nix))

;;; Commentary:
;;;
;;; This module provides a test definition for the nix-daemon
;;;
;;; Code:

(define* (run-nix-test name test-os)
  "Run tests in TEST-OS, which has nix-daemon running."
  (define os
    (marionette-operating-system
     test-os
     #:imported-modules '((gnu services herd))))

  (define vm
    (virtual-machine
     (operating-system os)
     (port-forwardings '((8080 . 80)))
     (memory-size 1024)))

  (define test
    (with-imported-modules '((gnu build marionette))
      #~(begin
          (use-modules (srfi srfi-11)
                       (srfi srfi-64)
                       (gnu build marionette)
                       (web client)
                       (web response))

          (define marionette
            (make-marionette (list #$vm)))

          (test-runner-current (system-test-runner #$output))
          (test-begin #$name)

          ;; XXX: Shepherd reads the config file *before* binding its control
          ;; socket, so /var/run/shepherd/socket might not exist yet when the
          ;; 'marionette' service is started.
          (test-assert "shepherd socket ready"
            (marionette-eval
             `(begin
                (use-modules (gnu services herd))
                (let loop ((i 10))
                  (cond ((file-exists? (%shepherd-socket-file))
                         #t)
                        ((> i 0)
                         (sleep 1)
                         (loop (- i 1)))
                        (else
                         'failure))))
             marionette))

          (test-assert "Nix daemon running"
            (marionette-eval
             '(begin
                ;; Wait for nix-daemon to be up and running.
                (start-service 'nix-daemon)
                (zero? (system* (string-append #$nix "/bin/nix")
                                "--experimental-features" "nix-command"
                                "store" "ping" "--store" "daemon")))
             marionette))

          (test-end))))

  (gexp->derivation (string-append name "-test") test))

(define %nix-os
  ;; Return operating system under test.
  (let ((base-os
         (simple-operating-system
          (service nix-service-type)
          (service dhcp-client-service-type))))
    (operating-system
      (inherit base-os)
      (packages (cons nix (operating-system-packages base-os))))))

(define %test-nix
  (system-test
   (name "nix")
   (description "Connect to a running nix-daemon")
   (value (run-nix-test name %nix-os))))

;;; package-management.scm ends here
1-12-30gnu: Add rust-sequoia-ipc-0.26....* gnu/packages/sequoia.scm (rust-sequoia-ipc-0.26): New variable. Hartmut Goebel 2021-12-30gnu: Add rust-sequoia-net-0.23....* gnu/packages/sequoia.scm (rust-sequoia-net-0.23): New variable. Hartmut Goebel 2021-12-30gnu: Add rust-sequoia-openpgp-1....* gnu/packages/sequoia.scm (rust-sequoia-openpgp-1): New variable. Hartmut Goebel 2021-12-13gnu: Simplify package inputs....This commit was obtained by running: ./pre-inst-env guix style without any additional argument. Ludovic Courtès 2021-06-06Merge branch 'master' into core-updates... Conflicts: gnu/local.mk gnu/packages/algebra.scm gnu/packages/bioinformatics.scm gnu/packages/curl.scm gnu/packages/docbook.scm gnu/packages/emacs-xyz.scm gnu/packages/maths.scm gnu/packages/plotutils.scm gnu/packages/python-web.scm gnu/packages/python-xyz.scm gnu/packages/radio.scm gnu/packages/readline.scm gnu/packages/tls.scm gnu/packages/xml.scm gnu/packages/xorg.scm Marius Bakke 2021-05-31gnu: pep-engine: Update to 2.1.34....* gnu/packages/pep.scm (fdik-libetpan): Update to current development version. [source]: Switch to pep.foundation. (pep-engine): Update to 2.1.34. [source]: Switch to new git repo. [arguments]<make-flags>: Enable release-build. [inputs]: Use normal sequoia. * gnu/packages/sequoia.scm (sequoia4pEp): Remove variable. Hartmut Goebel 2021-05-23gnu: Fix erroneous uses of 'package/inherit'....These packages use a different source/version from the inherited package, and thus should not inherit replacements. * gnu/packages/check.scm (googletest-1.8, python-pytest-runner-2): Use record inheritance instead of PACKAGE/INHERIT. * gnu/packages/crates-io.scm (rust-bindgen-0.49, rust-bytes-0.4, rust-colored-1.9.1, rust-difference-1, rust-docopt-0.8, rust-html5ever-0.23, rust-http-0.1, rust-http-body-0.1, rust-loom-0.2, rust-loom-0.1, rust-pulldown-cmark-0.0.8, rust-ring-0.13, rust-rustls-0.12, rust-sct-0.3, rust-term-0.2, rust-untrusted-0.6, rust-webpki-0.18, rust-webpki-roots-0.17, rust-webpki-roots-0.14): Likewise. * gnu/packages/emacs.scm (emacs-next, emacs-next-pgtk, guile-emacs): Likewise. * gnu/packages/guile.scm (guile-2.2.4): Likewise. * gnu/packages/maths.scm (hdf5-1.10, hdf5-1.12): Likewise. * gnu/packages/protobuf.scm (protobuf-3.6, protobuf-3.5, python-protobuf-3.6): Likewise. * gnu/packages/python-web.scm (python2-html2text): Likewise. * gnu/packages/python-xyz.scm (python-pygments/fixed, python2-numpy, python2-urwid, python2-markdown, python2-fonttools): Likewise. * gnu/packages/racket.scm (racket): Likewise. * gnu/packages/sequoia.scm (sequoia4pEp): Likewise. Marius Bakke 2021-05-09Merge branch 'master' into core-updates... Conflicts: gnu/local.mk gnu/packages/bioinformatics.scm gnu/packages/django.scm gnu/packages/gtk.scm gnu/packages/llvm.scm gnu/packages/python-web.scm gnu/packages/python.scm gnu/packages/tex.scm guix/build-system/asdf.scm guix/build/emacs-build-system.scm guix/profiles.scm Marius Bakke 2021-05-04gnu: sequoia: Update to 1.1.0....* gnu/packages/sequoia.scm (sequoia): Update to 1.1.0. [arguments]: Remove phase "package", add phases "fix-rand-dependency" and "fix-permissions". Hartmut Goebel