aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.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 cups)
  #:use-module (gnu tests)
  #:use-module (gnu system)
  #:use-module (gnu system vm)
  #:use-module (gnu services)
  #:use-module (gnu services cups)
  #:use-module (gnu services networking)
  #:use-module (guix gexp)
  #:use-module (guix store)
  #:use-module (guix monads)
  #:export (%test-cups))

;;;
;;; Test the Common Unix Printing System.
;;;

(define* (run-cups-test os-configuration #:optional (cups-port 631))
  (define os
    (marionette-operating-system os-configuration
                                 #:imported-modules '((gnu services herd))))

  (define forwarded-port 8080)

  (define vm
    (virtual-machine
     (operating-system os)
     (port-forwardings `((,forwarded-port . ,cups-port)))))

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

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

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

          ;; Wait for the web interface to become ready.
          (wait-for-tcp-port #$cups-port marionette)

          (test-equal "http-get default page"
            200
            (let-values
                (((response text)
                  (http-get #$(simple-format
                               #f "http://localhost:~A/" forwarded-port)
                            #:decode-body? #t)))
              (response-code response)))

          (test-equal "http-get admin page"
            200
            (let-values
                (((response text)
                  (http-get #$(simple-format
                               #f "http://localhost:~A/admin" forwarded-port)
                            #:decode-body? #t)))
              (response-code response)))

          (test-end))))

  (gexp->derivation "cups-test" test))

(define %cups-os
  (simple-operating-system
   (service dhcp-client-service-type)
   (service cups-service-type
            (cups-configuration
             (web-interface? #t)
             ;; Listen on all interfaces instead of just localhost so we
             ;; can access the web interface "remotely".
             (listen '("*:631" "/var/run/cups/cups.sock"))
             ;; Add access controls for the Qemu-managed network.
             (location-access-controls
              (list (location-access-control
                     (path "/")
                     (access-controls '("Order allow,deny"
                                        "Allow from 10.0.0.0/8")))
                    (location-access-control
                     (path "/admin")
                     (access-controls '("Order allow,deny"
                                        "Allow from 10.0.0.0/8")))
                    (location-access-control
                     (path "/admin/conf")
                     (access-controls '("Order allow,deny"
                                        "AuthType Basic"
                                        "Require user @SYSTEM"
                                        "Allow localhost")))))))))

(define %test-cups
  (system-test
   (name "cups")
   (description "Test the CUPS print server")
   (value (run-cups-test %cups-os))))

cm". * Makefile.am: Build guix/build/po.scm. * build-aux/convert-xref.scm: New file. * doc/local.mk (xref_command): Use it. * guix/self.scm (translate-cross-references): Move it... * guix/build/po.scm: Parse comments and flags separately to find fuzzy flags. (translate-cross-references): ...here. (parse-tree->assoc): Ignore fuzzy entries. Julien Lepiller 2021-08-04nls: Update translations....* po/doc/guix-cookbook.ru.po: New file. * po/doc/guix-cookbook.sk.po: New file. * po/*/*.po: Update translations. * doc/local.mk (COOKBOOK_LANGUAGES): Add ru and sk. (info_TEXINFOS): Add Russian and Slovak cookbooks. * po/doc/local.mk (DOC_COOKBOOK_PO_FILES): Add Russian and Slovak po files. Julien Lepiller 2021-05-03nls: Guard against the list of translated Texinfo files becoming stale....This change is so that the list of translated Texinfo files remain in sync with the list of supported (translated) languages. * doc/local.mk (MANUAL_LANGUAGES, COOKBOOK_LANGUAGES): New variables. (lang_to_texinfos): New function. (TRANSLATED_INFO): Use it to construct the list of files. Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Julien Lepiller 2021-04-18nls: Add Chinese (Traditional) translation....* po/doc/guix-cookbook.zh_Hans.po: New file. * doc/local.mk (info_TEXINFOS): Add it. * po/doc/local.mk (DOC_COOKBOOK_PO_FILES): Add it. Julien Lepiller 2021-04-18nls: Add Korean translation....* po/doc/guix-cookbook.ko.po: New file. * po/doc/guix-manual.ko.po: New file. * doc/local.mk (info_TEXINFOS): Add them. * po/doc/local.mk (DOC_PO_FILES, DOC_COOKBOOK_PO_FILES): Add them. * po/guix/ko.po: New file. * po/guix/LINGUAS: Add 'ko'. * po/packages/ko.po: New file. * po/packages/LINGUAS: Add 'ko'. Julien Lepiller 2021-04-18nls: Add Italian translation....* po/doc/guix-manual.it.po: New file. * po/doc/local.mk (DOC_PO_FILES): Add it. * doc/local.mk (info_TEXINFOS): Add it. * po/guix/it.po: New file. * po/guix/LINGUAS: Add 'it'. Julien Lepiller 2021-04-18nls: Add Persian translation....* po/packages/fa.po: New file. * po/packages/LINGUAS: Add 'fa'. * po/doc/guix-cookbook.fa.po: New file. * po/doc/guix-manual.fa.po: New file. * po/doc/local.mk (DOC_PO_FILES, DOC_COOKBOOK_PO_FILES): Add them. * doc/local.mk (info_TEXINFOS): Add them. Julien Lepiller 2021-04-18nls: Add Slovak translation....* po/packages/sk.po: New file. * po/packages/LINGUAS: Add 'sk'. * po/doc/guix-manual.sk.po: New file. * doc/local.mk (info_TEXINFOS): Add it. * po/doc/local.mk (DOC_PO_FILES): Add it. Julien Lepiller 2021-04-18nls: Add Portuguese (Brazil) translation of the manual.Julien Lepiller 2021-04-18nls: Add French translation of the cookbook.Julien Lepiller 2021-04-18doc: Fix pxref translation issue....* doc/local.mk (xref_command): Change regexp to match properly. Julien Lepiller 2020-10-27doc: Fix xref translation macro....* doc/local.mk (xref_command): Wrap loop body in 'if [ -n "$$e" ]'. This avoids shell syntax errors when producing doc/guix-cookbook.de.texi, which for some reason gets an empty 'e' at one point. Quote the first argument to 'head'. Ludovic Courtès 2020-05-22doc: Update 'Bootstrapping' for further binary seed reduction....* doc/images/gcc-core-mesboot0-graph.dot: New image, replacing * doc/images/gcc-mesboot0-bag-graph.dot: ... remove file. * doc/local.mk (DOT_FILES): Update for new image file. * doc/guix.texi (Reduced Binary Seed Bootstrap): Use it in updated description of further reduction of the trusted computing base. Jan Nieuwenhuizen 2020-04-24doc: Ensure guix-daemon is built before creating guix-daemon.1....* doc/local.mk ($(srcdir)/%D%/guix-daemon.1): Depend on guix-daemon$(EXEEXT) instead of its source code. Marius Bakke 2020-04-23build: Don't build man pages when cross-compiling....* configure.ac: Define 'CROSS_COMPILING' Automake conditional. * doc/local.mk (dist_man1_MANS): Wrap in "if !CROSS_COMPILING". Ludovic Courtès 2020-04-23doc: Build more man pages....* doc/local.mk (sub_commands_mans): Add guix-deploy.1, guix-time-machine.1, and guix-weather.1. Ludovic Courtès 2020-04-16doc: Document building and installing from JSON files....* doc/guix.texi (Invoking guix package): Augment pargraphs for "--install-from-file". (Invoking guix build): Document building from JSON files. * doc/package-hello.json: New file. * doc/local.mk (EXTRA_DIST): Add it. Ricardo Wurmus 2020-02-17doc: Add German Cookbook translation....* doc/local.mk (info_TEXINFOS): Add guix-cookbook.de.texi. (TRANSLATED_INFO): Add guix-cookbook.de.texi. * po/doc/guix-cookbook.de.po: New file. * po/doc/local.mk (DOC_COOKBOOK_PO_FILES): Add guix-cookbook.de.po. Florian Pelz 2019-09-24Merge branch 'master' into core-updatesLudovic Courtès 2019-09-18doc: Add Guix Cookbook....* .gitignore: Update ignore list. * Makefile.am (assert-no-store-file-names): Exclude the cookbook. * bootstrap: Generate po files for cookbook translations. * doc/guix-cookbook.texi: New file. * doc/local.mk (info_TEXINFOS): Add it; add a rule to build cookbook translations. * po/doc/local.mk (DOC_COOKBOOK_PO_FILES): New variable. (EXTRA_DIST): Add cookbook pot file and po files. (doc-po-update-cookbook-%): New target. (doc-pot-update): Also update cookbook pot file. (doc-po-update): Also update cookbook po files. Ricardo Wurmus 2019-05-25Merge branch 'staging' into core-updatesMarius Bakke 2019-05-13doc: Add Russian translation....* doc/local.mk (info_TEXINFOS): Add guix.ru.texi. (TRANSLATED_INFO): Add {guix,contributing}.ru.texi. * po/doc/local.mk (DOC_PO_FILES): Add guix-manual.ru.po. * po/doc/guix-manual.ru.po: New file. Ludovic Courtès 2019-05-04doc: Warn about missing entries in htmlxref.cnf....* doc/local.mk (AM_MAKEINFOHTMLFLAGS): New variable. Ludovic Courtès 2019-05-01Merge branch 'master' into core-updatesMarius Bakke 2019-04-24doc: Add Simplified Chinese translation....* doc/local.mk (info_TEXINFOS): Add guix.zh_CN.texi. (TRANSLATED_INFO): Add guix.zh_CN.texi and contributing.zh_CN.texi. * po/doc/local.mk (DOC_PO_FILES): Add guix-manual.zh_CN.po. * doc/contributing.zh_CN.texi, doc/guix.zh_CN.texi: New files. Ludovic Courtès 2019-04-23doc: Add Spanish translation....* doc/local.mk (info_TEXINFOS): Add guix.es.texi. (TRANSLATED_INFO): Add guix.es.texi and contributing.es.texi. * po/doc/guix-manual.es.po: New file. * po/doc/local.mk: Add guix-manual.es.po. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Miguel Ángel Arruga Vivas 2019-03-14Merge branch 'staging' into core-updatesMarius Bakke 2019-03-13doc: Document the graphical installer some more....* doc/guix.texi (Preparing for Installation): Rewrite to specify the two installation modes. (Guided Graphical Installation): New node. (Manual Installation): New node, with the former sections. (After System Installation): New node. * doc/images/installer-network.png, doc/images/installer-partitions.png, doc/images/installer-resume.png: New files. * doc/local.mk (dist_infoimage_DATA): Add them. Ludovic Courtès