From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 10 11:04:27 2021 Received: (at submit) by debbugs.gnu.org; 10 Aug 2021 15:04:27 +0000 Received: from localhost ([127.0.0.1]:60310 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mDTIn-0007Oo-Nw for submit@debbugs.gnu.org; Tue, 10 Aug 2021 11:04:27 -0400 Received: from lists.gnu.org ([209.51.188.17]:46936) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mDTIk-0007Of-EB for submit@debbugs.gnu.org; Tue, 10 Aug 2021 11:04:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36826) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mDTIk-0001Uu-87 for guix-patches@gnu.org; Tue, 10 Aug 2021 11:04:22 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:52506) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mDTIk-0007cC-1V for guix-patches@gnu.org; Tue, 10 Aug 2021 11:04:22 -0400 Received: from [2a01:e0a:19b:d9a0:f2f7:a404:c3d3:f8b4] (port=44394 helo=meije) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mDTIj-0008BD-KW for guix-patches@gnu.org; Tue, 10 Aug 2021 11:04:21 -0400 From: Mathieu Othacehe To: guix-patches@gnu.org Subject: wip: Introduce unit-tests. Date: Tue, 10 Aug 2021 17:04:20 +0200 Message-ID: <87o8a5734b.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Hello, I would like to convert the Guix tests in the "tests/" directory to derivations, in the exact same way as for the system tests in the "gnu/tests/" directory. For that, I propose to introduce a new record. This would allow us to select all the unit tests using the "all-unit-tests" procedure, and add them to the (gnu ci) module. This way, we could have a Cuirass specification for the unit tests, as we already have for the system tests, to spot regressions early on. Here's a patch that translates the "account.scm" test module to the new proposed mechanism. If there are no objections, I plan to convert all the remaining tests. Thanks, Mathieu --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0001-wip-Introduce-unit-tests.patch Content-Transfer-Encoding: quoted-printable >From eecedc74d8a3fa1a4dc1b99879def3571c9667cf Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Tue, 10 Aug 2021 16:56:38 +0200 Subject: [PATCH] wip: Introduce unit-tests. --- Makefile.am | 1 + etc/unit-tests.scm | 98 ++++++++ tests/accounts.scm | 545 +++++++++++++++++++++++---------------------- unit-tests.scm | 69 ++++++ 4 files changed, 442 insertions(+), 271 deletions(-) create mode 100644 etc/unit-tests.scm create mode 100644 unit-tests.scm diff --git a/Makefile.am b/Makefile.am index 5542aa1c56..a5517f10d5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -431,6 +431,7 @@ TEST_EXTENSIONS =3D .scm .sh if CAN_RUN_TESTS =20 SCM_TESTS =3D \ + unit-tests.scm \ tests/accounts.scm \ tests/base16.scm \ tests/base32.scm \ diff --git a/etc/unit-tests.scm b/etc/unit-tests.scm new file mode 100644 index 0000000000..3daf69df3d --- /dev/null +++ b/etc/unit-tests.scm @@ -0,0 +1,98 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright =C2=A9 2016, 2018, 2019, 2020 Ludovic Court=C3=A8s +;;; +;;; 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 . + +(use-modules (unit-tests) + (gnu packages package-management) + ((gnu ci) #:select (channel-source->package)) + ((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 cha= nnel +instance." + ;; Honor the 'TESTS' environment variable so that one can select a subset + ;; of tests to run in the usual way: + ;; + ;; make check TESTS=3Daccounts + (parameterize ((current-guix-package + (channel-source->package source #:commit commit))) + (match (getenv "TESTS") + (#f + (all-unit-tests)) + ((=3D string-tokenize (tests ...)) + (filter (lambda (test) + (member (unit-test-name test) tests)) + (all-unit-tests)))))) + +(define (unit-test->manifest-entry test) + "Return a manifest entry for TEST, a unit test." + (manifest-entry + (name (string-append "test." (unit-test-name test))) + (version "0") + (item test))) + +(define (unit-test-manifest) + "Return a manifest containing all the unit 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 unit tests...~%" + (length tests)) + + (manifest (map unit-test->manifest-entry tests)))) + +;; Return the manifest. +(unit-test-manifest) diff --git a/tests/accounts.scm b/tests/accounts.scm index 78136390bb..302fcff567 100644 --- a/tests/accounts.scm +++ b/tests/accounts.scm @@ -16,13 +16,11 @@ ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . =20 -(define-module (test-accounts) - #:use-module (gnu build accounts) - #:use-module (gnu system accounts) - #:use-module (srfi srfi-19) - #:use-module (srfi srfi-64) - #:use-module (ice-9 vlist) - #:use-module (ice-9 match)) +(define-module (tests accounts) + #:use-module (unit-tests) + #:use-module (guix gexp) + #:use-module (guix modules) + #:export (%test-accounts)) =20 (define %passwd-sample "\ @@ -42,283 +40,288 @@ charlie:" (crypt "hey!" "$6$abc") ":17169:::::: nobody:!:0::::::\n")) =20 -(test-begin "accounts") =20 -(test-equal "write-passwd" - %passwd-sample - (call-with-output-string - (lambda (port) - (write-passwd (list (password-entry - (name "root") - (uid 0) (gid 0) - (real-name "Admin") - (directory "/root") - (shell "/bin/sh")) - (password-entry - (name "charlie") - (uid 1000) (gid 998) - (real-name "Charlie") - (directory "/home/charlie") - (shell "/bin/sh"))) - port)))) +(define (run-accounts-test) + (define test + (with-imported-modules + (source-module-closure '((gnu build accounts) + (gnu system accounts))) + #~(begin + (use-modules (srfi srfi-19) + (srfi srfi-64) + (ice-9 vlist) + (ice-9 match) + (gnu build accounts) + (gnu system accounts)) =20 -(test-equal "write-passwd with duplicate entry" - %passwd-sample - (call-with-output-string - (lambda (port) - (let ((charlie (password-entry - (name "charlie") - (uid 1000) (gid 998) - (real-name "Charlie") - (directory "/home/charlie") - (shell "/bin/sh")))) - (write-passwd (list (password-entry - (name "root") - (uid 0) (gid 0) - (real-name "Admin") - (directory "/root") - (shell "/bin/sh")) - charlie charlie) - port))))) + (mkdir #$output) + (chdir #$output) =20 -(test-equal "read-passwd + write-passwd" - %passwd-sample - (call-with-output-string - (lambda (port) - (write-passwd (call-with-input-string %passwd-sample - read-passwd) - port)))) + (test-begin "accounts") =20 -(test-equal "write-group" - %group-sample - (call-with-output-string - (lambda (port) - (write-group (list (group-entry - (name "root") (gid 0)) - (group-entry - (name "wheel") (gid 999) - (members '("alice" "bob"))) - (group-entry - (name "hackers") (gid 65000) - (members '("alice" "charlie")))) - port)))) + (test-equal "write-passwd" + #$%passwd-sample + (call-with-output-string + (lambda (port) + (write-passwd (list (password-entry + (name "root") + (uid 0) (gid 0) + (real-name "Admin") + (directory "/root") + (shell "/bin/sh")) + (password-entry + (name "charlie") + (uid 1000) (gid 998) + (real-name "Charlie") + (directory "/home/charlie") + (shell "/bin/sh"))) + port)))) =20 -(test-equal "read-group + write-group" - %group-sample - (call-with-output-string - (lambda (port) - (write-group (call-with-input-string %group-sample - read-group) - port)))) + (test-equal "read-passwd + write-passwd" + #$%passwd-sample + (call-with-output-string + (lambda (port) + (write-passwd (call-with-input-string #$%passwd-sample + read-passwd) + port)))) =20 -(test-equal "write-shadow" - %shadow-sample - (call-with-output-string - (lambda (port) - (write-shadow (list (shadow-entry - (name "root") - (password (crypt "secret" "$6$abc")) - (last-change 17169)) - (shadow-entry - (name "charlie") - (password (crypt "hey!" "$6$abc")) - (last-change 17169)) - (shadow-entry - (name "nobody"))) - port)))) + (test-equal "write-group" + #$%group-sample + (call-with-output-string + (lambda (port) + (write-group (list (group-entry + (name "root") (gid 0)) + (group-entry + (name "wheel") (gid 999) + (members '("alice" "bob"))) + (group-entry + (name "hackers") (gid 65000) + (members '("alice" "charlie")))) + port)))) =20 -(test-equal "read-shadow + write-shadow" - %shadow-sample - (call-with-output-string - (lambda (port) - (write-shadow (call-with-input-string %shadow-sample - read-shadow) - port)))) + (test-equal "read-group + write-group" + #$%group-sample + (call-with-output-string + (lambda (port) + (write-group (call-with-input-string #$%group-sample + read-group) + port)))) =20 - -(define allocate-groups (@@ (gnu build accounts) allocate-groups)) -(define allocate-passwd (@@ (gnu build accounts) allocate-passwd)) + (test-equal "write-shadow" + #$%shadow-sample + (call-with-output-string + (lambda (port) + (write-shadow (list (shadow-entry + (name "root") + (password (crypt "secret" "$6$abc")) + (last-change 17169)) + (shadow-entry + (name "charlie") + (password (crypt "hey!" "$6$abc")) + (last-change 17169)) + (shadow-entry + (name "nobody"))) + port)))) + + (test-equal "read-shadow + write-shadow" + #$%shadow-sample + (call-with-output-string + (lambda (port) + (write-shadow (call-with-input-string #$%shadow-sample + read-shadow) + port)))) + + (define allocate-groups (@@ (gnu build accounts) allocate-groups= )) + (define allocate-passwd (@@ (gnu build accounts) allocate-passwd= )) + + (test-equal "allocate-groups" + ;; Allocate GIDs in a stateless fashion. + (list (group-entry (name "s") (gid %system-id-max)) + (group-entry (name "x") (gid 900)) + (group-entry (name "t") (gid 899)) + (group-entry (name "a") (gid %id-min) (password "foo") + (members '("alice" "bob"))) + (group-entry (name "b") (gid (+ %id-min 1)) + (members '("charlie")))) + (allocate-groups (list (user-group (name "s") (system? #t)) + (user-group (name "x") (id 900)) + (user-group (name "t") (system? #t)) + (user-group (name "a") (password "foo")) + (user-group (name "b"))) + (alist->vhash `(("a" . "bob") + ("a" . "alice") + ("b" . "charlie"))))) =20 -(test-equal "allocate-groups" - ;; Allocate GIDs in a stateless fashion. - (list (group-entry (name "s") (gid %system-id-max)) - (group-entry (name "x") (gid 900)) - (group-entry (name "t") (gid 899)) - (group-entry (name "a") (gid %id-min) (password "foo") - (members '("alice" "bob"))) - (group-entry (name "b") (gid (+ %id-min 1)) - (members '("charlie")))) - (allocate-groups (list (user-group (name "s") (system? #t)) - (user-group (name "x") (id 900)) - (user-group (name "t") (system? #t)) - (user-group (name "a") (password "foo")) - (user-group (name "b"))) - (alist->vhash `(("a" . "bob") - ("a" . "alice") - ("b" . "charlie"))))) + (test-equal "allocate-groups with requested GIDs" + ;; Make sure the requested GID for "b" is honored. + (list (group-entry (name "a") (gid (+ 1 %id-min))) + (group-entry (name "b") (gid %id-min)) + (group-entry (name "c") (gid (+ 2 %id-min)))) + (allocate-groups (list (user-group (name "a")) + (user-group (name "b") (id %id-min)) + (user-group (name "c"))) + vlist-null)) =20 -(test-equal "allocate-groups with requested GIDs" - ;; Make sure the requested GID for "b" is honored. - (list (group-entry (name "a") (gid (+ 1 %id-min))) - (group-entry (name "b") (gid %id-min)) - (group-entry (name "c") (gid (+ 2 %id-min)))) - (allocate-groups (list (user-group (name "a")) - (user-group (name "b") (id %id-min)) - (user-group (name "c"))) - vlist-null)) + (test-equal "allocate-groups with previous state" + ;; Make sure bits of state are preserved: password, GID, no re= use of + ;; previously-used GIDs. + (list (group-entry (name "s") (gid (- %system-id-max 1))) + (group-entry (name "t") (gid (- %system-id-max 2))) + (group-entry (name "a") (gid 30000) (password #f) + (members '("alice" "bob"))) + (group-entry (name "b") (gid 30001) (password "bar") + (members '("charlie")))) + (allocate-groups (list (user-group (name "s") (system? #t)) + (user-group (name "t") (system? #t)) + (user-group (name "a") (password "foo")) + (user-group (name "b"))) + (alist->vhash `(("a" . "bob") + ("a" . "alice") + ("b" . "charlie"))) + (list (group-entry (name "a") (gid 30000)) + (group-entry (name "b") (gid 30001) + (password "bar")) + (group-entry (name "removed") + (gid %system-id-max))))) =20 -(test-equal "allocate-groups with previous state" - ;; Make sure bits of state are preserved: password, GID, no reuse of - ;; previously-used GIDs. - (list (group-entry (name "s") (gid (- %system-id-max 1))) - (group-entry (name "t") (gid (- %system-id-max 2))) - (group-entry (name "a") (gid 30000) (password #f) - (members '("alice" "bob"))) - (group-entry (name "b") (gid 30001) (password "bar") - (members '("charlie")))) - (allocate-groups (list (user-group (name "s") (system? #t)) - (user-group (name "t") (system? #t)) - (user-group (name "a") (password "foo")) - (user-group (name "b"))) - (alist->vhash `(("a" . "bob") - ("a" . "alice") - ("b" . "charlie"))) - (list (group-entry (name "a") (gid 30000)) - (group-entry (name "b") (gid 30001) - (password "bar")) - (group-entry (name "removed") - (gid %system-id-max))))) + (test-equal "allocate-groups with previous state, looping" + ;; Check that allocation starts after the highest previously-u= sed GID, and + ;; loops back to the lowest GID. + (list (group-entry (name "a") (gid (- %id-max 1))) + (group-entry (name "b") (gid %id-min)) + (group-entry (name "c") (gid (+ 1 %id-min)))) + (allocate-groups (list (user-group (name "a")) + (user-group (name "b")) + (user-group (name "c"))) + vlist-null + (list (group-entry (name "d") + (gid (- %id-max 2)))))) =20 -(test-equal "allocate-groups with previous state, looping" - ;; Check that allocation starts after the highest previously-used GID, a= nd - ;; loops back to the lowest GID. - (list (group-entry (name "a") (gid (- %id-max 1))) - (group-entry (name "b") (gid %id-min)) - (group-entry (name "c") (gid (+ 1 %id-min)))) - (allocate-groups (list (user-group (name "a")) - (user-group (name "b")) - (user-group (name "c"))) - vlist-null - (list (group-entry (name "d") - (gid (- %id-max 2)))))) + (test-equal "allocate-passwd" + ;; Allocate UIDs in a stateless fashion. + (list (password-entry (name "alice") (uid %id-min) (gid 1000) + (real-name "Alice") (shell "/bin/sh") + (directory "/home/alice")) + (password-entry (name "bob") (uid (+ 1 %id-min)) (gid 10= 01) + (real-name "Bob") (shell "/bin/gash") + (directory "/home/bob")) + (password-entry (name "sshd") (uid %system-id-max) (gid = 500) + (real-name "sshd") (shell "/nologin") + (directory "/var/empty")) + (password-entry (name "guix") (uid 30000) (gid 499) + (real-name "Guix") (shell "/nologin") + (directory "/var/empty"))) + (allocate-passwd (list (user-account (name "alice") + (comment "Alice") + (shell "/bin/sh") + (group "users")) + (user-account (name "bob") + (comment "Bob") + (shell "/bin/gash") + (group "wheel")) + (user-account (name "sshd") (system? #t) + (comment "sshd") + (home-directory "/var/emp= ty") + (shell "/nologin") + (group "sshd")) + (user-account (name "guix") (system? #t) + (comment "Guix") + (home-directory "/var/emp= ty") + (shell "/nologin") + (group "guix") + (uid 30000))) + (list (group-entry (name "users") (gid 1000)) + (group-entry (name "wheel") (gid 1001)) + (group-entry (name "sshd") (gid 500)) + (group-entry (name "guix") (gid 499))))) =20 -(test-equal "allocate-passwd" - ;; Allocate UIDs in a stateless fashion. - (list (password-entry (name "alice") (uid %id-min) (gid 1000) - (real-name "Alice") (shell "/bin/sh") - (directory "/home/alice")) - (password-entry (name "bob") (uid (+ 1 %id-min)) (gid 1001) - (real-name "Bob") (shell "/bin/gash") - (directory "/home/bob")) - (password-entry (name "sshd") (uid %system-id-max) (gid 500) - (real-name "sshd") (shell "/nologin") - (directory "/var/empty")) - (password-entry (name "guix") (uid 30000) (gid 499) - (real-name "Guix") (shell "/nologin") - (directory "/var/empty"))) - (allocate-passwd (list (user-account (name "alice") - (comment "Alice") - (shell "/bin/sh") - (group "users")) - (user-account (name "bob") - (comment "Bob") - (shell "/bin/gash") - (group "wheel")) - (user-account (name "sshd") (system? #t) - (comment "sshd") - (home-directory "/var/empty") - (shell "/nologin") - (group "sshd")) - (user-account (name "guix") (system? #t) - (comment "Guix") - (home-directory "/var/empty") - (shell "/nologin") - (group "guix") - (uid 30000))) - (list (group-entry (name "users") (gid 1000)) - (group-entry (name "wheel") (gid 1001)) - (group-entry (name "sshd") (gid 500)) - (group-entry (name "guix") (gid 499))))) + (test-equal "allocate-passwd with previous state" + ;; Make sure bits of state are preserved: UID, no reuse of pre= viously-used + ;; UIDs, and shell. + (list (password-entry (name "alice") (uid 1234) (gid 1000) + (real-name "Alice Smith") (shell "/bin/s= h") + (directory "/home/alice")) + (password-entry (name "charlie") (uid 1236) (gid 1000) + (real-name "Charlie") (shell "/bin/sh") + (directory "/home/charlie"))) + (allocate-passwd (list (user-account (name "alice") + (comment "Alice") + (shell "/bin/sh") ;honored + (group "users")) + (user-account (name "charlie") + (comment "Charlie") + (shell "/bin/sh") + (group "users"))) + (list (group-entry (name "users") (gid 1000))) + (list (password-entry (name "alice") (uid 123= 4) (gid 9999) + (real-name "Alice Smith= ") + (shell "/gnu/.../bin/ga= sh") ;ignored + (directory "/home/alice= ")) + (password-entry (name "bob") (uid 1235)= (gid 1001) + (real-name "Bob") (shel= l "/bin/sh") + (directory "/home/bob")= )))) =20 -(test-equal "allocate-passwd with previous state" - ;; Make sure bits of state are preserved: UID, no reuse of previously-us= ed - ;; UIDs, and shell. - (list (password-entry (name "alice") (uid 1234) (gid 1000) - (real-name "Alice Smith") (shell "/bin/sh") - (directory "/home/alice")) - (password-entry (name "charlie") (uid 1236) (gid 1000) - (real-name "Charlie") (shell "/bin/sh") - (directory "/home/charlie"))) - (allocate-passwd (list (user-account (name "alice") - (comment "Alice") - (shell "/bin/sh") ;honored - (group "users")) - (user-account (name "charlie") - (comment "Charlie") - (shell "/bin/sh") - (group "users"))) - (list (group-entry (name "users") (gid 1000))) - (list (password-entry (name "alice") (uid 1234) (gid 99= 99) - (real-name "Alice Smith") - (shell "/gnu/.../bin/gash") ;igno= red - (directory "/home/alice")) - (password-entry (name "bob") (uid 1235) (gid 1001) - (real-name "Bob") (shell "/bin/sh= ") - (directory "/home/bob"))))) + (test-equal "user+group-databases" + ;; The whole shebang. + (list (list (group-entry (name "a") (gid %id-min) + (members '("bob"))) + (group-entry (name "b") (gid (+ 1 %id-min)) + (members '("alice"))) + (group-entry (name "s") (gid %system-id-max))) + (list (password-entry (name "alice") (real-name "Alice") + (uid %id-min) (gid %id-min) + (directory "/a")) + (password-entry (name "bob") (real-name "Bob") + (uid (+ 1 %id-min)) (gid (+ 1 %id-= min)) + (directory "/b")) + (password-entry (name "nobody") + (uid 65534) (gid %system-id-max) + (directory "/var/empty"))) + (list (shadow-entry (name "alice") (last-change 100) + (password (crypt "initial pass" "$6$= "))) + (shadow-entry (name "bob") (last-change 50) + (password (crypt "foo" "$6$"))) + (shadow-entry (name "nobody") (last-change 100)))) + (call-with-values + (lambda () + (user+group-databases (list (user-account + (name "alice") + (comment "Alice") + (home-directory "/a") + (group "a") + (supplementary-groups '("b"= )) + (password (crypt "initial p= ass" "$6$"))) + (user-account + (name "bob") + (comment "Bob") + (home-directory "/b") + (group "b") + (supplementary-groups '("a"= ))) + (user-account + (name "nobody") + (group "s") + (uid 65534) + (home-directory "/var/empty= "))) + (list (user-group (name "a")) + (user-group (name "b")) + (user-group (name "s") (syst= em? #t))) + #:current-passwd '() + #:current-shadow + (list (shadow-entry (name "bob") + (password (cry= pt "foo" "$6$")) + (last-change 5= 0))) + #:current-groups '() + #:current-time + (lambda (type) + (make-time type 0 (* 24 3600 100= ))))) + list)) + (test-end "accounts") + (exit (=3D (test-runner-fail-count (test-runner-current)) 0))))) =20 -(test-equal "user+group-databases" - ;; The whole shebang. - (list (list (group-entry (name "a") (gid %id-min) - (members '("bob"))) - (group-entry (name "b") (gid (+ 1 %id-min)) - (members '("alice"))) - (group-entry (name "s") (gid %system-id-max))) - (list (password-entry (name "alice") (real-name "Alice") - (uid %id-min) (gid %id-min) - (directory "/a")) - (password-entry (name "bob") (real-name "Bob") - (uid (+ 1 %id-min)) (gid (+ 1 %id-min)) - (directory "/b")) - (password-entry (name "nobody") - (uid 65534) (gid %system-id-max) - (directory "/var/empty"))) - (list (shadow-entry (name "alice") (last-change 100) - (password (crypt "initial pass" "$6$"))) - (shadow-entry (name "bob") (last-change 50) - (password (crypt "foo" "$6$"))) - (shadow-entry (name "nobody") (last-change 100)))) - (call-with-values - (lambda () - (user+group-databases (list (user-account - (name "alice") - (comment "Alice") - (home-directory "/a") - (group "a") - (supplementary-groups '("b")) - (password (crypt "initial pass" "$6$"= ))) - (user-account - (name "bob") - (comment "Bob") - (home-directory "/b") - (group "b") - (supplementary-groups '("a"))) - (user-account - (name "nobody") - (group "s") - (uid 65534) - (home-directory "/var/empty"))) - (list (user-group (name "a")) - (user-group (name "b")) - (user-group (name "s") (system? #t))) - #:current-passwd '() - #:current-shadow - (list (shadow-entry (name "bob") - (password (crypt "foo" "= $6$")) - (last-change 50))) - #:current-groups '() - #:current-time - (lambda (type) - (make-time type 0 (* 24 3600 100))))) - list)) + (gexp->derivation "accounts-test" test)) =20 -(test-end "accounts") +(define %test-accounts + (unit-test + (name "accounts") + (description "Run the accounts unit tests.") + (value (run-accounts-test)))) diff --git a/unit-tests.scm b/unit-tests.scm new file mode 100644 index 0000000000..2c4474b19d --- /dev/null +++ b/unit-tests.scm @@ -0,0 +1,69 @@ +(define-module (unit-tests) + #:use-module (guix gexp) + #:use-module (guix diagnostics) + #:use-module (guix records) + #:use-module ((guix ui) #:select (warn-about-load-error)) + #:use-module (guix discovery) + #:use-module (srfi srfi-9 gnu) + #:use-module (ice-9 match) + #:export (unit-test + unit-test? + unit-test-name + unit-test-value + unit-test-description + unit-test-location + + fold-unit-tests + all-unit-tests)) + + +;;; +;;; Unit tests. +;;; + +(define-record-type* unit-test make-unit-test + unit-test? + (name unit-test-name) ;string + (value unit-test-value) ;%STORE-MONAD value + (description unit-test-description) ;string + (location unit-test-location (innate) ; + (default (and=3D> (current-source-location) + source-properties->location)))) + +(define (write-unit-test test port) + (match test + (($ name _ _ ($ file line)) + (format port "#" + name file line + (number->string (object-address test) 16))) + (($ name) + (format port "#" name + (number->string (object-address test) 16))))) + +(set-record-type-printer! write-unit-test) + +(define-gexp-compiler (compile-unit-test (test ) + unit target) + "Compile TEST to a derivation." + ;; XXX: UNIT and TARGET are ignored. + (unit-test-value test)) + +(define (test-modules) + "Return the list of modules that define unit tests." + (scheme-modules (dirname (search-path %load-path "guix.scm")) + "tests" + #:warn warn-about-load-error)) + +(define (fold-unit-tests proc seed) + "Invoke PROC on each unit test, passing it the test and the previous +result." + (fold-module-public-variables (lambda (obj result) + (if (unit-test? obj) + (cons obj result) + result)) + '() + (test-modules))) + +(define (all-unit-tests) + "Return the list of unit tests." + (reverse (fold-unit-tests cons '()))) --=20 2.32.0 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 10 14:15:41 2021 Received: (at 49981) by debbugs.gnu.org; 10 Aug 2021 18:15:41 +0000 Received: from localhost ([127.0.0.1]:60795 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mDWHt-0004Sa-9d for submit@debbugs.gnu.org; Tue, 10 Aug 2021 14:15:41 -0400 Received: from mira.cbaines.net ([212.71.252.8]:48746) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mDWHr-0004SR-EK for 49981@debbugs.gnu.org; Tue, 10 Aug 2021 14:15:40 -0400 Received: from localhost (unknown [IPv6:2a02:8010:68c1:0:8ac0:b4c7:f5c8:7caa]) by mira.cbaines.net (Postfix) with ESMTPSA id 4E85027BC78; Tue, 10 Aug 2021 19:15:38 +0100 (BST) Received: from capella (localhost [127.0.0.1]) by localhost (OpenSMTPD) with ESMTP id 03ac7fb9; Tue, 10 Aug 2021 18:15:38 +0000 (UTC) References: <87o8a5734b.fsf@gnu.org> User-agent: mu4e 1.4.15; emacs 27.2 From: Christopher Baines To: Mathieu Othacehe Subject: Re: [bug#49981] wip: Introduce unit-tests. In-reply-to: <87o8a5734b.fsf@gnu.org> Date: Tue, 10 Aug 2021 19:15:38 +0100 Message-ID: <87im0di2t1.fsf@cbaines.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 49981 Cc: 49981@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Mathieu Othacehe writes: > I would like to convert the Guix tests in the "tests/" directory to > derivations, in the exact same way as for the system tests in the > "gnu/tests/" directory. > > For that, I propose to introduce a new record. This would > allow us to select all the unit tests using the "all-unit-tests" > procedure, and add them to the (gnu ci) module. > > This way, we could have a Cuirass specification for the unit tests, as > we already have for the system tests, to spot regressions early on. > > Here's a patch that translates the "account.scm" test module to the new > proposed mechanism. If there are no objections, I plan to convert all > the remaining tests. Running the tests in an automated manor would be good, but I am concerned about the ramifications of converting them to be defined like the system tests. I think it's already possible to effectively run the tests for an arbitrary commit by building (current-guix) or similar. That runs all the tests, maybe a similar approach could be found that runs individual tests or runs them in groups. Converting the tests themselves in to things that have to be put in the store to be run could make local development harder, and is a step towards making guix harder to package and distribute. As an example, it would probably be possible for the Debian package to continue running the tests, but I'd expect that having to run a guix-daemon just to be able to setup for the tests will make running them more difficult. Chris From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 10 14:23:45 2021 Received: (at 49981) by debbugs.gnu.org; 10 Aug 2021 18:23:45 +0000 Received: from localhost ([127.0.0.1]:60806 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mDWPd-0004fS-GS for submit@debbugs.gnu.org; Tue, 10 Aug 2021 14:23:45 -0400 Received: from xavier.telenet-ops.be ([195.130.132.52]:50948) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mDWPY-0004fE-07 for 49981@debbugs.gnu.org; Tue, 10 Aug 2021 14:23:41 -0400 Received: from ptr-bvsjgyjmffd7q9timvx.18120a2.ip6.access.telenet.be ([IPv6:2a02:1811:8c09:9d00:aaf1:9810:a0b8:a55d]) by xavier.telenet-ops.be with bizsmtp id fuPa2500J0mfAB401uPapa; Tue, 10 Aug 2021 20:23:34 +0200 Message-ID: <0b868497af5e7582987c29bdf2a892e1073da164.camel@telenet.be> Subject: Re: [bug#49981] wip: Introduce unit-tests. From: Maxime Devos To: Mathieu Othacehe , 49981@debbugs.gnu.org Date: Tue, 10 Aug 2021 20:23:29 +0200 In-Reply-To: <87o8a5734b.fsf@gnu.org> References: <87o8a5734b.fsf@gnu.org> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-NxAANkD0QBWxAVALgtkB" User-Agent: Evolution 3.34.2 MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r21; t=1628619814; bh=1xRKdTviNPESKX2j/dXll+VOaPOYehhWGS9egj1H23U=; h=Subject:From:To:Date:In-Reply-To:References; b=FV7wGb7o1+9IYAnKVAlcS9kgFW9wf5M+U8xUxsgVPv5Wzoq0u3p6NXdJOQuMX9AgJ bGdbMfmGzBA44dMoNqTOyBMHk3KP7SVdASbn0So7Va2LUBFTtADq05mcSl9y0xbWRt ACbmfCOadmoWZgtVSi3nGRQleGrtH1ZKjiSFIITc0UKTF6AciYRLkpKDvnS9pBMkqA KB5MOmQUb+g3GG/yZ4u7OQ4/cxFXfEvPg1o9MYksZkC9Po4hUpETPK5b3hbvWE2jnQ PfGctcAhO65v2Z+pP2glviLkH5nJMV7Linyu7SSWxKhtw8ofDgNvY0qKgegj3TG2bI oqiMQofEEJajw== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 49981 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-NxAANkD0QBWxAVALgtkB Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Mathieu Othacehe schreef op di 10-08-2021 om 17:04 [+0200]: > Hello, >=20 > I would like to convert the Guix tests in the "tests/" directory to > derivations, in the exact same way as for the system tests in the > "gnu/tests/" directory. > > For that, I propose to introduce a new record. This would > allow us to select all the unit tests using the "all-unit-tests" > procedure, and add them to the (gnu ci) module. Does "make check" still work, even if no guix daemon is running? Greetings, Maxime. --=-NxAANkD0QBWxAVALgtkB Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYRLEIhccbWF4aW1lZGV2 b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7tYwAQCN0Xy8dwxtFtCG0X8v1yIVPXlH 6UA0AR+esMjyzq57UwEAsCeHggWMq0hn/Kt5zIg0Q4IB/zCdGVCcUdV0S36REgo= =9oht -----END PGP SIGNATURE----- --=-NxAANkD0QBWxAVALgtkB-- From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 12 10:51:09 2021 Received: (at 49981) by debbugs.gnu.org; 12 Aug 2021 14:51:09 +0000 Received: from localhost ([127.0.0.1]:39601 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mEC33-00023D-IY for submit@debbugs.gnu.org; Thu, 12 Aug 2021 10:51:09 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48590) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mEC2y-00022g-RB for 49981@debbugs.gnu.org; Thu, 12 Aug 2021 10:51:08 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:39730) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mEC2t-0004sR-G9; Thu, 12 Aug 2021 10:50:59 -0400 Received: from [2a01:e0a:19b:d9a0:f2f7:a404:c3d3:f8b4] (port=44562 helo=meije) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mEC2t-0003D3-5k; Thu, 12 Aug 2021 10:50:59 -0400 From: Mathieu Othacehe To: Christopher Baines Subject: Re: [bug#49981] wip: Introduce unit-tests. References: <87o8a5734b.fsf@gnu.org> <87im0di2t1.fsf@cbaines.net> Date: Thu, 12 Aug 2021 16:50:56 +0200 In-Reply-To: <87im0di2t1.fsf@cbaines.net> (Christopher Baines's message of "Tue, 10 Aug 2021 19:15:38 +0100") Message-ID: <87a6lm3een.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 49981 Cc: 49981@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hello Chris, > Converting the tests themselves in to things that have to be put in the > store to be run could make local development harder, and is a step > towards making guix harder to package and distribute. As an example, it > would probably be possible for the Debian package to continue running > the tests, but I'd expect that having to run a guix-daemon just to be > able to setup for the tests will make running them more difficult. That's a valid objection. Regarding the "current-guix" package, it builds the unit tests as a whole and it would be hard to extract precisely the result of each individual test. As almost everything else in Guix is somehow a derivation, it would be easier for Cuirass to deal with the unit tests under that format. Maybe we would need to find a way to be able to run them under the actual form, as well as under a derivation format. This needs more thoughts though, so I'll put that on hold. Thanks for the feedback, Mathieu From debbugs-submit-bounces@debbugs.gnu.org Mon Aug 30 16:14:24 2021 Received: (at 49981) by debbugs.gnu.org; 30 Aug 2021 20:14:24 +0000 Received: from localhost ([127.0.0.1]:60396 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mKnfg-0001x9-Rm for submit@debbugs.gnu.org; Mon, 30 Aug 2021 16:14:24 -0400 Received: from mail-qv1-f52.google.com ([209.85.219.52]:38413) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mKnfa-0001wk-AG for 49981@debbugs.gnu.org; Mon, 30 Aug 2021 16:14:18 -0400 Received: by mail-qv1-f52.google.com with SMTP id ew6so9094582qvb.5 for <49981@debbugs.gnu.org>; Mon, 30 Aug 2021 13:14:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=uDMvceqzfpVuxcNUXatDUhCVbJktSlA2X78LC0fIlZM=; b=bpt0bXkbHKmklVGHUc2OGz/o6aeszOv1NauLTFWU+h0Y2pc2SiUZtheZcEL0XqVoQl AGpYdhF/fMjtcSnp0PMP4LzcKj0ekU8VJk2GW+2X9L7z2Dx0jiwQ1a3T31MlKd2qFO34 cUNExnPGxsYzRLxQrMwyGKVatJx6hOetvvR5vRTemPWevRbzYGd+pVmaM7sMqGyZzbDD +DaXI6a0QhouDSeQqp4dLi33XOFQCHfogJ/u2ALT/1YDoS//Aft0Xgl/LPJsFG36JHOb GAlJGP4zuhFEabjtme3XOoymyvmpaYRkMYeO8hiAnhJyBcawdYisZ6FHfbIBHQM0o+WD a5VA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=uDMvceqzfpVuxcNUXatDUhCVbJktSlA2X78LC0fIlZM=; b=UvluNfV+pGJ1l04iEdp/62euv/6FBQbyLzgFpocMQV5rXZYTYJiucP03227TjBUuuT /BFPmZWx3W2xYzZD5TCjy9bxgh/C3oVFNcfGeEF5b57gfaSp99l7eYGi9u5c7HAJJC1k TvYbueFkaadKExzAoWIfjHEUfIbyIgEYuM9N/EnLtOHSzdeI2+shRWOM4/7pP/NRKg9i opZLDYsyxnSLayxikfL5sGfAGrIU7D9VHVPaM6ES29HsI5ctzRwFTprgWgXakbBkUeob Fqlf99KLdcaMESGsw7lzVMZ0P4FUlB9l7LdY47E2vvHkaXCnva3MBMo/osPEOepMLHMp GqgA== X-Gm-Message-State: AOAM5335t2okozujTOaN6roPcGlB7Vb1Rj7fFrXVNY0Lom2Rqv3XWk5X U2l97pxGrPo4BvhN3tmKIPb2e7+F2MI3kg== X-Google-Smtp-Source: ABdhPJzQg2O5mCEd249Db0lw3DEK0nNDTEGj8C2xkO142QijZHd2Eh87X/9eiuGf11R9CVnioZT6+w== X-Received: by 2002:ad4:5651:: with SMTP id bl17mr18018539qvb.49.1630354448591; Mon, 30 Aug 2021 13:14:08 -0700 (PDT) Received: from hurd (dsl-10-141-212.b2b2c.ca. [72.10.141.212]) by smtp.gmail.com with ESMTPSA id l13sm12078415qkp.97.2021.08.30.13.14.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Aug 2021 13:14:08 -0700 (PDT) From: Maxim Cournoyer To: Mathieu Othacehe Subject: Re: bug#49981: wip: Introduce unit-tests. References: <87o8a5734b.fsf@gnu.org> Date: Mon, 30 Aug 2021 16:14:07 -0400 In-Reply-To: <87o8a5734b.fsf@gnu.org> (Mathieu Othacehe's message of "Tue, 10 Aug 2021 17:04:20 +0200") Message-ID: <87czpulmgg.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 49981 Cc: 49981@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Mathieu, Mathieu Othacehe writes: > Hello, > > I would like to convert the Guix tests in the "tests/" directory to > derivations, in the exact same way as for the system tests in the > "gnu/tests/" directory. Perhaps it's because I spent some effort into improving our (srfi srfi-64) based test runner, but I have some reserves about the proposed change, that echoes what Chris and others have mentioned. 1. More in the way between the tests and the code, which may complicate test debugging. Unit tests are supposed to involve as little as possible, ideally; getting the daemon and the store for even the most trivial tests seems undesirable. 2. One gripe that I have for the check-system tests is that for flaky tests, if they pass, the success is cached (it's a derivation) and there's no easy way to re-run them. I wouldn't want that property to now apply to unit tests as well. > For that, I propose to introduce a new record. This would > allow us to select all the unit tests using the "all-unit-tests" > procedure, and add them to the (gnu ci) module. I'm not sure if that's a convenient API for the CI, but our unit test runner has had the [--select=REGEXP] and [--exclude=REGEXP] command line switches for a while, that provides the ability to select or exclude specific tests (at their individual level). > This way, we could have a Cuirass specification for the unit tests, as > we already have for the system tests, to spot regressions early on. Is there something with the current scheme that prevents us from doing so already? > Here's a patch that translates the "account.scm" test module to the new > proposed mechanism. If there are no objections, I plan to convert all > the remaining tests. I guess mine is an objection :-). But with more explanations perhaps I can better understand things. Thanks, Maxim From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 31 02:33:33 2021 Received: (at 49981) by debbugs.gnu.org; 31 Aug 2021 06:33:33 +0000 Received: from localhost ([127.0.0.1]:60951 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mKxKv-0003oV-B8 for submit@debbugs.gnu.org; Tue, 31 Aug 2021 02:33:33 -0400 Received: from mail-wm1-f50.google.com ([209.85.128.50]:54952) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mKxKq-0003o4-8r for 49981@debbugs.gnu.org; Tue, 31 Aug 2021 02:33:31 -0400 Received: by mail-wm1-f50.google.com with SMTP id g138so10325575wmg.4 for <49981@debbugs.gnu.org>; Mon, 30 Aug 2021 23:33:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=3GqzoO7JtP+Rmzds+cf/7N5SO60iXaFSjbb3dnyY+kw=; b=X6gvMBd6f49Vu7E7HXITv5tKZTiLLD+Rde8YliI5XQBhP4S/ovALB4NySorcMuE5uN IrMBhO4zhzuTgWkEsCtpEMXZyCJJGRiJlV9Xk/GlxVOzI9DW/m9UQ1m0/dhaipaOgQc8 KPIK/Nb6kJrAdeRf1BQtx8NYpq/rBQGK2t3QKlIwrGNGVliYZqvvjYIMqrFYrfvkRsuc rbn+WztHr/e9eE02o6rSsPSKxikgyM3yR7C1+CIUWXTJII6NXeKnxDsqeseZ2jZhQuBC 1B5vZer8FvSIKajKpAnWJJDqBFeuOYaVRSNG9bMTxL2gDZu42P+VddTKWFIEaMqFfkxq pmng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version; bh=3GqzoO7JtP+Rmzds+cf/7N5SO60iXaFSjbb3dnyY+kw=; b=O9Z6Xpsi3uOwtKIc0XlXDJOXT+2oU0UXEiDjaz6vIAAHBo+q58ItWiB5IA1xO1jTwQ 3VLBr3H/QpNwj+i899WM3Cr9VN6i15tMdt4bnTgpCOkiGyHPAXCaFR9fePzQ0zJKJHpR GDOUE6UTdoEQAhbrzVuchndTQgL24nhtRRJhKI0lHOGcPyT1Bql8jtMaOzC3WRYYz5if U6VCz6lloyNBJmBU0urSvVZS4I3KmDiG7OuYhcUUz8QezuUtclfrck5/Yn8EPAyWYYCZ OfF97RvGvUHwnFnk+8tkoCHaBwCEdBrefEGMlk/Jo9oZcYU1BWISiNFDg3ZloivN6Vmf T66g== X-Gm-Message-State: AOAM531FEtsOWoKg7R71SAzBtrYBa/8VpoJ72ZImrGfxTevRIQfl0MC5 OBSqger3OBfpuDwz8uV2wQHWKilSGswEwg== X-Google-Smtp-Source: ABdhPJwH5kPWncz9GFbJUzPpheMPGQpnxf8CT9O4xn37UZ0X//m3Z7VPIl7q8B7EJXoXe403yHpkCA== X-Received: by 2002:a7b:cbcd:: with SMTP id n13mr2557217wmi.49.1630391602576; Mon, 30 Aug 2021 23:33:22 -0700 (PDT) Received: from lili ([2a01:e0a:59b:9120:65d2:2476:f637:db1e]) by smtp.gmail.com with ESMTPSA id m24sm22699672wrb.18.2021.08.30.23.33.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Aug 2021 23:33:22 -0700 (PDT) From: zimoun To: Maxim Cournoyer , Mathieu Othacehe Subject: Re: [bug#49981] wip: Introduce unit-tests. In-Reply-To: <87czpulmgg.fsf@gmail.com> References: <87o8a5734b.fsf@gnu.org> <87czpulmgg.fsf@gmail.com> Date: Tue, 31 Aug 2021 08:27:54 +0200 Message-ID: <86pmtudt79.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 49981 Cc: 49981@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi, On Mon, 30 Aug 2021 at 16:14, Maxim Cournoyer wrote: > 2. One gripe that I have for the check-system tests is that for flaky > tests, if they pass, the success is cached (it's a derivation) and > there's no easy way to re-run them. I wouldn't want that property to > now apply to unit tests as well. Well, maybe all these derivations could be garbage collected at the end of the tests. But then, local development will hit bug#24937 [1] about GC performances. 1: Cheers, simon From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 31 03:03:29 2021 Received: (at 49981) by debbugs.gnu.org; 31 Aug 2021 07:03:29 +0000 Received: from localhost ([127.0.0.1]:60992 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mKxnt-0004cv-BC for submit@debbugs.gnu.org; Tue, 31 Aug 2021 03:03:29 -0400 Received: from mail-wr1-f41.google.com ([209.85.221.41]:43537) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mKxns-0004cH-A6 for 49981@debbugs.gnu.org; Tue, 31 Aug 2021 03:03:28 -0400 Received: by mail-wr1-f41.google.com with SMTP id b6so25883895wrh.10 for <49981@debbugs.gnu.org>; Tue, 31 Aug 2021 00:03:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:in-reply-to:references:date:message-id:mime-version :content-transfer-encoding; bh=FJ0LIAMddbtsbJlaewOBS20RnmjY9QEmmQ7L6b1TmgI=; b=NeWdLipfDcbsOWyiKNTSc+Hkw+1VeYjqiG6uoiF6qpniNIkDgCMd3uQ7KdnbjZ7/oB 4yMkdXOMORMAV7L9EkfmKG0LhB9RoozSdLzvMjH2lef9Hg6yWfyfUwpyUNMRKLg3pbgo CLe6tTmGnps86ciP10aWAwOIfVGr3OfohHnxcMXpj0hcfkMbeBz24vpuN16RvfReNVvV U3kOy3sjd6feuUnqF6WwbVGnH/SDyF51XfLh9xfRGqdgeuldQnmuZb4IsCBG7NDFRr1Z DMLvmTb5ZYGytgeD+ZUKQIta560zRiu4Vp2tb24Bz9f+9xPaSSDjhn3COninxf2786sM X8RA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:in-reply-to:references:date :message-id:mime-version:content-transfer-encoding; bh=FJ0LIAMddbtsbJlaewOBS20RnmjY9QEmmQ7L6b1TmgI=; b=ZTYXZvEyRkWzK2pC+M/f6rc8Db5wQxNdJbKCzkgP9bIb6B1i6uGBszOz7RLgctk8ZQ EXr3rzXq4dUjjiBKFUcGZyzZbrORj7YxlNUSj8nWWTmZMncfedCC11nUGFRyuGIX/x/x 4PfKiEXb6KFeB8TXkIAEb2rZw53z1yCOmMx3Q7CSREHWw2heWnIGXDSiT7A7hvixBCAj GbwxKY8I+8q+YWsUgV5Q622AxXdGAgEq0kJmOJ5B6Itl1uIUaZN0Q/dc0siL05QcCMwS Vj44wfp8trJSoUxKaJP5qY124W9Lv0igxtCY+oQhxoMekitVM0PZirtajf6XknlrABaV dIAg== X-Gm-Message-State: AOAM530okqUKQH4+xKGxp4nt3Gzhm563E+MRwaC1Wt3rFh9Q9C4+GMHQ caJmUI8epjQlH8r7HFD9hQd7JfMw+h8ucA== X-Google-Smtp-Source: ABdhPJykWLnxWnwXqO8anSFQ5eWiceL5FdVuDXGAItMNFo8nOvjUIVE801kiYvmD/kcT7aKYvXRkvA== X-Received: by 2002:adf:eb02:: with SMTP id s2mr29451070wrn.294.1630393402593; Tue, 31 Aug 2021 00:03:22 -0700 (PDT) Received: from lili ([2a01:e0a:59b:9120:65d2:2476:f637:db1e]) by smtp.gmail.com with ESMTPSA id w18sm19088202wrg.68.2021.08.31.00.03.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Aug 2021 00:03:22 -0700 (PDT) From: zimoun To: Mathieu Othacehe , 49981@debbugs.gnu.org Subject: Re: [bug#49981] wip: Introduce unit-tests. In-Reply-To: <87o8a5734b.fsf@gnu.org> References: <87o8a5734b.fsf@gnu.org> Date: Tue, 31 Aug 2021 08:36:25 +0200 Message-ID: <86lf4idst2.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 49981 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Mathieu, On Tue, 10 Aug 2021 at 17:04, Mathieu Othacehe wrote: > This way, we could have a Cuirass specification for the unit tests, as > we already have for the system tests, to spot regressions early on. Yeah it could be cool! :-) > Here's a patch that translates the "account.scm" test module to the new > proposed mechanism. If there are no objections, I plan to convert all > the remaining tests. I miss if =E2=80=9Cmake check TESTS=3D"tests/account.scm"=E2=80=9D still wo= rks and then where the log is located. Cheers, simon From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 05 04:27:30 2021 Received: (at control) by debbugs.gnu.org; 5 Oct 2021 08:27:30 +0000 Received: from localhost ([127.0.0.1]:39011 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mXfn9-00080X-53 for submit@debbugs.gnu.org; Tue, 05 Oct 2021 04:27:30 -0400 Received: from eggs.gnu.org ([209.51.188.92]:46070) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mXfn7-00080L-BD for control@debbugs.gnu.org; Tue, 05 Oct 2021 04:27:13 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:57684) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mXfn1-0001lV-WE for control@debbugs.gnu.org; Tue, 05 Oct 2021 04:27:08 -0400 Received: from [2a01:e0a:19b:d9a0:f2f7:a404:c3d3:f8b4] (port=41902 helo=meije) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mXfn0-0007mI-Op for control@debbugs.gnu.org; Tue, 05 Oct 2021 04:27:07 -0400 Date: Tue, 05 Oct 2021 08:27:05 +0000 Message-Id: <87lf37ev1i.fsf@meije.i-did-not-set--mail-host-address--so-tickle-me> To: control@debbugs.gnu.org From: Mathieu Othacehe Subject: control message for bug #49981 X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) close 49981 quit From unknown Fri Aug 15 20:54:26 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Tue, 02 Nov 2021 11:24:08 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator