aboutsummaryrefslogtreecommitdiff
path: root/etc/system-tests.scm
blob: 221a63bb7f5ef32e93af530c03a17351599a98a1 (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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2018-2020, 2022 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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/>.

(use-modules (gnu tests)
             (gnu packages package-management)
             (guix monads)
             (guix store)
             ((guix git-download) #:select (git-predicate))
             ((guix utils) #:select (current-source-directory))
             (git)
             (ice-9 match))

(define (source-commit directory)
  "Return the commit of the head of DIRECTORY or #f if it could not be
determined."
  (let ((repository #f))
    (catch 'git-error
      (lambda ()
        (set! repository (repository-open directory))
        (let* ((head   (repository-head repository))
               (target (reference-target head))
               (commit (oid->string target)))
          (repository-close! repository)
          commit))
      (lambda _
        (when repository
          (repository-close! repository))
        #f))))

(define (tests-for-current-guix source commit)
  "Return a list of tests for perform, using Guix built from SOURCE, a channel
instance."
  ;; Honor the 'TESTS' environment variable so that one can select a subset
  ;; of tests to run in the usual way:
  ;;
  ;;   make check-system TESTS=installed-os
  (let ((guix (channel-source->package source #:commit commit)))
    (map (lambda (test)
           (system-test
            (inherit test)
            (value (mparameterize %store-monad ((current-guix-package guix))
                     (system-test-value test)))))
         (match (getenv "TESTS")
           (#f
            (all-system-tests))
           ((= string-tokenize (tests ...))
            (filter (lambda (test)
                      (member (system-test-name test) tests))
                    (all-system-tests)))))))

(define (system-test->manifest-entry test)
  "Return a manifest entry for TEST, a system test."
  (manifest-entry
    (name (string-append "test." (system-test-name test)))
    (version "0")
    (item test)))

(define (system-test-manifest)
  "Return a manifest containing all the system tests, or all those selected by
the 'TESTS' environment variable."
  (define source
    (string-append (current-source-directory) "/.."))

  (define commit
    ;; Fetch the current commit ID so we can potentially build the same
    ;; derivation as ci.guix.gnu.org.
    (source-commit source))

  ;; Intern SOURCE so that 'build-from-source' in (guix channels) sees
  ;; "fresh" file names and thus doesn't find itself loading .go files
  ;; from ~/.cache/guile when it loads 'build-aux/build-self.scm'.
  (let* ((source (local-file source
                             (if commit
                                 (string-append "guix-"
                                                (string-take commit 7))
                                 "guix-source")
                             #:recursive? #t
                             #:select?
                             (or (git-predicate source)
                                 (const #t))))
         (tests  (tests-for-current-guix source commit)))
    (format (current-error-port) "Selected ~a system tests...~%"
            (length tests))

    (manifest (map system-test->manifest-entry tests))))

;; Return the manifest.
(system-test-manifest)
tond-stock-consignment, trytond-stock-inventory-location, trytond-stock-location-move, trytond-stock-location-sequence, trytond-stock-lot, trytond-stock-lot-sled, trytond-stock-lot-unit, trytond-stock-package, trytond-stock-package-shipping-ups, trytond-stock-product-location, trytond-stock-secondary-unit, trytond-stock-split, trytond-stock-supply-day, trytond-stock-supply-forecast, trytond-stock-supply-production, trytond-timesheet, trytond-timesheet-cost, trytond-user-role, trytond-web-shop-vue-storefront-stripe, trytond-web-user): Update to 6.2.0. (trytond-web-shop): Update to 6.2.0. [native-inputs]: Add trytond-image. (trytond-account-es): Update to 6.2.0. [native-inputs]: Add trytond-sale-advance-payment. [propagated-inputs]: Add trytond-company, trytond-currency. (trytond-sale-gift-card): Update to 6.2.0. [native-inputs]: Add trytond-sale-point. (trytond-carrier-percentage, trytond-carrier-subdivision, trytond-carrier-weight, trytond-incoterm): Update to 6.2.0. [native-inputs]: Add trytond-stock-shipment-cost. (trytond-stock-shipment-cost): Update to 6.2.0. [propagated-inputs]: Add trytond-carrier. (trytond-stock-package-shipping): Update to 6.2.0. [propagated-inputs]: Remove trytond-sale-shipment-cost; add trytond-stock-shipment-cost. (trytond-account-asset, trytond-account-fr-chorus, trytond-account-invoice-stock, trytond-account-payment-clearing, trytond-account-product, trytond-account-statement-aeb43, trytond-account-statement-rule, trytond-account-stock-anglo-saxon, trytond-commission-waiting, trytond-ldap-authentication, trytond-marketing-automation, trytond-party, trytond-product-price-list-dates, trytond-production, trytond-project-revenue, trytond-purchase-amendment, trytond-purchase-price-list, trytond-purchase-request, trytond-purchase-request-quotation, trytond-sale-amendment, trytond-sale-complaint, trytond-sale-discount, trytond-sale-payment, trytond-sale-supply-drop-shipment, trytond-sale-supply-production, trytond-stock-forecast, trytond-stock-quantity-issue, trytond-stock-shipment-measurements, trytond-web-shortener): Update to 6.2.1. (trytond-product-cost-warehouse): Update to 6.2.1. [native-inputs]: Add trytond-account-invoice-stock. (trytond-web-shop-vue-storefront): Update to 6.2.1. [native-inputs]: Add trytond-product-image, trytond-stock-shipment-cost. (trytond-country): Update to 6.2.1. [propagated-inputs]: Remove python-pycountry; add python-pycountry@20.7.3. (trytond-account-invoice-defer, trytond-account-payment, trytond-account-payment-sepa, trytond-account-stock-landed-cost, trytond-notification-email, trytond-product-kit, trytond-sale-product-customer, trytond-sale-shipment-cost, trytond-stock-quantity-early-planning, trytond-stock-supply): Update to 6.2.2. (trytond-account-statement, trytond-account-stock-continental, trytond-project-invoice, trytond-purchase, trytond-stock-package-shipping-dpd): Update to 6.2.3. (python-proteus): Update to 6.2.3. [propagated-inputs]: Add python-defusedxml. (trytond-account-invoice, trytond-sale): Update to 6.2.4. (tryton, trytond-account, trytond-stock): Update to 6.2.7. (trytond): Update to 6.2.10. [propagated-inputs]: Add python-defusedxml. Hartmut Goebel 2022-07-04gnu: Add trytond-stock-package-shipping-dpd....* gnu/packages/tryton.scm (trytond-stock-package-shipping-dpd): New variable. Hartmut Goebel 2022-07-04gnu: Add trytond-google-maps....* gnu/packages/tryton.scm (trytond-google-maps): New variable. Hartmut Goebel 2022-07-04gnu: Add trytond-gis....* gnu/packages/tryton.scm (trytond-gis): New variable. Hartmut Goebel