GNU bug report logs - #41932
make check failures

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix; Reported by: Simen Endsjø <simendsjo@HIDDEN>; dated Thu, 18 Jun 2020 14:32:02 UTC; Maintainer for guix is bug-guix@HIDDEN.

Message received at 41932 <at> debbugs.gnu.org:


Received: (at 41932) by debbugs.gnu.org; 20 Jun 2020 11:19:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 20 07:19:10 2020
Received: from localhost ([127.0.0.1]:57428 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jmbWf-0004b8-U2
	for submit <at> debbugs.gnu.org; Sat, 20 Jun 2020 07:19:10 -0400
Received: from eggs.gnu.org ([209.51.188.92]:36252)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1jmbWe-0004at-3m
 for 41932 <at> debbugs.gnu.org; Sat, 20 Jun 2020 07:19:09 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:37828)
 by eggs.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <ludo@HIDDEN>)
 id 1jmbWY-0008TT-SL; Sat, 20 Jun 2020 07:19:02 -0400
Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=41214 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256)
 (Exim 4.82) (envelope-from <ludo@HIDDEN>)
 id 1jmbWY-0006s9-93; Sat, 20 Jun 2020 07:19:02 -0400
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Simen =?utf-8?Q?Endsj=C3=B8?= <simendsjo@HIDDEN>
Subject: Re: bug#41932: make check failures
References: <87sges3cim.fsf@HIDDEN>
Date: Sat, 20 Jun 2020 13:18:59 +0200
In-Reply-To: <87sges3cim.fsf@HIDDEN> ("Simen
 \=\?utf-8\?Q\?Endsj\=C3\=B8\=22's\?\= message of "Thu, 18
 Jun 2020 12:16:01 +0200")
Message-ID: <87lfkiast8.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 41932
Cc: 41932 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi Simen,

Thanks for your report.  Some explanations follow:

Simen Endsj=C3=B8 <simendsjo@HIDDEN> skribis:

> test-name: channel-news, one entry
> location: /home/simendsjo/code/guix/tests/channels.scm:318
> source:
> + (test-assert
> +   "channel-news, one entry"
> +   (with-temporary-git-repository
> +     directory
> +     `((add ".guix-channel"
> +            ,(object->string
> +               '(channel (version 0) (news-file "news.scm"))))
> +       (commit "first commit")
> +       (add "src/a.txt" "A")
> +       (commit "second commit")
> +       (tag "tag-for-first-news-entry")
> +       (add "news.scm"
> +            ,(lambda (repository)
> +               (let ((previous
> +                       (reference-name->oid repository "HEAD")))
> +                 (object->string
> +                   `(channel-news
> +                      (version 0)
> +                      (entry (commit ,(oid->string previous))
> +                             (title (en "New file!") (eo "Nova
> dosiero!"))
> +                             (body (en "Yeah, a.txt."))))))))
> +       (commit "third commit")
> +       (add "src/b.txt" "B")
> +       (commit "fourth commit")
> +       (add "news.scm"
> +            ,(lambda (repository)
> +               (let ((second
> +                       (commit-id
> +                         (find-commit repository "second commit")))
> +                     (previous
> +                       (reference-name->oid repository "HEAD")))
> +                 (object->string
> +                   `(channel-news
> +                      (version 0)
> +                      (entry (commit ,(oid->string previous))
> +                             (title (en "Another file!"))
> +                             (body (en "Yeah, b.txt.")))
> +                      (entry (tag "tag-for-first-news-entry")
> +                             (title (en "Old news.") (eo
> "Malnova?oj."))

Seems you=E2=80=99re missing a UTF-8 locale, which causes this test to fail.

> test-name: signed commits, SHA1 signature
> location: /home/simendsjo/code/guix/tests/git-authenticate.scm:60
> source:
> + (test-assert
> +   "signed commits, SHA1 signature"
> +   (with-fresh-gnupg-setup
> +     (list %ed25519-public-key-file
> +           %ed25519-secret-key-file)
> +     (call-with-output-file
> +       (string-append (getenv "GNUPGHOME") "/gpg.conf")
> +       (lambda (port) (display "digest-algo sha1" port)))
> +     (with-temporary-git-repository
> +       directory
> +       `((add "a.txt" "A")
> +         (add "signer.key"
> +              ,(call-with-input-file
> +                 %ed25519-public-key-file
> +                 get-string-all))
> +         (add ".guix-authorizations"
> +              ,(object->string
> +                 `(authorizations
> +                    (version 0)
> +                    ((,(key-fingerprint %ed25519-public-key-file)
> +                      (name "Charlie"))))))
> +         (commit
> +           "first commit"
> +           (signer
> +             ,(key-fingerprint %ed25519-public-key-file))))
> +       (with-repository
> +         directory
> +         repository
> +         (let ((commit (find-commit repository "first")))
> +           (guard (c ((unsigned-commit-error? c)
> +                      (oid=3D? (git-authentication-error-commit c)
> +                             (commit-id commit))))
> +                  (authenticate-commits
> +                    repository
> +                    (list commit)
> +                    #:keyring-reference
> +                    "master")
> +                  'failed))))))
> actual-value: #f
> actual-error:
> + (%exception
> +   #<&invoke-error program: "gpg" arguments: ("--import"
> "/home/simendsjo/code/guix/tests/ed25519.key") exit-status: 127
> term-signal: #f stop-signal: #f>)
> result: FAIL

Looks like =E2=80=98gpg=E2=80=99 is missing from $PATH.  The test should ha=
ve been
skipped, but there was a typo; fixed now.

> + set -e
> + guix environment --version
> guix environment (GNU Guix) 1.0.1.18382-e418c
> Copyright (C) 2020 the Guix authors
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> + guile -c '((@@ (guix scripts environment)
> assert-container-features))'
> Backtrace:
> In ice-9/boot-9.scm:
>  1736:10  8 (with-exception-handler _ _ #:unwind? _ # _)
> In unknown file:
>           7 (apply-smob/0 #<thunk 7f8770fa0180>)
> In ice-9/boot-9.scm:
>    718:2  6 (call-with-prompt _ _ #<procedure
> default-prompt-handle?>)
> In ice-9/eval.scm:
>    619:8  5 (_ #(#(#<directory (guile-user) 7f8770c1ef00>)))
> In ice-9/command-line.scm:
>   185:18  4 (_ #<input: string 7f8770c18a10>)
> In unknown file:
>           3 (eval ((@@ (guix scripts environment) #)) #<directory
> (?>)
> In ice-9/eval.scm:
>   182:19  2 (proc #f)
>   142:16  1 (compile-top-call #f (5 (guix scripts environment) . #) #)
> In unknown file:
>           0 (%resolve-variable (5 (guix scripts environment) # .
> #f) ?)
>
> ERROR: In procedure %resolve-variable:
> error: assert-container-features: unbound variable
> + exit 77
> SKIP tests/guix-environment-container.sh (exit status: 77)

Oops, not a test failure, but still an issue here.

> FAIL: tests/guix-repl
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>
> + guix repl --version
> guix repl (GNU Guix) 1.0.1.18382-e418c
> Copyright (C) 2020 the Guix authors
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> ++ mktemp -d
> + test_directory=3D/tmp/tmp.1dOO9LbJgB
> + export test_directory
> + trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT
> + tmpfile=3D/tmp/tmp.1dOO9LbJgB/foo.scm
> + rm -f /tmp/tmp.1dOO9LbJgB/foo.scm
> + trap 'rm -f "$tmpfile"' EXIT
> + module_dir=3Dt-guix-repl-20146
> + mkdir t-guix-repl-20146
> + trap 'rm -rf "$module_dir"' EXIT
> + cat
> ++ guix repl /tmp/tmp.1dOO9LbJgB/foo.scm
> + test 'Consider installing the '\''guile-readline'\'' package for
> convenient interactive line editing and input history.
>
> Consider installing the '\''guile-colorized'\'' package
> for a colorful Guile experience.
>
> coreutils' =3D coreutils
> + rm -rf t-guix-repl-20146
> FAIL tests/guix-repl.sh (exit status: 1)

Here ~/.guile is read by =E2=80=98guix repl=E2=80=99 when it shouldn=E2=80=
=99t.  I believe this
was fixed by 290c3166212d1c7150ac64ea6d6f6ad506c4d29b.

Thanks for reporting these issues!

Ludo=E2=80=99.




Information forwarded to bug-guix@HIDDEN:
bug#41932; Package guix. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 18 Jun 2020 14:31:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jun 18 10:31:30 2020
Received: from localhost ([127.0.0.1]:53990 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1jlvZi-0003Dy-IS
	for submit <at> debbugs.gnu.org; Thu, 18 Jun 2020 10:31:30 -0400
Received: from lists.gnu.org ([209.51.188.17]:43260)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <simendsjo@HIDDEN>) id 1jlrkq-0003Ec-Ml
 for submit <at> debbugs.gnu.org; Thu, 18 Jun 2020 06:26:44 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:41708)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <simendsjo@HIDDEN>)
 id 1jlrkq-0002VL-Fr
 for bug-guix@HIDDEN; Thu, 18 Jun 2020 06:26:44 -0400
Received: from mail-lf1-x142.google.com ([2a00:1450:4864:20::142]:39782)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <simendsjo@HIDDEN>)
 id 1jlrki-0005hK-V9
 for bug-guix@HIDDEN; Thu, 18 Jun 2020 06:26:44 -0400
Received: by mail-lf1-x142.google.com with SMTP id d21so1072253lfb.6
 for <bug-guix@HIDDEN>; Thu, 18 Jun 2020 03:26:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=user-agent:from:to:subject:message-id:date:mime-version;
 bh=DBWjVxNClnCjrog8TP9tbGtCrqAKO8efBVQq4wfo71Y=;
 b=pI7YDPEkB3Cx0bnbAra6DXKmgnjln+7xKS3TAVUc7DBcWG7oZg4o/8ETjtVWn+4Mo0
 QXM2RUgwJlRmqNjWXmv+cWgAQXYdzMQIFWW781WLw3OuDozfD/+8SPCBdYylPhoOQjJF
 qAoef6xPepax6pHzlh7Ic1agMDrtAAAsThFHncOuPzVxBMTm/04BkXgcgFvQGCqo0HG+
 buZ2KG41B+ViucWxMIa/CaC0wdNLSZ/4RTd933e/67pGt89HCiAbE95NoPNRdfJ6Zab7
 DZ9CiNBLmh/K8WOyxIDBlUXyb8nEXsUp5JclVN0HZ/QhnDzVKa1VbOWLHO1eny88uGzc
 Ehtg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:user-agent:from:to:subject:message-id:date
 :mime-version;
 bh=DBWjVxNClnCjrog8TP9tbGtCrqAKO8efBVQq4wfo71Y=;
 b=hjRfWMDoO3VtZ0aNnbzhRrvg0x6KSe9R/JP99arMQ7sGDspyS243St4XWbIkpVlyn8
 ZZk0hZHqR/9EX/e1W/zaENh7EKJB4y6OHxXoFoWPdpRozA2U3c0EACHaJUuFCWf12hjn
 cJvB2eIuIDQm9ivILYVeToxt0UlYdeimIsDKU02HM4eqY4An9ICKVPdebfynf/iPbnt9
 RWUYuGv4mDrG4euvfAZVqaNw902TPNT7Dd8qkaqyOf83vlX1k7wCLvuzPcS0QqzL9rRu
 0p8UcRkxAEUJr5NuZtZbSeQnwMwitpbkkqqVZnAjb4fejyZvZ73MJa3zGqcNFfQ70jKn
 wqpg==
X-Gm-Message-State: AOAM5337ne9mVNBHPRQ2pcdfJ2FbmUOuAAtbvpHZNmZIzpi5zp3Pbn0g
 uqaVirqWe9xGR9NeV183Uw6OEkUOKUI=
X-Google-Smtp-Source: ABdhPJz3cOJlUoKP6Vz8z3oepUSgdBsLucwxmQOw0CuwjXGpAF4xc+Pwkco0YMgjvIcLNXQvsdxVxg==
X-Received: by 2002:a19:ed17:: with SMTP id y23mr2030338lfy.162.1592475991571; 
 Thu, 18 Jun 2020 03:26:31 -0700 (PDT)
Received: from simendsjo-laptop (cm-84.211.120.197.getinternet.no.
 [84.211.120.197])
 by smtp.gmail.com with ESMTPSA id y3sm545159ljk.39.2020.06.18.03.26.29
 for <bug-guix@HIDDEN>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 18 Jun 2020 03:26:30 -0700 (PDT)
User-agent: mu4e 1.4.10; emacs 27.0.91
From: Simen =?utf-8?Q?Endsj=C3=B8?= <simendsjo@HIDDEN>
To: bug-guix@HIDDEN
Subject: make check failures
Message-ID: <87sges3cim.fsf@HIDDEN>
Date: Thu, 18 Jun 2020 12:16:01 +0200
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="=-=-="
Received-SPF: pass client-ip=2a00:1450:4864:20::142;
 envelope-from=simendsjo@HIDDEN; helo=mail-lf1-x142.google.com
X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache.
 That's all we know.
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
 HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001, T_FILL_THIS_FORM_SHORT=0.01,
 URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN
X-Spam_action: no action
X-Debbugs-Envelope-To: submit
X-Mailman-Approved-At: Thu, 18 Jun 2020 10:31:29 -0400
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>

--=-=-=
Content-Type: text/plain; format=flowed


I want to update and add some packages, but I'm having trouble 
setting up the
environment as I get some failing tests. I followed the 
Contributing manual
found here: 
https://guix.gnu.org/manual/en/html_node/Building-from-Git.html

- git clone
- guix environment guix --pure --ad-hoc help2man git strace
- ./bootstrap
- ./configure --localstatedir=/var
- make check


==================================================
   GNU Guix 1.0.1.18382-e418c: ./test-suite.log
==================================================

# TOTAL: 1058
# PASS:  1040
# SKIP:  13
# XFAIL: 2
# FAIL:  3
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

SKIP: tests/base32
==================

sh: nix-hash: command not found
test-name: bytevector->base32-string
location: /home/simendsjo/code/guix/tests/base32.scm:48
source:
+ (test-assert
+   "bytevector->base32-string"
+   (fold (lambda (bv expected result)
+           (and result
+                (string=?
+                  (bytevector->base32-string bv)
+                  expected)))
+         #t
+         (map string->utf8
+              '("" "f" "fo" "foo" "foob" "fooba" "foobar"))
+         '(""
+           "my"
+           "mzxq"
+           "mzxw6"
+           "mzxw6yq"
+           "mzxw6ytb"
+           "mzxw6ytboi")))
actual-value: #t
result: PASS

test-name: base32-string->bytevector
location: /home/simendsjo/code/guix/tests/base32.scm:65
source:
+ (test-assert
+   "base32-string->bytevector"
+   (every (lambda (bv)
+            (equal?
+              (base32-string->bytevector
+                (bytevector->base32-string bv))
+              bv))
+          (map string->utf8
+               '("" "f" "fo" "foo" "foob" "fooba" "foobar"))))
actual-value: #t
result: PASS

test-name: nix-base32-string->bytevector
location: /home/simendsjo/code/guix/tests/base32.scm:73
source:
+ (test-assert
+   "nix-base32-string->bytevector"
+   (every (lambda (bv)
+            (equal?
+              (nix-base32-string->bytevector
+                (bytevector->nix-base32-string bv))
+              bv))
+          (map string->utf8
+               '("" "f" "fo" "foo" "foob" "fooba" "foobar"))))
actual-value: #t
result: PASS

test-name: &invalid-base32-character
location: /home/simendsjo/code/guix/tests/base32.scm:81
source:
+ (test-equal
+   "&invalid-base32-character"
+   #\e
+   (guard (c ((invalid-base32-character? c)
+              (invalid-base32-character-value c)))
+          (nix-base32-string->bytevector
+            (string-append (make-string 51 #\a) "e"))))
expected-value: #\e
actual-value: #\e
result: PASS

test-name: sha256 & bytevector->nix-base32-string
location: /home/simendsjo/code/guix/tests/base32.scm:92
source:
+ (test-assert
+   "sha256 & bytevector->nix-base32-string"
+   (let ((file (search-path %load-path "tests/test.drv")))
+     (equal?
+       (bytevector->nix-base32-string
+         (sha256
+           (call-with-input-file file get-bytevector-all)))
+       (let* ((c (format
+                   #f
+                   "~a --type sha256 --base32 --flat \"~a\""
+                   %nix-hash
+                   file))
+              (p (open-input-pipe c))
+              (l (read-line p)))
+         (close-pipe p)
+         l))))
result: SKIP


FAIL: tests/channels
====================

test-name: channel-instance-metadata returns default if 
.guix-channel does not exist
location: /home/simendsjo/code/guix/tests/channels.scm:112
source:
+ (test-equal
+   "channel-instance-metadata returns default if .guix-channel 
does not exist"
+   '("/" ())
+   (let ((metadata
+           (channel-instance-metadata instance--boring)))
+     (list (channel-metadata-directory metadata)
+           (channel-metadata-dependencies metadata))))
expected-value: ("/" ())
actual-value: ("/" ())
result: PASS

test-name: channel-instance-metadata and default dependencies
location: /home/simendsjo/code/guix/tests/channels.scm:118
source:
+ (test-equal
+   "channel-instance-metadata and default dependencies"
+   '()
+   (channel-metadata-dependencies
+     (channel-instance-metadata instance--no-deps)))
expected-value: ()
actual-value: ()
result: PASS

test-name: channel-instance-metadata and directory
location: /home/simendsjo/code/guix/tests/channels.scm:122
source:
+ (test-equal
+   "channel-instance-metadata and directory"
+   "/modules"
+   (channel-metadata-directory
+     (channel-instance-metadata
+       instance--sub-directory)))
expected-value: "/modules"
actual-value: "/modules"
result: PASS

test-name: channel-instance-metadata rejects unsupported version
location: /home/simendsjo/code/guix/tests/channels.scm:127
source:
+ (test-equal
+   "channel-instance-metadata rejects unsupported version"
+   1
+   (guard (c ((and (message-condition? c) (error-location? c))
+              (location-line (error-location c))))
+          (channel-instance-metadata
+            instance--unsupported-version)))
expected-value: 1
actual-value: 1
result: PASS

test-name: channel-instance-metadata returns <channel-metadata>
location: /home/simendsjo/code/guix/tests/channels.scm:133
source:
+ (test-assert
+   "channel-instance-metadata returns <channel-metadata>"
+   (every (@@ (guix channels) channel-metadata?)
+          (map channel-instance-metadata
+               (list instance--no-deps
+                     instance--simple
+                     instance--with-dupes))))
actual-value: #t
result: PASS

test-name: channel-instance-metadata dependencies are channels
location: /home/simendsjo/code/guix/tests/channels.scm:140
source:
+ (test-assert
+   "channel-instance-metadata dependencies are channels"
+   (let ((deps ((@@ (guix channels)
+                    channel-metadata-dependencies)
+                (channel-instance-metadata instance--simple))))
+     (match deps (((? channel? dep)) #t) (_ #f))))
actual-value: #t
result: PASS

test-name: latest-channel-instances includes channel dependencies
location: /home/simendsjo/code/guix/tests/channels.scm:147
source:
+ (test-assert
+   "latest-channel-instances includes channel dependencies"
+   (let* ((channel (channel (name 'test) (url "test")))
+          (test-dir
+            (channel-instance-checkout instance--simple)))
+     (mock ((guix git)
+            update-cached-checkout
+            (lambda* (url #:key ref starting-commit)
+              (match url
+                     ("test" (values test-dir "caf3cabba9e" #f))
+                     (_ (values
+                          (channel-instance-checkout 
instance--no-deps)
+                          "abcde1234"
+                          #f)))))
+           (with-store
+             store
+             (let ((instances
+                     (latest-channel-instances store (list 
channel))))
+               (and (eq? 2 (length instances))
+                    (lset= eq?
+                           '(test test-channel)
+                           (map (compose
+                                  channel-name
+                                  channel-instance-channel)
+                                instances))))))))
actual-value: #t
result: PASS

test-name: latest-channel-instances excludes duplicate channel 
dependencies
location: /home/simendsjo/code/guix/tests/channels.scm:166
source:
+ (test-assert
+   "latest-channel-instances excludes duplicate channel 
dependencies"
+   (let* ((channel (channel (name 'test) (url "test")))
+          (test-dir
+            (channel-instance-checkout instance--with-dupes)))
+     (mock ((guix git)
+            update-cached-checkout
+            (lambda* (url #:key ref starting-commit)
+              (match url
+                     ("test" (values test-dir "caf3cabba9e" #f))
+                     (_ (values
+                          (channel-instance-checkout 
instance--no-deps)
+                          "abcde1234"
+                          #f)))))
+           (with-store
+             store
+             (let ((instances
+                     (latest-channel-instances store (list 
channel))))
+               (and (= 2 (length instances))
+                    (lset= eq?
+                           '(test test-channel)
+                           (map (compose
+                                  channel-name
+                                  channel-instance-channel)
+                                instances))
+                    (find (lambda (instance)
+                            (and (eq? (channel-name
+                                        (channel-instance-channel 
instance))
+                                      'test-channel)
+                                 (string=?
+                                   (channel-commit
+                                     (channel-instance-channel 
instance))
+                                   "abc1234")))
+                          instances)))))))
actual-value: #<<channel-instance> channel: #<<channel> name: 
test-channel url: "https://example.com/test-channel" branch: 
"master" commit: "abc1234" introduction: #f location: ((line . 
226) (column . 19) (filename . "guix/channels.scm"))> commit: 
"abcde1234" checkout: 
"/home/simendsjo/code/guix/test-tmp/store/6zkf2waz1q531qkxxj1hxj6z8p0f1385-test-channel-abcde12">
result: PASS

test-name: latest-channel-instances #:validate-pull
location: /home/simendsjo/code/guix/tests/channels.scm:196
source:
+ (test-equal
+   "latest-channel-instances #:validate-pull"
+   'descendant
+   (let/ec
+     return
+     (with-temporary-git-repository
+       directory
+       '((add "a.txt" "A")
+         (commit "first commit")
+         (add "b.scm" "#t")
+         (commit "second commit"))
+       (with-repository
+         directory
+         repository
+         (let* ((commit1 (find-commit repository "first"))
+                (commit2 (find-commit repository "second"))
+                (spec (channel
+                        (url (string-append "file://" directory))
+                        (name 'foo)))
+                (new (channel
+                       (inherit spec)
+                       (commit (oid->string (commit-id 
commit2)))))
+                (old (channel
+                       (inherit spec)
+                       (commit (oid->string (commit-id 
commit1))))))
+           (define (validate-pull channel current commit 
relation)
+             (return
+               (and (eq? channel old)
+                    (string=?
+                      (oid->string (commit-id commit2))
+                      current)
+                    (string=?
+                      (oid->string (commit-id commit1))
+                      commit)
+                    relation)))
+           (with-store
+             store
+             (latest-channel-instances
+               store
+               (list old)
+               #:current-channels
+               (list new)
+               #:validate-pull
+               validate-pull)))))))
Initialized empty Git repository in 
/tmp/guix-directory.1cbxjG/.git/
[master (root-commit) d61abce] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
[master 90f1a87] second commit
 1 file changed, 1 insertion(+)
 create mode 100644 b.scm
expected-value: descendant
actual-value: descendant
result: PASS

test-name: channel-instances->manifest
location: /home/simendsjo/code/guix/tests/channels.scm:229
source:
+ (test-assert
+   "channel-instances->manifest"
+   (let* ((spec (lambda deps
+                  `(channel
+                     (version 0)
+                     (dependencies
+                       ,@(map (lambda (dep)
+                                `(channel
+                                   (name ,dep)
+                                   (url "http://example.org")))
+                              deps)))))
+          (guix (make-instance #:name 'guix))
+          (instance0 (make-instance #:name 'a))
+          (instance1
+            (make-instance #:name 'b #:spec (spec 'a)))
+          (instance2
+            (make-instance #:name 'c #:spec (spec 'b)))
+          (instance3
+            (make-instance #:name 'd #:spec (spec 'c 'a))))
+     (%graft? #f)
+     (let ((source (channel-instance-checkout guix)))
+       (mkdir (string-append source "/build-aux"))
+       (call-with-output-file
+         (string-append
+           source
+           "/build-aux/build-self.scm")
+         (lambda (port)
+           (write '(begin
+                     (use-modules (guix) (gnu packages 
bootstrap))
+                     (lambda _ (package->derivation 
%bootstrap-guile)))
+                  port))))
+     (with-store
+       store
+       (let ()
+         (define manifest
+           (run-with-store
+             store
+             (channel-instances->manifest
+               (list guix
+                     instance0
+                     instance1
+                     instance2
+                     instance3))))
+         (define entries (manifest-entries manifest))
+         (define (depends? drv in out)
+           (let ((set (list->set
+                        (requisites
+                          store
+                          (list (derivation-file-name drv)))))
+                 (in (map derivation-file-name in))
+                 (out (map derivation-file-name out)))
+             (and (every (cut set-contains? set <>) in)
+                  (not (any (cut set-contains? set <>) out)))))
+         (define (lookup name)
+           (run-with-store
+             store
+             (lower-object
+               (manifest-entry-item
+                 (manifest-lookup
+                   manifest
+                   (manifest-pattern (name name)))))))
+         (let ((drv-guix (lookup "guix"))
+               (drv0 (lookup "a"))
+               (drv1 (lookup "b"))
+               (drv2 (lookup "c"))
+               (drv3 (lookup "d")))
+           (and (depends?
+                  drv-guix
+                  '()
+                  (list drv0 drv1 drv2 drv3))
+                (depends? drv0 (list) (list drv1 drv2 drv3))
+                (depends? drv1 (list drv0) (list drv2 drv3))
+                (depends? drv2 (list drv1) (list drv3))
+                (depends? drv3 (list drv2 drv0) (list))))))))
actual-value: #t
result: PASS

test-name: channel-news, no news
location: /home/simendsjo/code/guix/tests/channels.scm:306
source:
+ (test-equal
+   "channel-news, no news"
+   '()
+   (with-temporary-git-repository
+     directory
+     '((add "a.txt" "A") (commit "the commit"))
+     (with-repository
+       directory
+       repository
+       (let ((channel
+               (channel
+                 (url (string-append "file://" directory))
+                 (name 'foo)))
+             (latest (reference-name->oid repository "HEAD")))
+         (channel-news-for-commit
+           channel
+           (oid->string latest))))))
Initialized empty Git repository in 
/tmp/guix-directory.iC041J/.git/
[master (root-commit) 02c8df1] the commit
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
expected-value: ()
actual-value: ()
result: PASS

test-name: channel-news, one entry
location: /home/simendsjo/code/guix/tests/channels.scm:318
source:
+ (test-assert
+   "channel-news, one entry"
+   (with-temporary-git-repository
+     directory
+     `((add ".guix-channel"
+            ,(object->string
+               '(channel (version 0) (news-file "news.scm"))))
+       (commit "first commit")
+       (add "src/a.txt" "A")
+       (commit "second commit")
+       (tag "tag-for-first-news-entry")
+       (add "news.scm"
+            ,(lambda (repository)
+               (let ((previous
+                       (reference-name->oid repository "HEAD")))
+                 (object->string
+                   `(channel-news
+                      (version 0)
+                      (entry (commit ,(oid->string previous))
+                             (title (en "New file!") (eo "Nova 
dosiero!"))
+                             (body (en "Yeah, a.txt."))))))))
+       (commit "third commit")
+       (add "src/b.txt" "B")
+       (commit "fourth commit")
+       (add "news.scm"
+            ,(lambda (repository)
+               (let ((second
+                       (commit-id
+                         (find-commit repository "second 
commit")))
+                     (previous
+                       (reference-name->oid repository "HEAD")))
+                 (object->string
+                   `(channel-news
+                      (version 0)
+                      (entry (commit ,(oid->string previous))
+                             (title (en "Another file!"))
+                             (body (en "Yeah, b.txt.")))
+                      (entry (tag "tag-for-first-news-entry")
+                             (title (en "Old news.") (eo 
"Malnova?oj."))
+                             (body (en "For a.txt"))))))))
+       (commit "fifth commit"))
+     (with-repository
+       directory
+       repository
+       (define (find-commit* message)
+         (oid->string
+           (commit-id (find-commit repository message))))
+       (let ((channel
+               (channel
+                 (url (string-append "file://" directory))
+                 (name 'foo)))
+             (commit1 (find-commit* "first commit"))
+             (commit2 (find-commit* "second commit"))
+             (commit3 (find-commit* "third commit"))
+             (commit4 (find-commit* "fourth commit"))
+             (commit5 (find-commit* "fifth commit")))
+         (and (null? (channel-news-for-commit channel commit2))
+              (lset= string=?
+                     (map channel-news-entry-commit
+                          (channel-news-for-commit channel 
commit5))
+                     (list commit2 commit4))
+              (lset= equal?
+                     (map channel-news-entry-title
+                          (channel-news-for-commit channel 
commit5))
+                     '((("en" . "Another file!"))
+                       (("en" . "Old news.") ("eo" . 
"Malnova?oj."))))
+              (lset= string=?
+                     (map channel-news-entry-commit
+                          (channel-news-for-commit channel 
commit3))
+                     (list commit2))
+              (lset= string=?
+                     (map channel-news-entry-commit
+                          (channel-news-for-commit channel 
commit3 commit1))
+                     (list commit2))
+              (lset= string=?
+                     (map channel-news-entry-commit
+                          (channel-news-for-commit channel 
commit5 commit3))
+                     (list commit4))
+              (lset= string=?
+                     (map channel-news-entry-commit
+                          (channel-news-for-commit channel 
commit5 commit1))
+                     (list commit4 commit2))
+              (lset= equal?
+                     (map channel-news-entry-tag
+                          (channel-news-for-commit channel 
commit5 commit1))
+                     '(#f "tag-for-first-news-entry")))))))
Initialized empty Git repository in 
/tmp/guix-directory.fDRYPF/.git/
[master (root-commit) ad6f8c3] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 .guix-channel
[master 7ae4c89] second commit
 1 file changed, 1 insertion(+)
 create mode 100644 src/a.txt
[master b845960] third commit
 1 file changed, 1 insertion(+)
 create mode 100644 news.scm
[master 38eb3f3] fourth commit
 1 file changed, 1 insertion(+)
 create mode 100644 src/b.txt
[master b44b975] fifth commit
 1 file changed, 1 insertion(+), 1 deletion(-)
actual-value: #f
result: FAIL

test-name: authenticate-channel, wrong first commit signer
location: /home/simendsjo/code/guix/tests/channels.scm:406
source:
+ (test-assert
+   "authenticate-channel, wrong first commit signer"
+   (with-fresh-gnupg-setup
+     (list %ed25519-public-key-file
+           %ed25519-secret-key-file
+           %ed25519bis-public-key-file
+           %ed25519bis-secret-key-file)
+     (with-temporary-git-repository
+       directory
+       `((add ".guix-channel"
+              ,(object->string
+                 '(channel
+                    (version 0)
+                    (keyring-reference "master"))))
+         (add ".guix-authorizations"
+              ,(object->string
+                 `(authorizations
+                    (version 0)
+                    ((,(key-fingerprint %ed25519-public-key-file)
+                      (name "Charlie"))))))
+         (add "signer.key"
+              ,(call-with-input-file
+                 %ed25519-public-key-file
+                 get-string-all))
+         (commit
+           "first commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file))))
+       (with-repository
+         directory
+         repository
+         (let* ((commit1 (find-commit repository "first"))
+                (intro ((@@ (guix channels) 
make-channel-introduction)
+                        (commit-id-string commit1)
+                        (openpgp-public-key-fingerprint
+                          (read-openpgp-packet 
%ed25519bis-public-key-file))
+                        #f))
+                (channel
+                  (channel
+                    (name 'example)
+                    (url (string-append "file://" directory))
+                    (introduction intro))))
+           (guard (c ((message? c)
+                      (->bool
+                        (string-contains
+                          (condition-message c)
+                          "initial commit"))))
+                  (authenticate-channel
+                    channel
+                    directory
+                    (commit-id-string commit1)
+                    #:keyring-reference-prefix
+                    "")
+                  'failed))))))
result: SKIP

test-name: authenticate-channel, .guix-authorizations
location: /home/simendsjo/code/guix/tests/channels.scm:446
source:
+ (test-assert
+   "authenticate-channel, .guix-authorizations"
+   (with-fresh-gnupg-setup
+     (list %ed25519-public-key-file
+           %ed25519-secret-key-file
+           %ed25519bis-public-key-file
+           %ed25519bis-secret-key-file)
+     (with-temporary-git-repository
+       directory
+       `((add ".guix-channel"
+              ,(object->string
+                 '(channel
+                    (version 0)
+                    (keyring-reference "channel-keyring"))))
+         (add ".guix-authorizations"
+              ,(object->string
+                 `(authorizations
+                    (version 0)
+                    ((,(key-fingerprint %ed25519-public-key-file)
+                      (name "Charlie"))))))
+         (commit "zeroth commit")
+         (add "a.txt" "A")
+         (commit
+           "first commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file)))
+         (add "b.txt" "B")
+         (commit
+           "second commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file)))
+         (add "c.txt" "C")
+         (commit
+           "third commit"
+           (signer
+             ,(key-fingerprint %ed25519bis-public-key-file)))
+         (branch "channel-keyring")
+         (checkout "channel-keyring")
+         (add "signer.key"
+              ,(call-with-input-file
+                 %ed25519-public-key-file
+                 get-string-all))
+         (add "other.key"
+              ,(call-with-input-file
+                 %ed25519bis-public-key-file
+                 get-string-all))
+         (commit "keyring commit")
+         (checkout "master"))
+       (with-repository
+         directory
+         repository
+         (let* ((commit1 (find-commit repository "first"))
+                (commit2 (find-commit repository "second"))
+                (commit3 (find-commit repository "third"))
+                (intro ((@@ (guix channels) 
make-channel-introduction)
+                        (commit-id-string commit1)
+                        (openpgp-public-key-fingerprint
+                          (read-openpgp-packet 
%ed25519-public-key-file))
+                        #f))
+                (channel
+                  (channel
+                    (name 'example)
+                    (url (string-append "file://" directory))
+                    (introduction intro))))
+           (and (authenticate-channel
+                  channel
+                  directory
+                  (commit-id-string commit2)
+                  #:keyring-reference-prefix
+                  "")
+                (guard (c ((unauthorized-commit-error? c)
+                           (and (oid=? 
(git-authentication-error-commit c)
+                                       (commit-id commit3))
+                                (bytevector=?
+                                  (openpgp-public-key-fingerprint
+ 
(unauthorized-commit-error-signing-key c))
+                                  (openpgp-public-key-fingerprint
+                                    (read-openpgp-packet
+ 
%ed25519bis-public-key-file))))))
+                       (authenticate-channel
+                         channel
+                         directory
+                         (commit-id-string commit3)
+                         #:keyring-reference-prefix
+                         "")
+                       'failed)))))))
result: SKIP

random seed for tests: 1592473061
Updating channel 'test' from Git repository at 'test'...
Updating channel 'test-channel' from Git repository at 
'https://example.com/test-channel'...
Updating channel 'test' from Git repository at 'test'...
Updating channel 'test-channel' from Git repository at 
'https://example.com/test-channel'...
Updating channel 'test-channel' from Git repository at 
'https://example.com/test-channel'...
Updating channel 'foo' from Git repository at 
'file:///tmp/guix-directory.1cbxjG'...

SKIP: tests/cpio
================

test-name: file->cpio-header + write-cpio-header + 
read-cpio-header
location: /home/simendsjo/code/guix/tests/cpio.scm:37
source:
+ (test-assert
+   "file->cpio-header + write-cpio-header + read-cpio-header"
+   (let* ((file (search-path %load-path "guix.scm"))
+          (header (file->cpio-header file)))
+     (call-with-values
+       (lambda () (open-bytevector-output-port))
+       (lambda (port get-bv)
+         (write-cpio-header header port)
+         (let ((port (open-bytevector-input-port (get-bv))))
+           (equal? header (read-cpio-header port)))))))
actual-value: #t
result: PASS

test-name: bit-identical to GNU cpio's output
location: /home/simendsjo/code/guix/tests/cpio.scm:49
source:
+ (test-assert
+   "bit-identical to GNU cpio's output"
+   (call-with-temporary-output-file
+     (lambda (link _)
+       (delete-file link)
+       (symlink "chbouib" link)
+       (let ((files (cons* "/"
+                           (canonicalize-path
+                             (dirname (search-path %load-path 
"guix.scm")))
+                           link
+                           (map (compose
+                                  canonicalize-path
+                                  (cut search-path %load-path 
<>))
+                                '("guix.scm"
+                                  "guix/build/syscalls.scm"
+                                  "guix/packages.scm")))))
+         (call-with-temporary-output-file
+           (lambda (ref-file _)
+             (let ((pipe (open-pipe*
+                           OPEN_WRITE
+                           %cpio-program
+                           "-o"
+                           "-O"
+                           ref-file
+                           "-H"
+                           "newc"
+                           "--null")))
+               (for-each
+                 (lambda (file) (format pipe "~a\x00" file))
+                 files)
+               (and (zero? (close-pipe pipe))
+                    (call-with-temporary-output-file
+                      (lambda (file port)
+                        (write-cpio-archive files port)
+                        (close-port port)
+                        (or (file=? ref-file file)
+                            (throw 'cpio-archives-differ
+                                   files
+                                   ref-file
+                                   file
+                                   (stat:size (stat ref-file))
+                                   (stat:size (stat 
file))))))))))))))
result: SKIP

random seed for tests: 1592472741

FAIL: tests/git-authenticate
============================

test-name: unsigned commits
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:43
source:
+ (test-assert
+   "unsigned commits"
+   (with-temporary-git-repository
+     directory
+     '((add "a.txt" "A")
+       (commit "first commit")
+       (add "b.txt" "B")
+       (commit "second commit"))
+     (with-repository
+       directory
+       repository
+       (let ((commit1 (find-commit repository "first"))
+             (commit2 (find-commit repository "second")))
+         (guard (c ((unsigned-commit-error? c)
+                    (oid=? (git-authentication-error-commit c)
+                           (commit-id commit1))))
+                (authenticate-commits
+                  repository
+                  (list commit1 commit2)
+                  #:keyring-reference
+                  "master")
+                'failed)))))
Initialized empty Git repository in 
/tmp/guix-directory.0jlixe/.git/
[master (root-commit) 428f973] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt
[master becf258] second commit
 1 file changed, 1 insertion(+)
 create mode 100644 b.txt
actual-value: #t
result: PASS

test-name: signed commits, SHA1 signature
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:60
source:
+ (test-assert
+   "signed commits, SHA1 signature"
+   (with-fresh-gnupg-setup
+     (list %ed25519-public-key-file
+           %ed25519-secret-key-file)
+     (call-with-output-file
+       (string-append (getenv "GNUPGHOME") "/gpg.conf")
+       (lambda (port) (display "digest-algo sha1" port)))
+     (with-temporary-git-repository
+       directory
+       `((add "a.txt" "A")
+         (add "signer.key"
+              ,(call-with-input-file
+                 %ed25519-public-key-file
+                 get-string-all))
+         (add ".guix-authorizations"
+              ,(object->string
+                 `(authorizations
+                    (version 0)
+                    ((,(key-fingerprint %ed25519-public-key-file)
+                      (name "Charlie"))))))
+         (commit
+           "first commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file))))
+       (with-repository
+         directory
+         repository
+         (let ((commit (find-commit repository "first")))
+           (guard (c ((unsigned-commit-error? c)
+                      (oid=? (git-authentication-error-commit c)
+                             (commit-id commit))))
+                  (authenticate-commits
+                    repository
+                    (list commit)
+                    #:keyring-reference
+                    "master")
+                  'failed))))))
actual-value: #f
actual-error:
+ (%exception
+   #<&invoke-error program: "gpg" arguments: ("--import" 
"/home/simendsjo/code/guix/tests/ed25519.key") exit-status: 127 
term-signal: #f stop-signal: #f>)
result: FAIL

test-name: signed commits, default authorizations
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:89
source:
+ (test-assert
+   "signed commits, default authorizations"
+   (with-fresh-gnupg-setup
+     (list %ed25519-public-key-file
+           %ed25519-secret-key-file)
+     (with-temporary-git-repository
+       directory
+       `((add "signer.key"
+              ,(call-with-input-file
+                 %ed25519-public-key-file
+                 get-string-all))
+         (commit "zeroth commit")
+         (add "a.txt" "A")
+         (commit
+           "first commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file)))
+         (add "b.txt" "B")
+         (commit
+           "second commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file))))
+       (with-repository
+         directory
+         repository
+         (let ((commit1 (find-commit repository "first"))
+               (commit2 (find-commit repository "second")))
+           (authenticate-commits
+             repository
+             (list commit1 commit2)
+             #:default-authorizations
+             (list (openpgp-public-key-fingerprint
+                     (read-openpgp-packet 
%ed25519-public-key-file)))
+             #:keyring-reference
+             "master"))))))
result: SKIP

test-name: signed commits, .guix-authorizations
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:113
source:
+ (test-assert
+   "signed commits, .guix-authorizations"
+   (with-fresh-gnupg-setup
+     (list %ed25519-public-key-file
+           %ed25519-secret-key-file)
+     (with-temporary-git-repository
+       directory
+       `((add "signer.key"
+              ,(call-with-input-file
+                 %ed25519-public-key-file
+                 get-string-all))
+         (add ".guix-authorizations"
+              ,(object->string
+                 `(authorizations
+                    (version 0)
+                    ((,(key-fingerprint %ed25519-public-key-file)
+                      (name "Charlie"))))))
+         (commit "zeroth commit")
+         (add "a.txt" "A")
+         (commit
+           "first commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file)))
+         (add ".guix-authorizations"
+              ,(object->string `(authorizations (version 0) ())))
+         (commit
+           "second commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file)))
+         (add "b.txt" "B")
+         (commit
+           "third commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file))))
+       (with-repository
+         directory
+         repository
+         (let ((commit1 (find-commit repository "first"))
+               (commit2 (find-commit repository "second"))
+               (commit3 (find-commit repository "third")))
+           (and (authenticate-commits
+                  repository
+                  (list commit1 commit2)
+                  #:keyring-reference
+                  "master")
+                (guard (c ((unauthorized-commit-error? c)
+                           (and (oid=? 
(git-authentication-error-commit c)
+                                       (commit-id commit3))
+                                (bytevector=?
+                                  (openpgp-public-key-fingerprint
+ 
(unauthorized-commit-error-signing-key c))
+                                  (openpgp-public-key-fingerprint
+                                    (read-openpgp-packet
+ 
%ed25519-public-key-file))))))
+                       (authenticate-commits
+                         repository
+                         (list commit1 commit2 commit3)
+                         #:keyring-reference
+                         "master")
+                       'failed)))))))
result: SKIP

test-name: signed commits, .guix-authorizations, unauthorized 
merge
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:161
source:
+ (test-assert
+   "signed commits, .guix-authorizations, unauthorized merge"
+   (with-fresh-gnupg-setup
+     (list %ed25519-public-key-file
+           %ed25519-secret-key-file
+           %ed25519bis-public-key-file
+           %ed25519bis-secret-key-file)
+     (with-temporary-git-repository
+       directory
+       `((add "signer1.key"
+              ,(call-with-input-file
+                 %ed25519-public-key-file
+                 get-string-all))
+         (add "signer2.key"
+              ,(call-with-input-file
+                 %ed25519bis-public-key-file
+                 get-string-all))
+         (add ".guix-authorizations"
+              ,(object->string
+                 `(authorizations
+                    (version 0)
+                    ((,(key-fingerprint %ed25519-public-key-file)
+                      (name "Alice"))))))
+         (commit "zeroth commit")
+         (add "a.txt" "A")
+         (commit
+           "first commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file)))
+         (branch "devel")
+         (checkout "devel")
+         (add "devel/1.txt" "1")
+         (commit
+           "first devel commit"
+           (signer
+             ,(key-fingerprint %ed25519bis-public-key-file)))
+         (checkout "master")
+         (add "b.txt" "B")
+         (commit
+           "second commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file)))
+         (merge "devel"
+                "merge"
+                (signer
+                  ,(key-fingerprint %ed25519-public-key-file))))
+       (with-repository
+         directory
+         repository
+         (let ((master1 (find-commit repository "first commit"))
+               (master2
+                 (find-commit repository "second commit"))
+               (devel1
+                 (find-commit repository "first devel commit"))
+               (merge (find-commit repository "merge")))
+           (define (correct? c commit)
+             (and (oid=? (git-authentication-error-commit c)
+                         (commit-id commit))
+                  (bytevector=?
+                    (openpgp-public-key-fingerprint
+                      (unauthorized-commit-error-signing-key c))
+                    (openpgp-public-key-fingerprint
+                      (read-openpgp-packet 
%ed25519bis-public-key-file)))))
+           (and (authenticate-commits
+                  repository
+                  (list master1 master2)
+                  #:keyring-reference
+                  "master")
+                (guard (c ((unauthorized-commit-error? c)
+                           (correct? c devel1)))
+                       (authenticate-commits
+                         repository
+                         (list master1 devel1)
+                         #:keyring-reference
+                         "master")
+                       #f)
+                (guard (c ((unauthorized-commit-error? c)
+                           (correct? c devel1)))
+                       (authenticate-commits
+                         repository
+                         (list master1 master2 devel1 merge)
+                         #:keyring-reference
+                         "master")
+                       #f)))))))
result: SKIP

test-name: signed commits, .guix-authorizations, authorized merge
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:230
source:
+ (test-assert
+   "signed commits, .guix-authorizations, authorized merge"
+   (with-fresh-gnupg-setup
+     (list %ed25519-public-key-file
+           %ed25519-secret-key-file
+           %ed25519bis-public-key-file
+           %ed25519bis-secret-key-file)
+     (with-temporary-git-repository
+       directory
+       `((add "signer1.key"
+              ,(call-with-input-file
+                 %ed25519-public-key-file
+                 get-string-all))
+         (add "signer2.key"
+              ,(call-with-input-file
+                 %ed25519bis-public-key-file
+                 get-string-all))
+         (add ".guix-authorizations"
+              ,(object->string
+                 `(authorizations
+                    (version 0)
+                    ((,(key-fingerprint %ed25519-public-key-file)
+                      (name "Alice"))))))
+         (commit "zeroth commit")
+         (add "a.txt" "A")
+         (commit
+           "first commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file)))
+         (branch "devel")
+         (checkout "devel")
+         (add ".guix-authorizations"
+              ,(object->string
+                 `(authorizations
+                    (version 0)
+                    ((,(key-fingerprint %ed25519-public-key-file)
+                      (name "Alice"))
+                     (,(key-fingerprint 
%ed25519bis-public-key-file))))))
+         (commit
+           "first devel commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file)))
+         (add "devel/2.txt" "2")
+         (commit
+           "second devel commit"
+           (signer
+             ,(key-fingerprint %ed25519bis-public-key-file)))
+         (checkout "master")
+         (add "b.txt" "B")
+         (commit
+           "second commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file)))
+         (merge "devel"
+                "merge"
+                (signer
+                  ,(key-fingerprint %ed25519-public-key-file)))
+         (add "c.txt" "C")
+         (commit
+           "third commit"
+           (signer
+             ,(key-fingerprint %ed25519bis-public-key-file))))
+       (with-repository
+         directory
+         repository
+         (let ((master1 (find-commit repository "first commit"))
+               (master2
+                 (find-commit repository "second commit"))
+               (devel1
+                 (find-commit repository "first devel commit"))
+               (devel2
+                 (find-commit repository "second devel commit"))
+               (merge (find-commit repository "merge"))
+               (master3 (find-commit repository "third commit")))
+           (authenticate-commits
+             repository
+             (list master1
+                   master2
+                   devel1
+                   devel2
+                   merge
+                   master3)
+             #:keyring-reference
+             "master"))))))
result: SKIP

test-name: signed commits, .guix-authorizations removed
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:290
source:
+ (test-assert
+   "signed commits, .guix-authorizations removed"
+   (with-fresh-gnupg-setup
+     (list %ed25519-public-key-file
+           %ed25519-secret-key-file)
+     (with-temporary-git-repository
+       directory
+       `((add "signer.key"
+              ,(call-with-input-file
+                 %ed25519-public-key-file
+                 get-string-all))
+         (add ".guix-authorizations"
+              ,(object->string
+                 `(authorizations
+                    (version 0)
+                    ((,(key-fingerprint %ed25519-public-key-file)
+                      (name "Charlie"))))))
+         (commit "zeroth commit")
+         (add "a.txt" "A")
+         (commit
+           "first commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file)))
+         (remove ".guix-authorizations")
+         (commit
+           "second commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file)))
+         (add "b.txt" "B")
+         (commit
+           "third commit"
+           (signer
+             ,(key-fingerprint %ed25519-public-key-file))))
+       (with-repository
+         directory
+         repository
+         (let ((commit1 (find-commit repository "first"))
+               (commit2 (find-commit repository "second"))
+               (commit3 (find-commit repository "third")))
+           (and (authenticate-commits
+                  repository
+                  (list commit1 commit2)
+                  #:keyring-reference
+                  "master")
+                (guard (c ((unauthorized-commit-error? c)
+                           (oid=? 
(git-authentication-error-commit c)
+                                  (commit-id commit2))))
+                       (authenticate-commits
+                         repository
+                         (list commit1 commit2 commit3)
+                         #:keyring-reference
+                         "master")
+                       'failed)))))))
result: SKIP


SKIP: tests/hackage
===================

test-name: hackage->guix-package test 1
location: /home/simendsjo/code/guix/tests/hackage.scm:192
source:
+ (test-assert
+   "hackage->guix-package test 1"
+   (eval-test-with-cabal test-cabal-1 match-ghc-foo))
random seed for tests: 1592470873

Starting download of /tmp/guix-file.JcfCfm
From https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 
"Not Found"
failed to download "/tmp/guix-file.JcfCfm" from 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
actual-value: #t
result: PASS

test-name: hackage->guix-package test 2
location: /home/simendsjo/code/guix/tests/hackage.scm:195
source:
+ (test-assert
+   "hackage->guix-package test 2"
+   (eval-test-with-cabal test-cabal-2 match-ghc-foo))

Starting download of /tmp/guix-file.LlgVnn
From https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 
"Not Found"
failed to download "/tmp/guix-file.LlgVnn" from 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
actual-value: #t
result: PASS

test-name: hackage->guix-package test 3
location: /home/simendsjo/code/guix/tests/hackage.scm:198
source:
+ (test-assert
+   "hackage->guix-package test 3"
+   (eval-test-with-cabal
+     test-cabal-3
+     match-ghc-foo
+     #:cabal-environment
+     '(("impl" . "ghc-7.8"))))

Starting download of /tmp/guix-file.Hw5E9m
From https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 
"Not Found"
failed to download "/tmp/guix-file.Hw5E9m" from 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
actual-value: #t
result: PASS

test-name: hackage->guix-package test 4
location: /home/simendsjo/code/guix/tests/hackage.scm:202
source:
+ (test-assert
+   "hackage->guix-package test 4"
+   (eval-test-with-cabal
+     test-cabal-4
+     match-ghc-foo
+     #:cabal-environment
+     '(("impl" . "ghc-7.8"))))

Starting download of /tmp/guix-file.1IZmYi
From https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 
"Not Found"
failed to download "/tmp/guix-file.1IZmYi" from 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
actual-value: #t
result: PASS

test-name: hackage->guix-package test 5
location: /home/simendsjo/code/guix/tests/hackage.scm:206
source:
+ (test-assert
+   "hackage->guix-package test 5"
+   (eval-test-with-cabal
+     test-cabal-5
+     match-ghc-foo
+     #:cabal-environment
+     '(("impl" . "ghc-7.8"))))

Starting download of /tmp/guix-file.gWJGfl
From https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 
"Not Found"
failed to download "/tmp/guix-file.gWJGfl" from 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
actual-value: #t
result: PASS

test-name: hackage->guix-package test 6
location: /home/simendsjo/code/guix/tests/hackage.scm:237
source:
+ (test-assert
+   "hackage->guix-package test 6"
+   (eval-test-with-cabal
+     test-cabal-6
+     match-ghc-foo-6))

Starting download of /tmp/guix-file.oN5nfm
From https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 
"Not Found"
failed to download "/tmp/guix-file.oN5nfm" from 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
actual-value: #t
result: PASS

test-name: hackage->guix-package test multiline desc (layout)
location: /home/simendsjo/code/guix/tests/hackage.scm:255
source:
+ (test-assert
+   "hackage->guix-package test multiline desc (layout)"
+   (eval-test-with-cabal
+     test-cabal-multiline-layout
+     match-ghc-foo))

Starting download of /tmp/guix-file.FlyLHm
From https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 
"Not Found"
failed to download "/tmp/guix-file.FlyLHm" from 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
actual-value: #t
result: PASS

test-name: hackage->guix-package test multiline desc (braced)
location: /home/simendsjo/code/guix/tests/hackage.scm:275
source:
+ (test-assert
+   "hackage->guix-package test multiline desc (braced)"
+   (eval-test-with-cabal
+     test-cabal-multiline-braced
+     match-ghc-foo))

Starting download of /tmp/guix-file.eZNfVk
From https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 
"Not Found"
failed to download "/tmp/guix-file.eZNfVk" from 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
actual-value: #t
result: PASS

test-name: hackage->guix-package test mixed layout
location: /home/simendsjo/code/guix/tests/hackage.scm:295
source:
+ (test-assert
+   "hackage->guix-package test mixed layout"
+   (eval-test-with-cabal
+     test-cabal-mixed-layout
+     match-ghc-foo))
Syntax error: unexpected token : (ghc-options (-Wall)) (at line 
11, column 2)
Syntax error: unexpected end of input

;;; (fail #f #f)
actual-value: #f
result: XFAIL

test-name: hackage->guix-package test flag executable
location: /home/simendsjo/code/guix/tests/hackage.scm:322
source:
+ (test-assert
+   "hackage->guix-package test flag executable"
+   (eval-test-with-cabal
+     test-cabal-flag-executable
+     match-ghc-foo))
Syntax error: unexpected token : (buildable (False)) (at line 12, 
column 4)
Syntax error: unexpected end of input

;;; (fail #f #f)
actual-value: #f
result: XFAIL

test-name: hackage->guix-package test cabal revision
location: /home/simendsjo/code/guix/tests/hackage.scm:367
source:
+ (test-assert
+   "hackage->guix-package test cabal revision"
+   (eval-test-with-cabal
+     test-cabal-revision
+     match-ghc-foo-revision))

Starting download of /tmp/guix-file.atRdrj
From https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 
"Not Found"
failed to download "/tmp/guix-file.atRdrj" from 
"https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
actual-value: #t
result: PASS

test-name: read-cabal test 1
location: /home/simendsjo/code/guix/tests/hackage.scm:370
source:
+ (test-assert
+   "read-cabal test 1"
+   (match (call-with-input-string
+            test-read-cabal-1
+            read-cabal)
+          ((("name" ("test-me"))
+            ('section
+             'library
+             (('if
+               ('flag "base4point8")
+               (("build-depends" ("base >= 4.8 && < 5")))
+               (('if
+                 ('flag "base4")
+                 (("build-depends" ("base >= 4 && < 4.8")))
+                 (('if
+                   ('flag "base3")
+                   (("build-depends" ("base >= 3 && < 4")))
+                   (("build-depends" ("base < 3"))))))))
+              ('if
+               ('or
+                ('flag "base4point8")
+                ('and ('flag "base4") ('flag "base3")))
+               (("build-depends" ("random")))
+               ())
+              ("build-depends" ("containers"))
+              ("exposed-modules" 
("Test.QuickCheck.Exception")))))
+           #t)
+          (x (pk 'fail x #f))))
actual-value: #t
result: PASS


SKIP: tests/pypi
================

test-name: guix-package->pypi-name, old URL style
location: /home/simendsjo/code/guix/tests/pypi.scm:126
source:
+ (test-equal
+   "guix-package->pypi-name, old URL style"
+   "psutil"
+   (guix-package->pypi-name
+     (dummy-package
+       "foo"
+       (source
+         (dummy-origin
+           (uri 
"https://pypi.org/packages/source/p/psutil/psutil-4.3.0.tar.gz"))))))
expected-value: "psutil"
actual-value: "psutil"
result: PASS

test-name: guix-package->pypi-name, new URL style
location: /home/simendsjo/code/guix/tests/pypi.scm:134
source:
+ (test-equal
+   "guix-package->pypi-name, new URL style"
+   "certbot"
+   (guix-package->pypi-name
+     (dummy-package
+       "foo"
+       (source
+         (dummy-origin
+           (uri 
"https://pypi.org/packages/a2/3b/4756e6a0ceb14e084042a2a65c615d68d25621c6fd446d0fc10d14c4ce7d/certbot-0.8.1.tar.gz"))))))
expected-value: "certbot"
actual-value: "certbot"
result: PASS

test-name: guix-package->pypi-name, several URLs
location: /home/simendsjo/code/guix/tests/pypi.scm:142
source:
+ (test-equal
+   "guix-package->pypi-name, several URLs"
+   "cram"
+   (guix-package->pypi-name
+     (dummy-package
+       "foo"
+       (source
+         (dummy-origin
+           (uri (list "https://bitheap.org/cram/cram-0.7.tar.gz"
+                      (pypi-uri "cram" "0.7"))))))))
expected-value: "cram"
actual-value: "cram"
result: PASS

test-name: specification->requirement-name
location: /home/simendsjo/code/guix/tests/pypi.scm:151
source:
+ (test-equal
+   "specification->requirement-name"
+   '("Fizzy"
+     "PickyThing"
+     "SomethingWithMarker"
+     "requests"
+     "pip")
+   (map specification->requirement-name
+        test-specifications))
expected-value: ("Fizzy" "PickyThing" "SomethingWithMarker" 
"requests" "pip")
actual-value: ("Fizzy" "PickyThing" "SomethingWithMarker" 
"requests" "pip")
result: PASS

test-name: parse-requires.txt
location: /home/simendsjo/code/guix/tests/pypi.scm:155
source:
+ (test-equal
+   "parse-requires.txt"
+   (list '("foo" "bar") '("pytest"))
+   (mock ((ice-9 ports)
+          call-with-input-file
+          call-with-input-string)
+         (parse-requires.txt test-requires.txt)))
expected-value: (("foo" "bar") ("pytest"))
actual-value: (("foo" "bar") ("pytest"))
result: PASS

test-name: parse-requires.txt - Beaker
location: /home/simendsjo/code/guix/tests/pypi.scm:161
source:
+ (test-equal
+   "parse-requires.txt - Beaker"
+   (list '() '("Mock" "coverage"))
+   (mock ((ice-9 ports)
+          call-with-input-file
+          call-with-input-string)
+         (parse-requires.txt test-requires.txt-beaker)))
expected-value: (() ("Mock" "coverage"))
actual-value: (() ("Mock" "coverage"))
result: PASS

test-name: parse-wheel-metadata, with extras
location: /home/simendsjo/code/guix/tests/pypi.scm:167
source:
+ (test-equal
+   "parse-wheel-metadata, with extras"
+   (list '("wrapt" "bar") '("tox" "bumpversion"))
+   (mock ((ice-9 ports)
+          call-with-input-file
+          call-with-input-string)
+         (parse-wheel-metadata test-metadata-with-extras)))
expected-value: (("wrapt" "bar") ("tox" "bumpversion"))
actual-value: (("wrapt" "bar") ("tox" "bumpversion"))
result: PASS

test-name: parse-wheel-metadata, with extras - Jedi
location: /home/simendsjo/code/guix/tests/pypi.scm:173
source:
+ (test-equal
+   "parse-wheel-metadata, with extras - Jedi"
+   (list '("parso") '("pytest"))
+   (mock ((ice-9 ports)
+          call-with-input-file
+          call-with-input-string)
+         (parse-wheel-metadata
+           test-metadata-with-extras-jedi)))
expected-value: (("parso") ("pytest"))
actual-value: (("parso") ("pytest"))
result: PASS

test-name: pypi->guix-package, no wheel
location: /home/simendsjo/code/guix/tests/pypi.scm:179
source:
+ (test-assert
+   "pypi->guix-package, no wheel"
+   (mock ((guix import utils)
+          url-fetch
+          (lambda (url file-name)
+            (match url
+                   ("https://example.com/foo-1.0.0.tar.gz"
+                    (begin
+                      (mkdir-p "foo-1.0.0/src/bizarre.egg-info")
+                      (with-output-to-file
+ 
"foo-1.0.0/src/bizarre.egg-info/requires.txt"
+                        (lambda () (display test-requires.txt)))
+                      (parameterize
+                        ((current-output-port (%make-void-port 
"rw+")))
+                        (system* "tar" "czvf" file-name 
"foo-1.0.0/"))
+                      (delete-file-recursively "foo-1.0.0")
+                      (set! test-source-hash
+                        (call-with-input-file file-name 
port-sha256))))
+ 
("https://example.com/foo-1.0.0-py2.py3-none-any.whl"
+                    #f)
+                   (_ (error "Unexpected URL: " url)))))
+         (mock ((guix http-client)
+                http-fetch
+                (lambda (url . rest)
+                  (match url
+                         ("https://pypi.org/pypi/foo/json"
+                          (values
+                            (open-input-string test-json)
+                            (string-length test-json)))
+ 
("https://example.com/foo-1.0.0-py2.py3-none-any.whl"
+                          #f)
+                         (_ (error "Unexpected URL: " url)))))
+               (match (pypi->guix-package "foo")
+                      (('package
+                        ('name "python-foo")
+                        ('version "1.0.0")
+                        ('source
+                         ('origin
+                          ('method 'url-fetch)
+                          ('uri ('pypi-uri "foo" 'version))
+                          ('sha256 ('base32 (? string? hash)))))
+                        ('build-system 'python-build-system)
+                        ('propagated-inputs
+                         ('quasiquote
+                          (("python-bar" ('unquote 'python-bar))
+                           ("python-foo" ('unquote 
'python-foo)))))
+                        ('native-inputs
+                         ('quasiquote
+                          (("python-pytest" ('unquote 
'python-pytest)))))
+                        ('home-page "http://example.com")
+                        ('synopsis "summary")
+                        ('description "summary")
+                        ('license 'license:lgpl2.0))
+                       (string=?
+                         (bytevector->nix-base32-string 
test-source-hash)
+                         hash))
+                      (x (pk 'fail x #f))))))
actual-value: #t
result: PASS

test-name: pypi->guix-package, wheels
location: /home/simendsjo/code/guix/tests/pypi.scm:235
source:
+ (test-assert
+   "pypi->guix-package, wheels"
+   (mock ((guix import utils)
+          url-fetch
+          (lambda (url file-name)
+            (match url
+                   ("https://example.com/foo-1.0.0.tar.gz"
+                    (begin
+                      (mkdir-p "foo-1.0.0/foo.egg-info/")
+                      (with-output-to-file
+                        "foo-1.0.0/foo.egg-info/requires.txt"
+                        (lambda ()
+                          (display
+                            "wrong data to make sure we're 
testing wheels ")))
+                      (parameterize
+                        ((current-output-port (%make-void-port 
"rw+")))
+                        (system* "tar" "czvf" file-name 
"foo-1.0.0/"))
+                      (delete-file-recursively "foo-1.0.0")
+                      (set! test-source-hash
+                        (call-with-input-file file-name 
port-sha256))))
+ 
("https://example.com/foo-1.0.0-py2.py3-none-any.whl"
+                    (begin
+                      (mkdir "foo-1.0.0.dist-info")
+                      (with-output-to-file
+                        "foo-1.0.0.dist-info/METADATA"
+                        (lambda () (display test-metadata)))
+                      (let ((zip-file (string-append file-name 
".zip")))
+                        (system*
+                          "zip"
+                          "-q"
+                          zip-file
+                          "foo-1.0.0.dist-info/METADATA")
+                        (rename-file zip-file file-name))
+                      (delete-file-recursively 
"foo-1.0.0.dist-info")))
+                   (_ (error "Unexpected URL: " url)))))
+         (mock ((guix http-client)
+                http-fetch
+                (lambda (url . rest)
+                  (match url
+                         ("https://pypi.org/pypi/foo/json"
+                          (values
+                            (open-input-string test-json)
+                            (string-length test-json)))
+ 
("https://example.com/foo-1.0.0-py2.py3-none-any.whl"
+                          #f)
+                         (_ (error "Unexpected URL: " url)))))
+               (invalidate-memoization! pypi->guix-package)
+               (match (pypi->guix-package "foo")
+                      (('package
+                        ('name "python-foo")
+                        ('version "1.0.0")
+                        ('source
+                         ('origin
+                          ('method 'url-fetch)
+                          ('uri ('pypi-uri "foo" 'version))
+                          ('sha256 ('base32 (? string? hash)))))
+                        ('build-system 'python-build-system)
+                        ('propagated-inputs
+                         ('quasiquote
+                          (("python-bar" ('unquote 'python-bar))
+                           ("python-baz" ('unquote 
'python-baz)))))
+                        ('native-inputs
+                         ('quasiquote
+                          (("python-pytest" ('unquote 
'python-pytest)))))
+                        ('home-page "http://example.com")
+                        ('synopsis "summary")
+                        ('description "summary")
+                        ('license 'license:lgpl2.0))
+                       (string=?
+                         (bytevector->nix-base32-string 
test-source-hash)
+                         hash))
+                      (x (pk 'fail x #f))))))
result: SKIP

test-name: pypi->guix-package, no usable requirement file.
location: /home/simendsjo/code/guix/tests/pypi.scm:303
source:
+ (test-assert
+   "pypi->guix-package, no usable requirement file."
+   (mock ((guix import utils)
+          url-fetch
+          (lambda (url file-name)
+            (match url
+                   ("https://example.com/foo-1.0.0.tar.gz"
+                    (mkdir-p "foo-1.0.0/foo.egg-info/")
+                    (parameterize
+                      ((current-output-port (%make-void-port 
"rw+")))
+                      (system* "tar" "czvf" file-name 
"foo-1.0.0/"))
+                    (delete-file-recursively "foo-1.0.0")
+                    (set! test-source-hash
+                      (call-with-input-file file-name 
port-sha256)))
+ 
("https://example.com/foo-1.0.0-py2.py3-none-any.whl"
+                    #f)
+                   (_ (error "Unexpected URL: " url)))))
+         (mock ((guix http-client)
+                http-fetch
+                (lambda (url . rest)
+                  (match url
+                         ("https://pypi.org/pypi/foo/json"
+                          (values
+                            (open-input-string test-json)
+                            (string-length test-json)))
+ 
("https://example.com/foo-1.0.0-py2.py3-none-any.whl"
+                          #f)
+                         (_ (error "Unexpected URL: " url)))))
+               (invalidate-memoization! pypi->guix-package)
+               (match (pypi->guix-package "foo")
+                      (('package
+                        ('name "python-foo")
+                        ('version "1.0.0")
+                        ('source
+                         ('origin
+                          ('method 'url-fetch)
+                          ('uri ('pypi-uri "foo" 'version))
+                          ('sha256 ('base32 (? string? hash)))))
+                        ('build-system 'python-build-system)
+                        ('home-page "http://example.com")
+                        ('synopsis "summary")
+                        ('description "summary")
+                        ('license 'license:lgpl2.0))
+                       (string=?
+                         (bytevector->nix-base32-string 
test-source-hash)
+                         hash))
+                      (x (pk 'fail x #f))))))
actual-value: #t
result: PASS

random seed for tests: 1592465056
warning: Cannot guess requirements from source archive: no 
requires.txt file found.

SKIP: tests/snix
================

test-name: factorize-uri
location: /home/simendsjo/code/guix/tests/snix.scm:36
source:
+ (test-assert
+   "factorize-uri"
+   (every?
+     (match-lambda
+       ((uri version '-> expected)
+        (equal? (factorize-uri uri version) expected)))
+     '(("http://example.com/foo.tgz"
+        "1.0"
+        ->
+        "http://example.com/foo.tgz")
+       ("http://example.com/foo-2.8.tgz"
+        "2.8"
+        ->
+        ("http://example.com/foo-" version ".tgz"))
+       ("http://example.com/2.8/foo-2.8.tgz"
+        "2.8"
+        ->
+        ("http://example.com/"
+         version
+         "/foo-"
+         version
+         ".tgz")))))
actual-value: #t
result: PASS

test-name: nixpkgs->guix-package
location: /home/simendsjo/code/guix/tests/snix.scm:54
source:
+ (test-assert
+   "nixpkgs->guix-package"
+   (match (nixpkgs->guix-package
+            %nixpkgs-directory
+            "guile")
+          (('package
+            ('name "guile")
+            ('version (? string?))
+            ('source ('origin _ ...))
+            ('build-system _)
+            ('inputs ('quasiquote (inputs ...)))
+            ('propagated-inputs ('quasiquote (pinputs ...)))
+            ('home-page (? string?))
+            ('synopsis (? string?))
+            ('description (? string?))
+            ('license (? symbol?)))
+           (and (member '("libffi" ,libffi) inputs)
+                (member '("gmp" ,gmp) pinputs)
+                #t))
+          (x (pk 'fail x #f))))
result: SKIP


SKIP: tests/upstream
====================

test-name: coalesce-sources same version
location: /home/simendsjo/code/guix/tests/upstream.scm:30
source:
+ (test-equal
+   "coalesce-sources same version"
+   (list (upstream-source
+           (package "foo")
+           (version "1")
+           (urls '("ftp://example.org/foo-1.tar.xz"
+                   "ftp://example.org/foo-1.tar.gz"))
+           (signature-urls
+             '("ftp://example.org/foo-1.tar.xz.sig"
+               "ftp://example.org/foo-1.tar.gz.sig"))))
+   (coalesce-sources
+     (list (upstream-source
+             (package "foo")
+             (version "1")
+             (urls '("ftp://example.org/foo-1.tar.gz"))
+             (signature-urls
+               '("ftp://example.org/foo-1.tar.gz.sig")))
+           (upstream-source
+             (package "foo")
+             (version "1")
+             (urls '("ftp://example.org/foo-1.tar.xz"))
+             (signature-urls
+               '("ftp://example.org/foo-1.tar.xz.sig"))))))
result: SKIP

random seed for tests: 1592461337

SKIP: tests/guix-environment-container
======================================

+ set -e
+ guix environment --version
guix environment (GNU Guix) 1.0.1.18382-e418c
Copyright (C) 2020 the Guix authors
License GPLv3+: GNU GPL version 3 or later 
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
+ guile -c '((@@ (guix scripts environment) 
assert-container-features))'
Backtrace:
In ice-9/boot-9.scm:
  1736:10  8 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
           7 (apply-smob/0 #<thunk 7f8770fa0180>)
In ice-9/boot-9.scm:
    718:2  6 (call-with-prompt _ _ #<procedure 
    default-prompt-handle?>)
In ice-9/eval.scm:
    619:8  5 (_ #(#(#<directory (guile-user) 7f8770c1ef00>)))
In ice-9/command-line.scm:
   185:18  4 (_ #<input: string 7f8770c18a10>)
In unknown file:
           3 (eval ((@@ (guix scripts environment) #)) #<directory 
           (?>)
In ice-9/eval.scm:
   182:19  2 (proc #f)
   142:16  1 (compile-top-call #f (5 (guix scripts environment) . 
   #) #)
In unknown file:
           0 (%resolve-variable (5 (guix scripts environment) # . 
           #f) ?)

ERROR: In procedure %resolve-variable:
error: assert-container-features: unbound variable
+ exit 77
SKIP tests/guix-environment-container.sh (exit status: 77)

FAIL: tests/guix-repl
=====================

+ guix repl --version
guix repl (GNU Guix) 1.0.1.18382-e418c
Copyright (C) 2020 the Guix authors
License GPLv3+: GNU GPL version 3 or later 
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
++ mktemp -d
+ test_directory=/tmp/tmp.1dOO9LbJgB
+ export test_directory
+ trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' 
EXIT
+ tmpfile=/tmp/tmp.1dOO9LbJgB/foo.scm
+ rm -f /tmp/tmp.1dOO9LbJgB/foo.scm
+ trap 'rm -f "$tmpfile"' EXIT
+ module_dir=t-guix-repl-20146
+ mkdir t-guix-repl-20146
+ trap 'rm -rf "$module_dir"' EXIT
+ cat
++ guix repl /tmp/tmp.1dOO9LbJgB/foo.scm
+ test 'Consider installing the '\''guile-readline'\'' package for
convenient interactive line editing and input history.

Consider installing the '\''guile-colorized'\'' package
for a colorful Guile experience.

coreutils' = coreutils
+ rm -rf t-guix-repl-20146
FAIL tests/guix-repl.sh (exit status: 1)

--=-=-=
Content-Type: multipart/related; boundary="==-=-="

--==-=-=
Content-Type: text/html

<p>
I want to update and add some packages, but I&rsquo;m having trouble setting up the<br />
environment as I get some failing tests. I followed the Contributing manual<br />
found here: <a href="https://guix.gnu.org/manual/en/html_node/Building-from-Git.html">https://guix.gnu.org/manual/en/html_node/Building-from-Git.html</a><br />
</p>

<ul class="org-ul">
<li>git clone<br /></li>
<li>guix environment guix &#x2013;pure &#x2013;ad-hoc help2man git strace<br /></li>
<li>./bootstrap<br /></li>
<li>./configure &#x2013;localstatedir=/var<br /></li>
<li>make check<br /></li>
</ul>


<p>
<code>================================================</code><br />
   GNU Guix 1.0.1.18382-e418c: ./test-suite.log<br />
<code>================================================</code><br />
</p>

<p>
.. contents:: :depth: 2<br />
</p>

<p>
SKIP: tests/base32<br />
<code>================</code><br />
</p>

<p>
sh: nix-hash: command not found<br />
test-name: bytevector-&gt;base32-string<br />
location: /home/simendsjo/code/guix/tests/base32.scm:48<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;bytevector-&gt;base32-string&rdquo;<br /></li>
<li>(fold (lambda (bv expected result)<br /></li>
<li>(and result<br /></li>
<li>(string=?<br /></li>
<li>(bytevector-&gt;base32-string bv)<br /></li>
<li>expected)))<br /></li>
<li>#t<br /></li>
<li>(map string-&gt;utf8<br /></li>
<li>&rsquo;(&ldquo;&rdquo; &ldquo;f&rdquo; &ldquo;fo&rdquo; &ldquo;foo&rdquo; &ldquo;foob&rdquo; &ldquo;fooba&rdquo; &ldquo;foobar&rdquo;))<br /></li>
<li>&rsquo;(&ldquo;&rdquo;<br /></li>
<li>&ldquo;my&rdquo;<br /></li>
<li>&ldquo;mzxq&rdquo;<br /></li>
<li>&ldquo;mzxw6&rdquo;<br /></li>
<li>&ldquo;mzxw6yq&rdquo;<br /></li>
<li>&ldquo;mzxw6ytb&rdquo;<br /></li>
<li>&ldquo;mzxw6ytboi&rdquo;)))<br /></li>
</ul>
<p>
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: base32-string-&gt;bytevector<br />
location: /home/simendsjo/code/guix/tests/base32.scm:65<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;base32-string-&gt;bytevector&rdquo;<br /></li>
<li>(every (lambda (bv)<br /></li>
<li>(equal?<br /></li>
<li>(base32-string-&gt;bytevector<br /></li>
<li>(bytevector-&gt;base32-string bv))<br /></li>
<li>bv))<br /></li>
<li>(map string-&gt;utf8<br /></li>
<li>&rsquo;(&ldquo;&rdquo; &ldquo;f&rdquo; &ldquo;fo&rdquo; &ldquo;foo&rdquo; &ldquo;foob&rdquo; &ldquo;fooba&rdquo; &ldquo;foobar&rdquo;))))<br /></li>
</ul>
<p>
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: nix-base32-string-&gt;bytevector<br />
location: /home/simendsjo/code/guix/tests/base32.scm:73<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;nix-base32-string-&gt;bytevector&rdquo;<br /></li>
<li>(every (lambda (bv)<br /></li>
<li>(equal?<br /></li>
<li>(nix-base32-string-&gt;bytevector<br /></li>
<li>(bytevector-&gt;nix-base32-string bv))<br /></li>
<li>bv))<br /></li>
<li>(map string-&gt;utf8<br /></li>
<li>&rsquo;(&ldquo;&rdquo; &ldquo;f&rdquo; &ldquo;fo&rdquo; &ldquo;foo&rdquo; &ldquo;foob&rdquo; &ldquo;fooba&rdquo; &ldquo;foobar&rdquo;))))<br /></li>
</ul>
<p>
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: &amp;invalid-base32-character<br />
location: /home/simendsjo/code/guix/tests/base32.scm:81<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;&amp;invalid-base32-character&rdquo;<br /></li>
<li>#\e<br /></li>
<li>(guard (c ((invalid-base32-character? c)<br /></li>
<li>(invalid-base32-character-value c)))<br /></li>
<li>(nix-base32-string-&gt;bytevector<br /></li>
<li>(string-append (make-string 51 #\a) &ldquo;e&rdquo;))))<br /></li>
</ul>
<p>
expected-value: #\e<br />
actual-value: #\e<br />
result: PASS<br />
</p>

<p>
test-name: sha256 &amp; bytevector-&gt;nix-base32-string<br />
location: /home/simendsjo/code/guix/tests/base32.scm:92<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;sha256 &amp; bytevector-&gt;nix-base32-string&rdquo;<br /></li>
<li>(let ((file (search-path %load-path &ldquo;tests/test.drv&rdquo;)))<br /></li>
<li>(equal?<br /></li>
<li>(bytevector-&gt;nix-base32-string<br /></li>
<li>(sha256<br /></li>
<li>(call-with-input-file file get-bytevector-all)))<br /></li>
<li>(let* ((c (format<br /></li>
<li>#f<br /></li>
<li>&ldquo;~a &#x2013;type sha256 &#x2013;base32 &#x2013;flat \&rdquo;~a\&ldquo;&rdquo;<br /></li>
<li>%nix-hash<br /></li>
<li>file))<br /></li>
<li>(p (open-input-pipe c))<br /></li>
<li>(l (read-line p)))<br /></li>
<li>(close-pipe p)<br /></li>
<li>l))))<br /></li>
</ul>
<p>
result: SKIP<br />
</p>


<p>
FAIL: tests/channels<br />
<code>==================</code><br />
</p>

<p>
test-name: channel-instance-metadata returns default if .guix-channel does not exist<br />
location: /home/simendsjo/code/guix/tests/channels.scm:112<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;channel-instance-metadata returns default if .guix-channel does not exist&rdquo;<br /></li>
<li>&rsquo;(&ldquo;/&rdquo; ())<br /></li>
<li>(let ((metadata<br /></li>
<li>(channel-instance-metadata instance&#x2013;boring)))<br /></li>
<li>(list (channel-metadata-directory metadata)<br /></li>
<li>(channel-metadata-dependencies metadata))))<br /></li>
</ul>
<p>
expected-value: (&ldquo;<i>&ldquo; ())<br />
actual-value: (&rdquo;</i>&rdquo; ())<br />
result: PASS<br />
</p>

<p>
test-name: channel-instance-metadata and default dependencies<br />
location: /home/simendsjo/code/guix/tests/channels.scm:118<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;channel-instance-metadata and default dependencies&rdquo;<br /></li>
<li>&rsquo;()<br /></li>
<li>(channel-metadata-dependencies<br /></li>
<li>(channel-instance-metadata instance&#x2013;no-deps)))<br /></li>
</ul>
<p>
expected-value: ()<br />
actual-value: ()<br />
result: PASS<br />
</p>

<p>
test-name: channel-instance-metadata and directory<br />
location: /home/simendsjo/code/guix/tests/channels.scm:122<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;channel-instance-metadata and directory&rdquo;<br /></li>
<li>&ldquo;/modules&rdquo;<br /></li>
<li>(channel-metadata-directory<br /></li>
<li>(channel-instance-metadata<br /></li>
<li>instance&#x2013;sub-directory)))<br /></li>
</ul>
<p>
expected-value: &ldquo;/modules&rdquo;<br />
actual-value: &ldquo;/modules&rdquo;<br />
result: PASS<br />
</p>

<p>
test-name: channel-instance-metadata rejects unsupported version<br />
location: /home/simendsjo/code/guix/tests/channels.scm:127<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;channel-instance-metadata rejects unsupported version&rdquo;<br /></li>
<li>1<br /></li>
<li>(guard (c ((and (message-condition? c) (error-location? c))<br /></li>
<li>(location-line (error-location c))))<br /></li>
<li>(channel-instance-metadata<br /></li>
<li>instance&#x2013;unsupported-version)))<br /></li>
</ul>
<p>
expected-value: 1<br />
actual-value: 1<br />
result: PASS<br />
</p>

<p>
test-name: channel-instance-metadata returns &lt;channel-metadata&gt;<br />
location: /home/simendsjo/code/guix/tests/channels.scm:133<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;channel-instance-metadata returns &lt;channel-metadata&gt;&rdquo;<br /></li>
<li>(every (@@ (guix channels) channel-metadata?)<br /></li>
<li>(map channel-instance-metadata<br /></li>
<li>(list instance&#x2013;no-deps<br /></li>
<li>instance&#x2013;simple<br /></li>
<li>instance&#x2013;with-dupes))))<br /></li>
</ul>
<p>
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: channel-instance-metadata dependencies are channels<br />
location: /home/simendsjo/code/guix/tests/channels.scm:140<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;channel-instance-metadata dependencies are channels&rdquo;<br /></li>
<li>(let ((deps ((@@ (guix channels)<br /></li>
<li>channel-metadata-dependencies)<br /></li>
<li>(channel-instance-metadata instance&#x2013;simple))))<br /></li>
<li>(match deps (((? channel? dep)) #t) (_ #f))))<br /></li>
</ul>
<p>
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: latest-channel-instances includes channel dependencies<br />
location: /home/simendsjo/code/guix/tests/channels.scm:147<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;latest-channel-instances includes channel dependencies&rdquo;<br /></li>
<li>(let* ((channel (channel (name &rsquo;test) (url &ldquo;test&rdquo;)))<br /></li>
<li>(test-dir<br /></li>
<li>(channel-instance-checkout instance&#x2013;simple)))<br /></li>
<li>(mock ((guix git)<br /></li>
<li>update-cached-checkout<br /></li>
<li>(lambda* (url #:key ref starting-commit)<br /></li>
<li>(match url<br /></li>
<li>(&ldquo;test&rdquo; (values test-dir &ldquo;caf3cabba9e&rdquo; #f))<br /></li>
<li>(_ (values<br /></li>
<li>(channel-instance-checkout instance&#x2013;no-deps)<br /></li>
<li>&ldquo;abcde1234&rdquo;<br /></li>
<li>#f)))))<br /></li>
<li>(with-store<br /></li>
<li>store<br /></li>
<li>(let ((instances<br /></li>
<li>(latest-channel-instances store (list channel))))<br /></li>
<li>(and (eq? 2 (length instances))<br /></li>
<li>(lset= eq?<br /></li>
<li>&rsquo;(test test-channel)<br /></li>
<li>(map (compose<br /></li>
<li>channel-name<br /></li>
<li>channel-instance-channel)<br /></li>
<li>instances))))))))<br /></li>
</ul>
<p>
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: latest-channel-instances excludes duplicate channel dependencies<br />
location: /home/simendsjo/code/guix/tests/channels.scm:166<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;latest-channel-instances excludes duplicate channel dependencies&rdquo;<br /></li>
<li>(let* ((channel (channel (name &rsquo;test) (url &ldquo;test&rdquo;)))<br /></li>
<li>(test-dir<br /></li>
<li>(channel-instance-checkout instance&#x2013;with-dupes)))<br /></li>
<li>(mock ((guix git)<br /></li>
<li>update-cached-checkout<br /></li>
<li>(lambda* (url #:key ref starting-commit)<br /></li>
<li>(match url<br /></li>
<li>(&ldquo;test&rdquo; (values test-dir &ldquo;caf3cabba9e&rdquo; #f))<br /></li>
<li>(_ (values<br /></li>
<li>(channel-instance-checkout instance&#x2013;no-deps)<br /></li>
<li>&ldquo;abcde1234&rdquo;<br /></li>
<li>#f)))))<br /></li>
<li>(with-store<br /></li>
<li>store<br /></li>
<li>(let ((instances<br /></li>
<li>(latest-channel-instances store (list channel))))<br /></li>
<li>(and (= 2 (length instances))<br /></li>
<li>(lset= eq?<br /></li>
<li>&rsquo;(test test-channel)<br /></li>
<li>(map (compose<br /></li>
<li>channel-name<br /></li>
<li>channel-instance-channel)<br /></li>
<li>instances))<br /></li>
<li>(find (lambda (instance)<br /></li>
<li>(and (eq? (channel-name<br /></li>
<li>(channel-instance-channel instance))<br /></li>
<li>&rsquo;test-channel)<br /></li>
<li>(string=?<br /></li>
<li>(channel-commit<br /></li>
<li>(channel-instance-channel instance))<br /></li>
<li>&ldquo;abc1234&rdquo;)))<br /></li>
<li>instances)))))))<br /></li>
</ul>
<p>
actual-value: #&lt;&lt;channel-instance&gt; channel: #&lt;&lt;channel&gt; name: test-channel url: &ldquo;<a href="https://example.com/test-channel">https://example.com/test-channel</a>&rdquo; branch: &ldquo;master&rdquo; commit: &ldquo;abc1234&rdquo; introduction: #f location: ((line . 226) (column . 19) (filename . &ldquo;guix/channels.scm&rdquo;))&gt; commit: &ldquo;abcde1234&rdquo; checkout: &ldquo;/home/simendsjo/code/guix/test-tmp/store/6zkf2waz1q531qkxxj1hxj6z8p0f1385-test-channel-abcde12&rdquo;&gt;<br />
result: PASS<br />
</p>

<p>
test-name: latest-channel-instances #:validate-pull<br />
location: /home/simendsjo/code/guix/tests/channels.scm:196<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;latest-channel-instances #:validate-pull&rdquo;<br /></li>
<li>&rsquo;descendant<br /></li>
<li>(let/ec<br /></li>
<li>return<br /></li>
<li>(with-temporary-git-repository<br /></li>
<li>directory<br /></li>
<li>&rsquo;((add &ldquo;a.txt&rdquo; &ldquo;A&rdquo;)<br /></li>
<li>(commit &ldquo;first commit&rdquo;)<br /></li>
<li>(add &ldquo;b.scm&rdquo; &ldquo;#t&rdquo;)<br /></li>
<li>(commit &ldquo;second commit&rdquo;))<br /></li>
<li>(with-repository<br /></li>
<li>directory<br /></li>
<li>repository<br /></li>
<li>(let* ((commit1 (find-commit repository &ldquo;first&rdquo;))<br /></li>
<li>(commit2 (find-commit repository &ldquo;second&rdquo;))<br /></li>
<li>(spec (channel<br /></li>
<li>(url (string-append &ldquo;<a href="file://">file://</a>&rdquo; directory))<br /></li>
<li>(name &rsquo;foo)))<br /></li>
<li>(new (channel<br /></li>
<li>(inherit spec)<br /></li>
<li>(commit (oid-&gt;string (commit-id commit2)))))<br /></li>
<li>(old (channel<br /></li>
<li>(inherit spec)<br /></li>
<li>(commit (oid-&gt;string (commit-id commit1))))))<br /></li>
<li>(define (validate-pull channel current commit relation)<br /></li>
<li>(return<br /></li>
<li>(and (eq? channel old)<br /></li>
<li>(string=?<br /></li>
<li>(oid-&gt;string (commit-id commit2))<br /></li>
<li>current)<br /></li>
<li>(string=?<br /></li>
<li>(oid-&gt;string (commit-id commit1))<br /></li>
<li>commit)<br /></li>
<li>relation)))<br /></li>
<li>(with-store<br /></li>
<li>store<br /></li>
<li>(latest-channel-instances<br /></li>
<li>store<br /></li>
<li>(list old)<br /></li>
<li>#:current-channels<br /></li>
<li>(list new)<br /></li>
<li>#:validate-pull<br /></li>
<li>validate-pull)))))))<br /></li>
</ul>
<p>
Initialized empty Git repository in <i>tmp/guix-directory.1cbxjG</i>.git/<br />
[master (root-commit) d61abce] first commit<br />
 1 file changed, 1 insertion(+)<br />
 create mode 100644 a.txt<br />
[master 90f1a87] second commit<br />
 1 file changed, 1 insertion(+)<br />
 create mode 100644 b.scm<br />
expected-value: descendant<br />
actual-value: descendant<br />
result: PASS<br />
</p>

<p>
test-name: channel-instances-&gt;manifest<br />
location: /home/simendsjo/code/guix/tests/channels.scm:229<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;channel-instances-&gt;manifest&rdquo;<br /></li>
<li>(let* ((spec (lambda deps<br /></li>
<li>`(channel<br /></li>
<li>(version 0)<br /></li>
<li>(dependencies<br /></li>
<li>,@(map (lambda (dep)<br /></li>
<li>`(channel<br /></li>
<li>(name ,dep)<br /></li>
<li>(url &ldquo;<a href="http://example.org">http://example.org</a>&rdquo;)))<br /></li>
<li>deps)))))<br /></li>
<li>(guix (make-instance #:name &rsquo;guix))<br /></li>
<li>(instance0 (make-instance #:name &rsquo;a))<br /></li>
<li>(instance1<br /></li>
<li>(make-instance #:name &rsquo;b #:spec (spec &rsquo;a)))<br /></li>
<li>(instance2<br /></li>
<li>(make-instance #:name &rsquo;c #:spec (spec &rsquo;b)))<br /></li>
<li>(instance3<br /></li>
<li>(make-instance #:name &rsquo;d #:spec (spec &rsquo;c &rsquo;a))))<br /></li>
<li>(%graft? #f)<br /></li>
<li>(let ((source (channel-instance-checkout guix)))<br /></li>
<li>(mkdir (string-append source &ldquo;/build-aux&rdquo;))<br /></li>
<li>(call-with-output-file<br /></li>
<li>(string-append<br /></li>
<li>source<br /></li>
<li>&ldquo;/build-aux/build-self.scm&rdquo;)<br /></li>
<li>(lambda (port)<br /></li>
<li>(write &rsquo;(begin<br /></li>
<li>(use-modules (guix) (gnu packages bootstrap))<br /></li>
<li>(lambda _ (package-&gt;derivation %bootstrap-guile)))<br /></li>
<li>port))))<br /></li>
<li>(with-store<br /></li>
<li>store<br /></li>
<li>(let ()<br /></li>
<li>(define manifest<br /></li>
<li>(run-with-store<br /></li>
<li>store<br /></li>
<li>(channel-instances-&gt;manifest<br /></li>
<li>(list guix<br /></li>
<li>instance0<br /></li>
<li>instance1<br /></li>
<li>instance2<br /></li>
<li>instance3))))<br /></li>
<li>(define entries (manifest-entries manifest))<br /></li>
<li>(define (depends? drv in out)<br /></li>
<li>(let ((set (list-&gt;set<br /></li>
<li>(requisites<br /></li>
<li>store<br /></li>
<li>(list (derivation-file-name drv)))))<br /></li>
<li>(in (map derivation-file-name in))<br /></li>
<li>(out (map derivation-file-name out)))<br /></li>
<li>(and (every (cut set-contains? set &lt;&gt;) in)<br /></li>
<li>(not (any (cut set-contains? set &lt;&gt;) out)))))<br /></li>
<li>(define (lookup name)<br /></li>
<li>(run-with-store<br /></li>
<li>store<br /></li>
<li>(lower-object<br /></li>
<li>(manifest-entry-item<br /></li>
<li>(manifest-lookup<br /></li>
<li>manifest<br /></li>
<li>(manifest-pattern (name name)))))))<br /></li>
<li>(let ((drv-guix (lookup &ldquo;guix&rdquo;))<br /></li>
<li>(drv0 (lookup &ldquo;a&rdquo;))<br /></li>
<li>(drv1 (lookup &ldquo;b&rdquo;))<br /></li>
<li>(drv2 (lookup &ldquo;c&rdquo;))<br /></li>
<li>(drv3 (lookup &ldquo;d&rdquo;)))<br /></li>
<li>(and (depends?<br /></li>
<li>drv-guix<br /></li>
<li>&rsquo;()<br /></li>
<li>(list drv0 drv1 drv2 drv3))<br /></li>
<li>(depends? drv0 (list) (list drv1 drv2 drv3))<br /></li>
<li>(depends? drv1 (list drv0) (list drv2 drv3))<br /></li>
<li>(depends? drv2 (list drv1) (list drv3))<br /></li>
<li>(depends? drv3 (list drv2 drv0) (list))))))))<br /></li>
</ul>
<p>
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: channel-news, no news<br />
location: /home/simendsjo/code/guix/tests/channels.scm:306<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;channel-news, no news&rdquo;<br /></li>
<li>&rsquo;()<br /></li>
<li>(with-temporary-git-repository<br /></li>
<li>directory<br /></li>
<li>&rsquo;((add &ldquo;a.txt&rdquo; &ldquo;A&rdquo;) (commit &ldquo;the commit&rdquo;))<br /></li>
<li>(with-repository<br /></li>
<li>directory<br /></li>
<li>repository<br /></li>
<li>(let ((channel<br /></li>
<li>(channel<br /></li>
<li>(url (string-append &ldquo;<a href="file://">file://</a>&rdquo; directory))<br /></li>
<li>(name &rsquo;foo)))<br /></li>
<li>(latest (reference-name-&gt;oid repository &ldquo;HEAD&rdquo;)))<br /></li>
<li>(channel-news-for-commit<br /></li>
<li>channel<br /></li>
<li>(oid-&gt;string latest))))))<br /></li>
</ul>
<p>
Initialized empty Git repository in <i>tmp/guix-directory.iC041J</i>.git/<br />
[master (root-commit) 02c8df1] the commit<br />
 1 file changed, 1 insertion(+)<br />
 create mode 100644 a.txt<br />
expected-value: ()<br />
actual-value: ()<br />
result: PASS<br />
</p>

<p>
test-name: channel-news, one entry<br />
location: /home/simendsjo/code/guix/tests/channels.scm:318<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;channel-news, one entry&rdquo;<br /></li>
<li>(with-temporary-git-repository<br /></li>
<li>directory<br /></li>
<li>`((add &ldquo;.guix-channel&rdquo;<br /></li>
<li>,(object-&gt;string<br /></li>
<li>&rsquo;(channel (version 0) (news-file &ldquo;news.scm&rdquo;))))<br /></li>
<li>(commit &ldquo;first commit&rdquo;)<br /></li>
<li>(add &ldquo;src/a.txt&rdquo; &ldquo;A&rdquo;)<br /></li>
<li>(commit &ldquo;second commit&rdquo;)<br /></li>
<li>(tag &ldquo;tag-for-first-news-entry&rdquo;)<br /></li>
<li>(add &ldquo;news.scm&rdquo;<br /></li>
<li>,(lambda (repository)<br /></li>
<li>(let ((previous<br /></li>
<li>(reference-name-&gt;oid repository &ldquo;HEAD&rdquo;)))<br /></li>
<li>(object-&gt;string<br /></li>
<li>`(channel-news<br /></li>
<li>(version 0)<br /></li>
<li>(entry (commit ,(oid-&gt;string previous))<br /></li>
<li>(title (en &ldquo;New file!&rdquo;) (eo &ldquo;Nova dosiero!&rdquo;))<br /></li>
<li>(body (en &ldquo;Yeah, a.txt.&rdquo;))))))))<br /></li>
<li>(commit &ldquo;third commit&rdquo;)<br /></li>
<li>(add &ldquo;src/b.txt&rdquo; &ldquo;B&rdquo;)<br /></li>
<li>(commit &ldquo;fourth commit&rdquo;)<br /></li>
<li>(add &ldquo;news.scm&rdquo;<br /></li>
<li>,(lambda (repository)<br /></li>
<li>(let ((second<br /></li>
<li>(commit-id<br /></li>
<li>(find-commit repository &ldquo;second commit&rdquo;)))<br /></li>
<li>(previous<br /></li>
<li>(reference-name-&gt;oid repository &ldquo;HEAD&rdquo;)))<br /></li>
<li>(object-&gt;string<br /></li>
<li>`(channel-news<br /></li>
<li>(version 0)<br /></li>
<li>(entry (commit ,(oid-&gt;string previous))<br /></li>
<li>(title (en &ldquo;Another file!&rdquo;))<br /></li>
<li>(body (en &ldquo;Yeah, b.txt.&rdquo;)))<br /></li>
<li>(entry (tag &ldquo;tag-for-first-news-entry&rdquo;)<br /></li>
<li>(title (en &ldquo;Old news.&rdquo;) (eo &ldquo;Malnova?oj.&rdquo;))<br /></li>
<li>(body (en &ldquo;For a.txt&rdquo;))))))))<br /></li>
<li>(commit &ldquo;fifth commit&rdquo;))<br /></li>
<li>(with-repository<br /></li>
<li>directory<br /></li>
<li>repository<br /></li>
<li>(define (find-commit* message)<br /></li>
<li>(oid-&gt;string<br /></li>
<li>(commit-id (find-commit repository message))))<br /></li>
<li>(let ((channel<br /></li>
<li>(channel<br /></li>
<li>(url (string-append &ldquo;<a href="file://">file://</a>&rdquo; directory))<br /></li>
<li>(name &rsquo;foo)))<br /></li>
<li>(commit1 (find-commit* &ldquo;first commit&rdquo;))<br /></li>
<li>(commit2 (find-commit* &ldquo;second commit&rdquo;))<br /></li>
<li>(commit3 (find-commit* &ldquo;third commit&rdquo;))<br /></li>
<li>(commit4 (find-commit* &ldquo;fourth commit&rdquo;))<br /></li>
<li>(commit5 (find-commit* &ldquo;fifth commit&rdquo;)))<br /></li>
<li>(and (null? (channel-news-for-commit channel commit2))<br /></li>
<li>(lset= string=?<br /></li>
<li>(map channel-news-entry-commit<br /></li>
<li>(channel-news-for-commit channel commit5))<br /></li>
<li>(list commit2 commit4))<br /></li>
<li>(lset= equal?<br /></li>
<li>(map channel-news-entry-title<br /></li>
<li>(channel-news-for-commit channel commit5))<br /></li>
<li>&rsquo;(((&ldquo;en&rdquo; . &ldquo;Another file!&rdquo;))<br /></li>
<li>((&ldquo;en&rdquo; . &ldquo;Old news.&rdquo;) (&ldquo;eo&rdquo; . &ldquo;Malnova?oj.&rdquo;))))<br /></li>
<li>(lset= string=?<br /></li>
<li>(map channel-news-entry-commit<br /></li>
<li>(channel-news-for-commit channel commit3))<br /></li>
<li>(list commit2))<br /></li>
<li>(lset= string=?<br /></li>
<li>(map channel-news-entry-commit<br /></li>
<li>(channel-news-for-commit channel commit3 commit1))<br /></li>
<li>(list commit2))<br /></li>
<li>(lset= string=?<br /></li>
<li>(map channel-news-entry-commit<br /></li>
<li>(channel-news-for-commit channel commit5 commit3))<br /></li>
<li>(list commit4))<br /></li>
<li>(lset= string=?<br /></li>
<li>(map channel-news-entry-commit<br /></li>
<li>(channel-news-for-commit channel commit5 commit1))<br /></li>
<li>(list commit4 commit2))<br /></li>
<li>(lset= equal?<br /></li>
<li>(map channel-news-entry-tag<br /></li>
<li>(channel-news-for-commit channel commit5 commit1))<br /></li>
<li>&rsquo;(#f &ldquo;tag-for-first-news-entry&rdquo;)))))))<br /></li>
</ul>
<p>
Initialized empty Git repository in <i>tmp/guix-directory.fDRYPF</i>.git/<br />
[master (root-commit) ad6f8c3] first commit<br />
 1 file changed, 1 insertion(+)<br />
 create mode 100644 .guix-channel<br />
[master 7ae4c89] second commit<br />
 1 file changed, 1 insertion(+)<br />
 create mode 100644 src/a.txt<br />
[master b845960] third commit<br />
 1 file changed, 1 insertion(+)<br />
 create mode 100644 news.scm<br />
[master 38eb3f3] fourth commit<br />
 1 file changed, 1 insertion(+)<br />
 create mode 100644 src/b.txt<br />
[master b44b975] fifth commit<br />
 1 file changed, 1 insertion(+), 1 deletion(-)<br />
actual-value: #f<br />
result: FAIL<br />
</p>

<p>
test-name: authenticate-channel, wrong first commit signer<br />
location: /home/simendsjo/code/guix/tests/channels.scm:406<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;authenticate-channel, wrong first commit signer&rdquo;<br /></li>
<li>(with-fresh-gnupg-setup<br /></li>
<li>(list %ed25519-public-key-file<br /></li>
<li>%ed25519-secret-key-file<br /></li>
<li>%ed25519bis-public-key-file<br /></li>
<li>%ed25519bis-secret-key-file)<br /></li>
<li>(with-temporary-git-repository<br /></li>
<li>directory<br /></li>
<li>`((add &ldquo;.guix-channel&rdquo;<br /></li>
<li>,(object-&gt;string<br /></li>
<li>&rsquo;(channel<br /></li>
<li>(version 0)<br /></li>
<li>(keyring-reference &ldquo;master&rdquo;))))<br /></li>
<li>(add &ldquo;.guix-authorizations&rdquo;<br /></li>
<li>,(object-&gt;string<br /></li>
<li>`(authorizations<br /></li>
<li>(version 0)<br /></li>
<li>((,(key-fingerprint %ed25519-public-key-file)<br /></li>
<li>(name &ldquo;Charlie&rdquo;))))))<br /></li>
<li>(add &ldquo;signer.key&rdquo;<br /></li>
<li>,(call-with-input-file<br /></li>
<li>%ed25519-public-key-file<br /></li>
<li>get-string-all))<br /></li>
<li>(commit<br /></li>
<li>&ldquo;first commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file))))<br /></li>
<li>(with-repository<br /></li>
<li>directory<br /></li>
<li>repository<br /></li>
<li>(let* ((commit1 (find-commit repository &ldquo;first&rdquo;))<br /></li>
<li>(intro ((@@ (guix channels) make-channel-introduction)<br /></li>
<li>(commit-id-string commit1)<br /></li>
<li>(openpgp-public-key-fingerprint<br /></li>
<li>(read-openpgp-packet %ed25519bis-public-key-file))<br /></li>
<li>#f))<br /></li>
<li>(channel<br /></li>
<li>(channel<br /></li>
<li>(name &rsquo;example)<br /></li>
<li>(url (string-append &ldquo;<a href="file://">file://</a>&rdquo; directory))<br /></li>
<li>(introduction intro))))<br /></li>
<li>(guard (c ((message? c)<br /></li>
<li>(-&gt;bool<br /></li>
<li>(string-contains<br /></li>
<li>(condition-message c)<br /></li>
<li>&ldquo;initial commit&rdquo;))))<br /></li>
<li>(authenticate-channel<br /></li>
<li>channel<br /></li>
<li>directory<br /></li>
<li>(commit-id-string commit1)<br /></li>
<li>#:keyring-reference-prefix<br /></li>
<li>&ldquo;&rdquo;)<br /></li>
<li>&rsquo;failed))))))<br /></li>
</ul>
<p>
result: SKIP<br />
</p>

<p>
test-name: authenticate-channel, .guix-authorizations<br />
location: /home/simendsjo/code/guix/tests/channels.scm:446<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;authenticate-channel, .guix-authorizations&rdquo;<br /></li>
<li>(with-fresh-gnupg-setup<br /></li>
<li>(list %ed25519-public-key-file<br /></li>
<li>%ed25519-secret-key-file<br /></li>
<li>%ed25519bis-public-key-file<br /></li>
<li>%ed25519bis-secret-key-file)<br /></li>
<li>(with-temporary-git-repository<br /></li>
<li>directory<br /></li>
<li>`((add &ldquo;.guix-channel&rdquo;<br /></li>
<li>,(object-&gt;string<br /></li>
<li>&rsquo;(channel<br /></li>
<li>(version 0)<br /></li>
<li>(keyring-reference &ldquo;channel-keyring&rdquo;))))<br /></li>
<li>(add &ldquo;.guix-authorizations&rdquo;<br /></li>
<li>,(object-&gt;string<br /></li>
<li>`(authorizations<br /></li>
<li>(version 0)<br /></li>
<li>((,(key-fingerprint %ed25519-public-key-file)<br /></li>
<li>(name &ldquo;Charlie&rdquo;))))))<br /></li>
<li>(commit &ldquo;zeroth commit&rdquo;)<br /></li>
<li>(add &ldquo;a.txt&rdquo; &ldquo;A&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;first commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file)))<br /></li>
<li>(add &ldquo;b.txt&rdquo; &ldquo;B&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;second commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file)))<br /></li>
<li>(add &ldquo;c.txt&rdquo; &ldquo;C&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;third commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519bis-public-key-file)))<br /></li>
<li>(branch &ldquo;channel-keyring&rdquo;)<br /></li>
<li>(checkout &ldquo;channel-keyring&rdquo;)<br /></li>
<li>(add &ldquo;signer.key&rdquo;<br /></li>
<li>,(call-with-input-file<br /></li>
<li>%ed25519-public-key-file<br /></li>
<li>get-string-all))<br /></li>
<li>(add &ldquo;other.key&rdquo;<br /></li>
<li>,(call-with-input-file<br /></li>
<li>%ed25519bis-public-key-file<br /></li>
<li>get-string-all))<br /></li>
<li>(commit &ldquo;keyring commit&rdquo;)<br /></li>
<li>(checkout &ldquo;master&rdquo;))<br /></li>
<li>(with-repository<br /></li>
<li>directory<br /></li>
<li>repository<br /></li>
<li>(let* ((commit1 (find-commit repository &ldquo;first&rdquo;))<br /></li>
<li>(commit2 (find-commit repository &ldquo;second&rdquo;))<br /></li>
<li>(commit3 (find-commit repository &ldquo;third&rdquo;))<br /></li>
<li>(intro ((@@ (guix channels) make-channel-introduction)<br /></li>
<li>(commit-id-string commit1)<br /></li>
<li>(openpgp-public-key-fingerprint<br /></li>
<li>(read-openpgp-packet %ed25519-public-key-file))<br /></li>
<li>#f))<br /></li>
<li>(channel<br /></li>
<li>(channel<br /></li>
<li>(name &rsquo;example)<br /></li>
<li>(url (string-append &ldquo;<a href="file://">file://</a>&rdquo; directory))<br /></li>
<li>(introduction intro))))<br /></li>
<li>(and (authenticate-channel<br /></li>
<li>channel<br /></li>
<li>directory<br /></li>
<li>(commit-id-string commit2)<br /></li>
<li>#:keyring-reference-prefix<br /></li>
<li>&ldquo;&rdquo;)<br /></li>
<li>(guard (c ((unauthorized-commit-error? c)<br /></li>
<li>(and (oid=? (git-authentication-error-commit c)<br /></li>
<li>(commit-id commit3))<br /></li>
<li>(bytevector=?<br /></li>
<li>(openpgp-public-key-fingerprint<br /></li>
<li>(unauthorized-commit-error-signing-key c))<br /></li>
<li>(openpgp-public-key-fingerprint<br /></li>
<li>(read-openpgp-packet<br /></li>
<li>%ed25519bis-public-key-file))))))<br /></li>
<li>(authenticate-channel<br /></li>
<li>channel<br /></li>
<li>directory<br /></li>
<li>(commit-id-string commit3)<br /></li>
<li>#:keyring-reference-prefix<br /></li>
<li>&ldquo;&rdquo;)<br /></li>
<li>&rsquo;failed)))))))<br /></li>
</ul>
<p>
result: SKIP<br />
</p>

<p>
random seed for tests: 1592473061<br />
Updating channel &rsquo;test&rsquo; from Git repository at &rsquo;test&rsquo;&#x2026;<br />
Updating channel &rsquo;test-channel&rsquo; from Git repository at &rsquo;https://example.com/test-channel&rsquo;&#x2026;<br />
Updating channel &rsquo;test&rsquo; from Git repository at &rsquo;test&rsquo;&#x2026;<br />
Updating channel &rsquo;test-channel&rsquo; from Git repository at &rsquo;https://example.com/test-channel&rsquo;&#x2026;<br />
Updating channel &rsquo;test-channel&rsquo; from Git repository at &rsquo;https://example.com/test-channel&rsquo;&#x2026;<br />
Updating channel &rsquo;foo&rsquo; from Git repository at &rsquo;file:///tmp/guix-directory.1cbxjG&rsquo;&#x2026;<br />
</p>

<p>
SKIP: tests/cpio<br />
<code>==============</code><br />
</p>

<p>
test-name: file-&gt;cpio-header + write-cpio-header + read-cpio-header<br />
location: /home/simendsjo/code/guix/tests/cpio.scm:37<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;file-&gt;cpio-header + write-cpio-header + read-cpio-header&rdquo;<br /></li>
<li>(let* ((file (search-path %load-path &ldquo;guix.scm&rdquo;))<br /></li>
<li>(header (file-&gt;cpio-header file)))<br /></li>
<li>(call-with-values<br /></li>
<li>(lambda () (open-bytevector-output-port))<br /></li>
<li>(lambda (port get-bv)<br /></li>
<li>(write-cpio-header header port)<br /></li>
<li>(let ((port (open-bytevector-input-port (get-bv))))<br /></li>
<li>(equal? header (read-cpio-header port)))))))<br /></li>
</ul>
<p>
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: bit-identical to GNU cpio&rsquo;s output<br />
location: /home/simendsjo/code/guix/tests/cpio.scm:49<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;bit-identical to GNU cpio&rsquo;s output&rdquo;<br /></li>
<li>(call-with-temporary-output-file<br /></li>
<li>(lambda (link _)<br /></li>
<li>(delete-file link)<br /></li>
<li>(symlink &ldquo;chbouib&rdquo; link)<br /></li>
<li>(let ((files (cons* &ldquo;/&rdquo;<br /></li>
<li>(canonicalize-path<br /></li>
<li>(dirname (search-path %load-path &ldquo;guix.scm&rdquo;)))<br /></li>
<li>link<br /></li>
<li>(map (compose<br /></li>
<li>canonicalize-path<br /></li>
<li>(cut search-path %load-path &lt;&gt;))<br /></li>
<li>&rsquo;(&ldquo;guix.scm&rdquo;<br /></li>
<li>&ldquo;guix/build/syscalls.scm&rdquo;<br /></li>
<li>&ldquo;guix/packages.scm&rdquo;)))))<br /></li>
<li>(call-with-temporary-output-file<br /></li>
<li>(lambda (ref-file _)<br /></li>
<li>(let ((pipe (open-pipe*<br /></li>
<li>OPEN<sub>WRITE</sub><br /></li>
<li>%cpio-program<br /></li>
<li>&ldquo;-o&rdquo;<br /></li>
<li>&ldquo;-O&rdquo;<br /></li>
<li>ref-file<br /></li>
<li>&ldquo;-H&rdquo;<br /></li>
<li>&ldquo;newc&rdquo;<br /></li>
<li>&ldquo;&#x2013;null&rdquo;)))<br /></li>
<li>(for-each<br /></li>
<li>(lambda (file) (format pipe &ldquo;~a\x00&rdquo; file))<br /></li>
<li>files)<br /></li>
<li>(and (zero? (close-pipe pipe))<br /></li>
<li>(call-with-temporary-output-file<br /></li>
<li>(lambda (file port)<br /></li>
<li>(write-cpio-archive files port)<br /></li>
<li>(close-port port)<br /></li>
<li>(or (file=? ref-file file)<br /></li>
<li>(throw &rsquo;cpio-archives-differ<br /></li>
<li>files<br /></li>
<li>ref-file<br /></li>
<li>file<br /></li>
<li>(stat:size (stat ref-file))<br /></li>
<li>(stat:size (stat file))))))))))))))<br /></li>
</ul>
<p>
result: SKIP<br />
</p>

<p>
random seed for tests: 1592472741<br />
</p>

<p>
FAIL: tests/git-authenticate<br />
<code>==========================</code><br />
</p>

<p>
test-name: unsigned commits<br />
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:43<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;unsigned commits&rdquo;<br /></li>
<li>(with-temporary-git-repository<br /></li>
<li>directory<br /></li>
<li>&rsquo;((add &ldquo;a.txt&rdquo; &ldquo;A&rdquo;)<br /></li>
<li>(commit &ldquo;first commit&rdquo;)<br /></li>
<li>(add &ldquo;b.txt&rdquo; &ldquo;B&rdquo;)<br /></li>
<li>(commit &ldquo;second commit&rdquo;))<br /></li>
<li>(with-repository<br /></li>
<li>directory<br /></li>
<li>repository<br /></li>
<li>(let ((commit1 (find-commit repository &ldquo;first&rdquo;))<br /></li>
<li>(commit2 (find-commit repository &ldquo;second&rdquo;)))<br /></li>
<li>(guard (c ((unsigned-commit-error? c)<br /></li>
<li>(oid=? (git-authentication-error-commit c)<br /></li>
<li>(commit-id commit1))))<br /></li>
<li>(authenticate-commits<br /></li>
<li>repository<br /></li>
<li>(list commit1 commit2)<br /></li>
<li>#:keyring-reference<br /></li>
<li>&ldquo;master&rdquo;)<br /></li>
<li>&rsquo;failed)))))<br /></li>
</ul>
<p>
Initialized empty Git repository in <i>tmp/guix-directory.0jlixe</i>.git/<br />
[master (root-commit) 428f973] first commit<br />
 1 file changed, 1 insertion(+)<br />
 create mode 100644 a.txt<br />
[master becf258] second commit<br />
 1 file changed, 1 insertion(+)<br />
 create mode 100644 b.txt<br />
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: signed commits, SHA1 signature<br />
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:60<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;signed commits, SHA1 signature&rdquo;<br /></li>
<li>(with-fresh-gnupg-setup<br /></li>
<li>(list %ed25519-public-key-file<br /></li>
<li>%ed25519-secret-key-file)<br /></li>
<li>(call-with-output-file<br /></li>
<li>(string-append (getenv &ldquo;GNUPGHOME&rdquo;) &ldquo;/gpg.conf&rdquo;)<br /></li>
<li>(lambda (port) (display &ldquo;digest-algo sha1&rdquo; port)))<br /></li>
<li>(with-temporary-git-repository<br /></li>
<li>directory<br /></li>
<li>`((add &ldquo;a.txt&rdquo; &ldquo;A&rdquo;)<br /></li>
<li>(add &ldquo;signer.key&rdquo;<br /></li>
<li>,(call-with-input-file<br /></li>
<li>%ed25519-public-key-file<br /></li>
<li>get-string-all))<br /></li>
<li>(add &ldquo;.guix-authorizations&rdquo;<br /></li>
<li>,(object-&gt;string<br /></li>
<li>`(authorizations<br /></li>
<li>(version 0)<br /></li>
<li>((,(key-fingerprint %ed25519-public-key-file)<br /></li>
<li>(name &ldquo;Charlie&rdquo;))))))<br /></li>
<li>(commit<br /></li>
<li>&ldquo;first commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file))))<br /></li>
<li>(with-repository<br /></li>
<li>directory<br /></li>
<li>repository<br /></li>
<li>(let ((commit (find-commit repository &ldquo;first&rdquo;)))<br /></li>
<li>(guard (c ((unsigned-commit-error? c)<br /></li>
<li>(oid=? (git-authentication-error-commit c)<br /></li>
<li>(commit-id commit))))<br /></li>
<li>(authenticate-commits<br /></li>
<li>repository<br /></li>
<li>(list commit)<br /></li>
<li>#:keyring-reference<br /></li>
<li>&ldquo;master&rdquo;)<br /></li>
<li>&rsquo;failed))))))<br /></li>
</ul>
<p>
actual-value: #f<br />
actual-error:<br />
</p>
<ul class="org-ul">
<li>(%exception<br /></li>
<li>#&lt;&amp;invoke-error program: &ldquo;gpg&rdquo; arguments: (&ldquo;&#x2013;import&rdquo; &ldquo;/home/simendsjo/code/guix/tests/ed25519.key&rdquo;) exit-status: 127 term-signal: #f stop-signal: #f&gt;)<br /></li>
</ul>
<p>
result: FAIL<br />
</p>

<p>
test-name: signed commits, default authorizations<br />
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:89<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;signed commits, default authorizations&rdquo;<br /></li>
<li>(with-fresh-gnupg-setup<br /></li>
<li>(list %ed25519-public-key-file<br /></li>
<li>%ed25519-secret-key-file)<br /></li>
<li>(with-temporary-git-repository<br /></li>
<li>directory<br /></li>
<li>`((add &ldquo;signer.key&rdquo;<br /></li>
<li>,(call-with-input-file<br /></li>
<li>%ed25519-public-key-file<br /></li>
<li>get-string-all))<br /></li>
<li>(commit &ldquo;zeroth commit&rdquo;)<br /></li>
<li>(add &ldquo;a.txt&rdquo; &ldquo;A&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;first commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file)))<br /></li>
<li>(add &ldquo;b.txt&rdquo; &ldquo;B&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;second commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file))))<br /></li>
<li>(with-repository<br /></li>
<li>directory<br /></li>
<li>repository<br /></li>
<li>(let ((commit1 (find-commit repository &ldquo;first&rdquo;))<br /></li>
<li>(commit2 (find-commit repository &ldquo;second&rdquo;)))<br /></li>
<li>(authenticate-commits<br /></li>
<li>repository<br /></li>
<li>(list commit1 commit2)<br /></li>
<li>#:default-authorizations<br /></li>
<li>(list (openpgp-public-key-fingerprint<br /></li>
<li>(read-openpgp-packet %ed25519-public-key-file)))<br /></li>
<li>#:keyring-reference<br /></li>
<li>&ldquo;master&rdquo;))))))<br /></li>
</ul>
<p>
result: SKIP<br />
</p>

<p>
test-name: signed commits, .guix-authorizations<br />
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:113<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;signed commits, .guix-authorizations&rdquo;<br /></li>
<li>(with-fresh-gnupg-setup<br /></li>
<li>(list %ed25519-public-key-file<br /></li>
<li>%ed25519-secret-key-file)<br /></li>
<li>(with-temporary-git-repository<br /></li>
<li>directory<br /></li>
<li>`((add &ldquo;signer.key&rdquo;<br /></li>
<li>,(call-with-input-file<br /></li>
<li>%ed25519-public-key-file<br /></li>
<li>get-string-all))<br /></li>
<li>(add &ldquo;.guix-authorizations&rdquo;<br /></li>
<li>,(object-&gt;string<br /></li>
<li>`(authorizations<br /></li>
<li>(version 0)<br /></li>
<li>((,(key-fingerprint %ed25519-public-key-file)<br /></li>
<li>(name &ldquo;Charlie&rdquo;))))))<br /></li>
<li>(commit &ldquo;zeroth commit&rdquo;)<br /></li>
<li>(add &ldquo;a.txt&rdquo; &ldquo;A&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;first commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file)))<br /></li>
<li>(add &ldquo;.guix-authorizations&rdquo;<br /></li>
<li>,(object-&gt;string `(authorizations (version 0) ())))<br /></li>
<li>(commit<br /></li>
<li>&ldquo;second commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file)))<br /></li>
<li>(add &ldquo;b.txt&rdquo; &ldquo;B&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;third commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file))))<br /></li>
<li>(with-repository<br /></li>
<li>directory<br /></li>
<li>repository<br /></li>
<li>(let ((commit1 (find-commit repository &ldquo;first&rdquo;))<br /></li>
<li>(commit2 (find-commit repository &ldquo;second&rdquo;))<br /></li>
<li>(commit3 (find-commit repository &ldquo;third&rdquo;)))<br /></li>
<li>(and (authenticate-commits<br /></li>
<li>repository<br /></li>
<li>(list commit1 commit2)<br /></li>
<li>#:keyring-reference<br /></li>
<li>&ldquo;master&rdquo;)<br /></li>
<li>(guard (c ((unauthorized-commit-error? c)<br /></li>
<li>(and (oid=? (git-authentication-error-commit c)<br /></li>
<li>(commit-id commit3))<br /></li>
<li>(bytevector=?<br /></li>
<li>(openpgp-public-key-fingerprint<br /></li>
<li>(unauthorized-commit-error-signing-key c))<br /></li>
<li>(openpgp-public-key-fingerprint<br /></li>
<li>(read-openpgp-packet<br /></li>
<li>%ed25519-public-key-file))))))<br /></li>
<li>(authenticate-commits<br /></li>
<li>repository<br /></li>
<li>(list commit1 commit2 commit3)<br /></li>
<li>#:keyring-reference<br /></li>
<li>&ldquo;master&rdquo;)<br /></li>
<li>&rsquo;failed)))))))<br /></li>
</ul>
<p>
result: SKIP<br />
</p>

<p>
test-name: signed commits, .guix-authorizations, unauthorized merge<br />
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:161<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;signed commits, .guix-authorizations, unauthorized merge&rdquo;<br /></li>
<li>(with-fresh-gnupg-setup<br /></li>
<li>(list %ed25519-public-key-file<br /></li>
<li>%ed25519-secret-key-file<br /></li>
<li>%ed25519bis-public-key-file<br /></li>
<li>%ed25519bis-secret-key-file)<br /></li>
<li>(with-temporary-git-repository<br /></li>
<li>directory<br /></li>
<li>`((add &ldquo;signer1.key&rdquo;<br /></li>
<li>,(call-with-input-file<br /></li>
<li>%ed25519-public-key-file<br /></li>
<li>get-string-all))<br /></li>
<li>(add &ldquo;signer2.key&rdquo;<br /></li>
<li>,(call-with-input-file<br /></li>
<li>%ed25519bis-public-key-file<br /></li>
<li>get-string-all))<br /></li>
<li>(add &ldquo;.guix-authorizations&rdquo;<br /></li>
<li>,(object-&gt;string<br /></li>
<li>`(authorizations<br /></li>
<li>(version 0)<br /></li>
<li>((,(key-fingerprint %ed25519-public-key-file)<br /></li>
<li>(name &ldquo;Alice&rdquo;))))))<br /></li>
<li>(commit &ldquo;zeroth commit&rdquo;)<br /></li>
<li>(add &ldquo;a.txt&rdquo; &ldquo;A&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;first commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file)))<br /></li>
<li>(branch &ldquo;devel&rdquo;)<br /></li>
<li>(checkout &ldquo;devel&rdquo;)<br /></li>
<li>(add &ldquo;devel/1.txt&rdquo; &ldquo;1&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;first devel commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519bis-public-key-file)))<br /></li>
<li>(checkout &ldquo;master&rdquo;)<br /></li>
<li>(add &ldquo;b.txt&rdquo; &ldquo;B&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;second commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file)))<br /></li>
<li>(merge &ldquo;devel&rdquo;<br /></li>
<li>&ldquo;merge&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file))))<br /></li>
<li>(with-repository<br /></li>
<li>directory<br /></li>
<li>repository<br /></li>
<li>(let ((master1 (find-commit repository &ldquo;first commit&rdquo;))<br /></li>
<li>(master2<br /></li>
<li>(find-commit repository &ldquo;second commit&rdquo;))<br /></li>
<li>(devel1<br /></li>
<li>(find-commit repository &ldquo;first devel commit&rdquo;))<br /></li>
<li>(merge (find-commit repository &ldquo;merge&rdquo;)))<br /></li>
<li>(define (correct? c commit)<br /></li>
<li>(and (oid=? (git-authentication-error-commit c)<br /></li>
<li>(commit-id commit))<br /></li>
<li>(bytevector=?<br /></li>
<li>(openpgp-public-key-fingerprint<br /></li>
<li>(unauthorized-commit-error-signing-key c))<br /></li>
<li>(openpgp-public-key-fingerprint<br /></li>
<li>(read-openpgp-packet %ed25519bis-public-key-file)))))<br /></li>
<li>(and (authenticate-commits<br /></li>
<li>repository<br /></li>
<li>(list master1 master2)<br /></li>
<li>#:keyring-reference<br /></li>
<li>&ldquo;master&rdquo;)<br /></li>
<li>(guard (c ((unauthorized-commit-error? c)<br /></li>
<li>(correct? c devel1)))<br /></li>
<li>(authenticate-commits<br /></li>
<li>repository<br /></li>
<li>(list master1 devel1)<br /></li>
<li>#:keyring-reference<br /></li>
<li>&ldquo;master&rdquo;)<br /></li>
<li>#f)<br /></li>
<li>(guard (c ((unauthorized-commit-error? c)<br /></li>
<li>(correct? c devel1)))<br /></li>
<li>(authenticate-commits<br /></li>
<li>repository<br /></li>
<li>(list master1 master2 devel1 merge)<br /></li>
<li>#:keyring-reference<br /></li>
<li>&ldquo;master&rdquo;)<br /></li>
<li>#f)))))))<br /></li>
</ul>
<p>
result: SKIP<br />
</p>

<p>
test-name: signed commits, .guix-authorizations, authorized merge<br />
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:230<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;signed commits, .guix-authorizations, authorized merge&rdquo;<br /></li>
<li>(with-fresh-gnupg-setup<br /></li>
<li>(list %ed25519-public-key-file<br /></li>
<li>%ed25519-secret-key-file<br /></li>
<li>%ed25519bis-public-key-file<br /></li>
<li>%ed25519bis-secret-key-file)<br /></li>
<li>(with-temporary-git-repository<br /></li>
<li>directory<br /></li>
<li>`((add &ldquo;signer1.key&rdquo;<br /></li>
<li>,(call-with-input-file<br /></li>
<li>%ed25519-public-key-file<br /></li>
<li>get-string-all))<br /></li>
<li>(add &ldquo;signer2.key&rdquo;<br /></li>
<li>,(call-with-input-file<br /></li>
<li>%ed25519bis-public-key-file<br /></li>
<li>get-string-all))<br /></li>
<li>(add &ldquo;.guix-authorizations&rdquo;<br /></li>
<li>,(object-&gt;string<br /></li>
<li>`(authorizations<br /></li>
<li>(version 0)<br /></li>
<li>((,(key-fingerprint %ed25519-public-key-file)<br /></li>
<li>(name &ldquo;Alice&rdquo;))))))<br /></li>
<li>(commit &ldquo;zeroth commit&rdquo;)<br /></li>
<li>(add &ldquo;a.txt&rdquo; &ldquo;A&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;first commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file)))<br /></li>
<li>(branch &ldquo;devel&rdquo;)<br /></li>
<li>(checkout &ldquo;devel&rdquo;)<br /></li>
<li>(add &ldquo;.guix-authorizations&rdquo;<br /></li>
<li>,(object-&gt;string<br /></li>
<li>`(authorizations<br /></li>
<li>(version 0)<br /></li>
<li>((,(key-fingerprint %ed25519-public-key-file)<br /></li>
<li>(name &ldquo;Alice&rdquo;))<br /></li>
<li>(,(key-fingerprint %ed25519bis-public-key-file))))))<br /></li>
<li>(commit<br /></li>
<li>&ldquo;first devel commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file)))<br /></li>
<li>(add &ldquo;devel/2.txt&rdquo; &ldquo;2&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;second devel commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519bis-public-key-file)))<br /></li>
<li>(checkout &ldquo;master&rdquo;)<br /></li>
<li>(add &ldquo;b.txt&rdquo; &ldquo;B&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;second commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file)))<br /></li>
<li>(merge &ldquo;devel&rdquo;<br /></li>
<li>&ldquo;merge&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file)))<br /></li>
<li>(add &ldquo;c.txt&rdquo; &ldquo;C&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;third commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519bis-public-key-file))))<br /></li>
<li>(with-repository<br /></li>
<li>directory<br /></li>
<li>repository<br /></li>
<li>(let ((master1 (find-commit repository &ldquo;first commit&rdquo;))<br /></li>
<li>(master2<br /></li>
<li>(find-commit repository &ldquo;second commit&rdquo;))<br /></li>
<li>(devel1<br /></li>
<li>(find-commit repository &ldquo;first devel commit&rdquo;))<br /></li>
<li>(devel2<br /></li>
<li>(find-commit repository &ldquo;second devel commit&rdquo;))<br /></li>
<li>(merge (find-commit repository &ldquo;merge&rdquo;))<br /></li>
<li>(master3 (find-commit repository &ldquo;third commit&rdquo;)))<br /></li>
<li>(authenticate-commits<br /></li>
<li>repository<br /></li>
<li>(list master1<br /></li>
<li>master2<br /></li>
<li>devel1<br /></li>
<li>devel2<br /></li>
<li>merge<br /></li>
<li>master3)<br /></li>
<li>#:keyring-reference<br /></li>
<li>&ldquo;master&rdquo;))))))<br /></li>
</ul>
<p>
result: SKIP<br />
</p>

<p>
test-name: signed commits, .guix-authorizations removed<br />
location: /home/simendsjo/code/guix/tests/git-authenticate.scm:290<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;signed commits, .guix-authorizations removed&rdquo;<br /></li>
<li>(with-fresh-gnupg-setup<br /></li>
<li>(list %ed25519-public-key-file<br /></li>
<li>%ed25519-secret-key-file)<br /></li>
<li>(with-temporary-git-repository<br /></li>
<li>directory<br /></li>
<li>`((add &ldquo;signer.key&rdquo;<br /></li>
<li>,(call-with-input-file<br /></li>
<li>%ed25519-public-key-file<br /></li>
<li>get-string-all))<br /></li>
<li>(add &ldquo;.guix-authorizations&rdquo;<br /></li>
<li>,(object-&gt;string<br /></li>
<li>`(authorizations<br /></li>
<li>(version 0)<br /></li>
<li>((,(key-fingerprint %ed25519-public-key-file)<br /></li>
<li>(name &ldquo;Charlie&rdquo;))))))<br /></li>
<li>(commit &ldquo;zeroth commit&rdquo;)<br /></li>
<li>(add &ldquo;a.txt&rdquo; &ldquo;A&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;first commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file)))<br /></li>
<li>(remove &ldquo;.guix-authorizations&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;second commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file)))<br /></li>
<li>(add &ldquo;b.txt&rdquo; &ldquo;B&rdquo;)<br /></li>
<li>(commit<br /></li>
<li>&ldquo;third commit&rdquo;<br /></li>
<li>(signer<br /></li>
<li>,(key-fingerprint %ed25519-public-key-file))))<br /></li>
<li>(with-repository<br /></li>
<li>directory<br /></li>
<li>repository<br /></li>
<li>(let ((commit1 (find-commit repository &ldquo;first&rdquo;))<br /></li>
<li>(commit2 (find-commit repository &ldquo;second&rdquo;))<br /></li>
<li>(commit3 (find-commit repository &ldquo;third&rdquo;)))<br /></li>
<li>(and (authenticate-commits<br /></li>
<li>repository<br /></li>
<li>(list commit1 commit2)<br /></li>
<li>#:keyring-reference<br /></li>
<li>&ldquo;master&rdquo;)<br /></li>
<li>(guard (c ((unauthorized-commit-error? c)<br /></li>
<li>(oid=? (git-authentication-error-commit c)<br /></li>
<li>(commit-id commit2))))<br /></li>
<li>(authenticate-commits<br /></li>
<li>repository<br /></li>
<li>(list commit1 commit2 commit3)<br /></li>
<li>#:keyring-reference<br /></li>
<li>&ldquo;master&rdquo;)<br /></li>
<li>&rsquo;failed)))))))<br /></li>
</ul>
<p>
result: SKIP<br />
</p>


<p>
SKIP: tests/hackage<br />
<code>=================</code><br />
</p>

<p>
test-name: hackage-&gt;guix-package test 1<br />
location: /home/simendsjo/code/guix/tests/hackage.scm:192<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;hackage-&gt;guix-package test 1&rdquo;<br /></li>
<li>(eval-test-with-cabal test-cabal-1 match-ghc-foo))<br /></li>
</ul>
<p>
random seed for tests: 1592470873<br />
</p>

<p>
Starting download of /tmp/guix-file.JcfCfm<br />
From <a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&#x2026;<br />
download failed &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo; 404 &ldquo;Not Found&rdquo;<br />
failed to download &ldquo;/tmp/guix-file.JcfCfm&rdquo; from &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo;<br />
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: hackage-&gt;guix-package test 2<br />
location: /home/simendsjo/code/guix/tests/hackage.scm:195<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;hackage-&gt;guix-package test 2&rdquo;<br /></li>
<li>(eval-test-with-cabal test-cabal-2 match-ghc-foo))<br /></li>
</ul>

<p>
Starting download of /tmp/guix-file.LlgVnn<br />
From <a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&#x2026;<br />
download failed &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo; 404 &ldquo;Not Found&rdquo;<br />
failed to download &ldquo;/tmp/guix-file.LlgVnn&rdquo; from &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo;<br />
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: hackage-&gt;guix-package test 3<br />
location: /home/simendsjo/code/guix/tests/hackage.scm:198<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;hackage-&gt;guix-package test 3&rdquo;<br /></li>
<li>(eval-test-with-cabal<br /></li>
<li>test-cabal-3<br /></li>
<li>match-ghc-foo<br /></li>
<li>#:cabal-environment<br /></li>
<li>&rsquo;((&ldquo;impl&rdquo; . &ldquo;ghc-7.8&rdquo;))))<br /></li>
</ul>

<p>
Starting download of /tmp/guix-file.Hw5E9m<br />
From <a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&#x2026;<br />
download failed &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo; 404 &ldquo;Not Found&rdquo;<br />
failed to download &ldquo;/tmp/guix-file.Hw5E9m&rdquo; from &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo;<br />
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: hackage-&gt;guix-package test 4<br />
location: /home/simendsjo/code/guix/tests/hackage.scm:202<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;hackage-&gt;guix-package test 4&rdquo;<br /></li>
<li>(eval-test-with-cabal<br /></li>
<li>test-cabal-4<br /></li>
<li>match-ghc-foo<br /></li>
<li>#:cabal-environment<br /></li>
<li>&rsquo;((&ldquo;impl&rdquo; . &ldquo;ghc-7.8&rdquo;))))<br /></li>
</ul>

<p>
Starting download of /tmp/guix-file.1IZmYi<br />
From <a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&#x2026;<br />
download failed &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo; 404 &ldquo;Not Found&rdquo;<br />
failed to download &ldquo;/tmp/guix-file.1IZmYi&rdquo; from &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo;<br />
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: hackage-&gt;guix-package test 5<br />
location: /home/simendsjo/code/guix/tests/hackage.scm:206<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;hackage-&gt;guix-package test 5&rdquo;<br /></li>
<li>(eval-test-with-cabal<br /></li>
<li>test-cabal-5<br /></li>
<li>match-ghc-foo<br /></li>
<li>#:cabal-environment<br /></li>
<li>&rsquo;((&ldquo;impl&rdquo; . &ldquo;ghc-7.8&rdquo;))))<br /></li>
</ul>

<p>
Starting download of /tmp/guix-file.gWJGfl<br />
From <a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&#x2026;<br />
download failed &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo; 404 &ldquo;Not Found&rdquo;<br />
failed to download &ldquo;/tmp/guix-file.gWJGfl&rdquo; from &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo;<br />
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: hackage-&gt;guix-package test 6<br />
location: /home/simendsjo/code/guix/tests/hackage.scm:237<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;hackage-&gt;guix-package test 6&rdquo;<br /></li>
<li>(eval-test-with-cabal<br /></li>
<li>test-cabal-6<br /></li>
<li>match-ghc-foo-6))<br /></li>
</ul>

<p>
Starting download of /tmp/guix-file.oN5nfm<br />
From <a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&#x2026;<br />
download failed &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo; 404 &ldquo;Not Found&rdquo;<br />
failed to download &ldquo;/tmp/guix-file.oN5nfm&rdquo; from &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo;<br />
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: hackage-&gt;guix-package test multiline desc (layout)<br />
location: /home/simendsjo/code/guix/tests/hackage.scm:255<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;hackage-&gt;guix-package test multiline desc (layout)&rdquo;<br /></li>
<li>(eval-test-with-cabal<br /></li>
<li>test-cabal-multiline-layout<br /></li>
<li>match-ghc-foo))<br /></li>
</ul>

<p>
Starting download of /tmp/guix-file.FlyLHm<br />
From <a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&#x2026;<br />
download failed &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo; 404 &ldquo;Not Found&rdquo;<br />
failed to download &ldquo;/tmp/guix-file.FlyLHm&rdquo; from &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo;<br />
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: hackage-&gt;guix-package test multiline desc (braced)<br />
location: /home/simendsjo/code/guix/tests/hackage.scm:275<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;hackage-&gt;guix-package test multiline desc (braced)&rdquo;<br /></li>
<li>(eval-test-with-cabal<br /></li>
<li>test-cabal-multiline-braced<br /></li>
<li>match-ghc-foo))<br /></li>
</ul>

<p>
Starting download of /tmp/guix-file.eZNfVk<br />
From <a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&#x2026;<br />
download failed &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo; 404 &ldquo;Not Found&rdquo;<br />
failed to download &ldquo;/tmp/guix-file.eZNfVk&rdquo; from &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo;<br />
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: hackage-&gt;guix-package test mixed layout<br />
location: /home/simendsjo/code/guix/tests/hackage.scm:295<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;hackage-&gt;guix-package test mixed layout&rdquo;<br /></li>
<li>(eval-test-with-cabal<br /></li>
<li>test-cabal-mixed-layout<br /></li>
<li>match-ghc-foo))<br /></li>
</ul>
<p>
Syntax error: unexpected token : (ghc-options (-Wall)) (at line 11, column 2)<br />
Syntax error: unexpected end of input<br />
</p>

<p>
;;; (fail #f #f)<br />
actual-value: #f<br />
result: XFAIL<br />
</p>

<p>
test-name: hackage-&gt;guix-package test flag executable<br />
location: /home/simendsjo/code/guix/tests/hackage.scm:322<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;hackage-&gt;guix-package test flag executable&rdquo;<br /></li>
<li>(eval-test-with-cabal<br /></li>
<li>test-cabal-flag-executable<br /></li>
<li>match-ghc-foo))<br /></li>
</ul>
<p>
Syntax error: unexpected token : (buildable (False)) (at line 12, column 4)<br />
Syntax error: unexpected end of input<br />
</p>

<p>
;;; (fail #f #f)<br />
actual-value: #f<br />
result: XFAIL<br />
</p>

<p>
test-name: hackage-&gt;guix-package test cabal revision<br />
location: /home/simendsjo/code/guix/tests/hackage.scm:367<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;hackage-&gt;guix-package test cabal revision&rdquo;<br /></li>
<li>(eval-test-with-cabal<br /></li>
<li>test-cabal-revision<br /></li>
<li>match-ghc-foo-revision))<br /></li>
</ul>

<p>
Starting download of /tmp/guix-file.atRdrj<br />
From <a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&#x2026;<br />
download failed &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo; 404 &ldquo;Not Found&rdquo;<br />
failed to download &ldquo;/tmp/guix-file.atRdrj&rdquo; from &ldquo;<a href="https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz">https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz</a>&rdquo;<br />
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: read-cabal test 1<br />
location: /home/simendsjo/code/guix/tests/hackage.scm:370<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;read-cabal test 1&rdquo;<br /></li>
<li>(match (call-with-input-string<br /></li>
<li>test-read-cabal-1<br /></li>
<li>read-cabal)<br /></li>
<li>(((&ldquo;name&rdquo; (&ldquo;test-me&rdquo;))<br /></li>
<li>(&rsquo;section<br /></li>
<li>&rsquo;library<br /></li>
<li>((&rsquo;if<br /></li>
<li>(&rsquo;flag &ldquo;base4point8&rdquo;)<br /></li>
<li>((&ldquo;build-depends&rdquo; (&ldquo;base &gt;= 4.8 &amp;&amp; &lt; 5&rdquo;)))<br /></li>
<li>((&rsquo;if<br /></li>
<li>(&rsquo;flag &ldquo;base4&rdquo;)<br /></li>
<li>((&ldquo;build-depends&rdquo; (&ldquo;base &gt;= 4 &amp;&amp; &lt; 4.8&rdquo;)))<br /></li>
<li>((&rsquo;if<br /></li>
<li>(&rsquo;flag &ldquo;base3&rdquo;)<br /></li>
<li>((&ldquo;build-depends&rdquo; (&ldquo;base &gt;= 3 &amp;&amp; &lt; 4&rdquo;)))<br /></li>
<li>((&ldquo;build-depends&rdquo; (&ldquo;base &lt; 3&rdquo;))))))))<br /></li>
<li>(&rsquo;if<br /></li>
<li>(&rsquo;or<br /></li>
<li>(&rsquo;flag &ldquo;base4point8&rdquo;)<br /></li>
<li>(&rsquo;and (&rsquo;flag &ldquo;base4&rdquo;) (&rsquo;flag &ldquo;base3&rdquo;)))<br /></li>
<li>((&ldquo;build-depends&rdquo; (&ldquo;random&rdquo;)))<br /></li>
<li>())<br /></li>
<li>(&ldquo;build-depends&rdquo; (&ldquo;containers&rdquo;))<br /></li>
<li>(&ldquo;exposed-modules&rdquo; (&ldquo;Test.QuickCheck.Exception&rdquo;)))))<br /></li>
<li>#t)<br /></li>
<li>(x (pk &rsquo;fail x #f))))<br /></li>
</ul>
<p>
actual-value: #t<br />
result: PASS<br />
</p>


<p>
SKIP: tests/pypi<br />
<code>==============</code><br />
</p>

<p>
test-name: guix-package-&gt;pypi-name, old URL style<br />
location: /home/simendsjo/code/guix/tests/pypi.scm:126<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;guix-package-&gt;pypi-name, old URL style&rdquo;<br /></li>
<li>&ldquo;psutil&rdquo;<br /></li>
<li>(guix-package-&gt;pypi-name<br /></li>
<li>(dummy-package<br /></li>
<li>&ldquo;foo&rdquo;<br /></li>
<li>(source<br /></li>
<li>(dummy-origin<br /></li>
<li>(uri &ldquo;<a href="https://pypi.org/packages/source/p/psutil/psutil-4.3.0.tar.gz">https://pypi.org/packages/source/p/psutil/psutil-4.3.0.tar.gz</a>&rdquo;))))))<br /></li>
</ul>
<p>
expected-value: &ldquo;psutil&rdquo;<br />
actual-value: &ldquo;psutil&rdquo;<br />
result: PASS<br />
</p>

<p>
test-name: guix-package-&gt;pypi-name, new URL style<br />
location: /home/simendsjo/code/guix/tests/pypi.scm:134<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;guix-package-&gt;pypi-name, new URL style&rdquo;<br /></li>
<li>&ldquo;certbot&rdquo;<br /></li>
<li>(guix-package-&gt;pypi-name<br /></li>
<li>(dummy-package<br /></li>
<li>&ldquo;foo&rdquo;<br /></li>
<li>(source<br /></li>
<li>(dummy-origin<br /></li>
<li>(uri &ldquo;<a href="https://pypi.org/packages/a2/3b/4756e6a0ceb14e084042a2a65c615d68d25621c6fd446d0fc10d14c4ce7d/certbot-0.8.1.tar.gz">https://pypi.org/packages/a2/3b/4756e6a0ceb14e084042a2a65c615d68d25621c6fd446d0fc10d14c4ce7d/certbot-0.8.1.tar.gz</a>&rdquo;))))))<br /></li>
</ul>
<p>
expected-value: &ldquo;certbot&rdquo;<br />
actual-value: &ldquo;certbot&rdquo;<br />
result: PASS<br />
</p>

<p>
test-name: guix-package-&gt;pypi-name, several URLs<br />
location: /home/simendsjo/code/guix/tests/pypi.scm:142<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;guix-package-&gt;pypi-name, several URLs&rdquo;<br /></li>
<li>&ldquo;cram&rdquo;<br /></li>
<li>(guix-package-&gt;pypi-name<br /></li>
<li>(dummy-package<br /></li>
<li>&ldquo;foo&rdquo;<br /></li>
<li>(source<br /></li>
<li>(dummy-origin<br /></li>
<li>(uri (list &ldquo;<a href="https://bitheap.org/cram/cram-0.7.tar.gz">https://bitheap.org/cram/cram-0.7.tar.gz</a>&rdquo;<br /></li>
<li>(pypi-uri &ldquo;cram&rdquo; &ldquo;0.7&rdquo;))))))))<br /></li>
</ul>
<p>
expected-value: &ldquo;cram&rdquo;<br />
actual-value: &ldquo;cram&rdquo;<br />
result: PASS<br />
</p>

<p>
test-name: specification-&gt;requirement-name<br />
location: /home/simendsjo/code/guix/tests/pypi.scm:151<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;specification-&gt;requirement-name&rdquo;<br /></li>
<li>&rsquo;(&ldquo;Fizzy&rdquo;<br /></li>
<li>&ldquo;PickyThing&rdquo;<br /></li>
<li>&ldquo;SomethingWithMarker&rdquo;<br /></li>
<li>&ldquo;requests&rdquo;<br /></li>
<li>&ldquo;pip&rdquo;)<br /></li>
<li>(map specification-&gt;requirement-name<br /></li>
<li>test-specifications))<br /></li>
</ul>
<p>
expected-value: (&ldquo;Fizzy&rdquo; &ldquo;PickyThing&rdquo; &ldquo;SomethingWithMarker&rdquo; &ldquo;requests&rdquo; &ldquo;pip&rdquo;)<br />
actual-value: (&ldquo;Fizzy&rdquo; &ldquo;PickyThing&rdquo; &ldquo;SomethingWithMarker&rdquo; &ldquo;requests&rdquo; &ldquo;pip&rdquo;)<br />
result: PASS<br />
</p>

<p>
test-name: parse-requires.txt<br />
location: /home/simendsjo/code/guix/tests/pypi.scm:155<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;parse-requires.txt&rdquo;<br /></li>
<li>(list &rsquo;(&ldquo;foo&rdquo; &ldquo;bar&rdquo;) &rsquo;(&ldquo;pytest&rdquo;))<br /></li>
<li>(mock ((ice-9 ports)<br /></li>
<li>call-with-input-file<br /></li>
<li>call-with-input-string)<br /></li>
<li>(parse-requires.txt test-requires.txt)))<br /></li>
</ul>
<p>
expected-value: ((&ldquo;foo&rdquo; &ldquo;bar&rdquo;) (&ldquo;pytest&rdquo;))<br />
actual-value: ((&ldquo;foo&rdquo; &ldquo;bar&rdquo;) (&ldquo;pytest&rdquo;))<br />
result: PASS<br />
</p>

<p>
test-name: parse-requires.txt - Beaker<br />
location: /home/simendsjo/code/guix/tests/pypi.scm:161<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;parse-requires.txt - Beaker&rdquo;<br /></li>
<li>(list &rsquo;() &rsquo;(&ldquo;Mock&rdquo; &ldquo;coverage&rdquo;))<br /></li>
<li>(mock ((ice-9 ports)<br /></li>
<li>call-with-input-file<br /></li>
<li>call-with-input-string)<br /></li>
<li>(parse-requires.txt test-requires.txt-beaker)))<br /></li>
</ul>
<p>
expected-value: (() (&ldquo;Mock&rdquo; &ldquo;coverage&rdquo;))<br />
actual-value: (() (&ldquo;Mock&rdquo; &ldquo;coverage&rdquo;))<br />
result: PASS<br />
</p>

<p>
test-name: parse-wheel-metadata, with extras<br />
location: /home/simendsjo/code/guix/tests/pypi.scm:167<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;parse-wheel-metadata, with extras&rdquo;<br /></li>
<li>(list &rsquo;(&ldquo;wrapt&rdquo; &ldquo;bar&rdquo;) &rsquo;(&ldquo;tox&rdquo; &ldquo;bumpversion&rdquo;))<br /></li>
<li>(mock ((ice-9 ports)<br /></li>
<li>call-with-input-file<br /></li>
<li>call-with-input-string)<br /></li>
<li>(parse-wheel-metadata test-metadata-with-extras)))<br /></li>
</ul>
<p>
expected-value: ((&ldquo;wrapt&rdquo; &ldquo;bar&rdquo;) (&ldquo;tox&rdquo; &ldquo;bumpversion&rdquo;))<br />
actual-value: ((&ldquo;wrapt&rdquo; &ldquo;bar&rdquo;) (&ldquo;tox&rdquo; &ldquo;bumpversion&rdquo;))<br />
result: PASS<br />
</p>

<p>
test-name: parse-wheel-metadata, with extras - Jedi<br />
location: /home/simendsjo/code/guix/tests/pypi.scm:173<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;parse-wheel-metadata, with extras - Jedi&rdquo;<br /></li>
<li>(list &rsquo;(&ldquo;parso&rdquo;) &rsquo;(&ldquo;pytest&rdquo;))<br /></li>
<li>(mock ((ice-9 ports)<br /></li>
<li>call-with-input-file<br /></li>
<li>call-with-input-string)<br /></li>
<li>(parse-wheel-metadata<br /></li>
<li>test-metadata-with-extras-jedi)))<br /></li>
</ul>
<p>
expected-value: ((&ldquo;parso&rdquo;) (&ldquo;pytest&rdquo;))<br />
actual-value: ((&ldquo;parso&rdquo;) (&ldquo;pytest&rdquo;))<br />
result: PASS<br />
</p>

<p>
test-name: pypi-&gt;guix-package, no wheel<br />
location: /home/simendsjo/code/guix/tests/pypi.scm:179<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;pypi-&gt;guix-package, no wheel&rdquo;<br /></li>
<li>(mock ((guix import utils)<br /></li>
<li>url-fetch<br /></li>
<li>(lambda (url file-name)<br /></li>
<li>(match url<br /></li>
<li>(&ldquo;<a href="https://example.com/foo-1.0.0.tar.gz">https://example.com/foo-1.0.0.tar.gz</a>&rdquo;<br /></li>
<li>(begin<br /></li>
<li>(mkdir-p &ldquo;foo-1.0.0/src/bizarre.egg-info&rdquo;)<br /></li>
<li>(with-output-to-file<br /></li>
<li>&ldquo;foo-1.0.0/src/bizarre.egg-info/requires.txt&rdquo;<br /></li>
<li>(lambda () (display test-requires.txt)))<br /></li>
<li>(parameterize<br /></li>
<li>((current-output-port (%make-void-port &ldquo;rw+&rdquo;)))<br /></li>
<li>(system* &ldquo;tar&rdquo; &ldquo;czvf&rdquo; file-name &ldquo;foo-1.0.0/&rdquo;))<br /></li>
<li>(delete-file-recursively &ldquo;foo-1.0.0&rdquo;)<br /></li>
<li>(set! test-source-hash<br /></li>
<li>(call-with-input-file file-name port-sha256))))<br /></li>
<li>(&ldquo;<a href="https://example.com/foo-1.0.0-py2.py3-none-any.whl">https://example.com/foo-1.0.0-py2.py3-none-any.whl</a>&rdquo;<br /></li>
<li>#f)<br /></li>
<li>(_ (error &ldquo;Unexpected URL: &rdquo; url)))))<br /></li>
<li>(mock ((guix http-client)<br /></li>
<li>http-fetch<br /></li>
<li>(lambda (url . rest)<br /></li>
<li>(match url<br /></li>
<li>(&ldquo;<a href="https://pypi.org/pypi/foo/json">https://pypi.org/pypi/foo/json</a>&rdquo;<br /></li>
<li>(values<br /></li>
<li>(open-input-string test-json)<br /></li>
<li>(string-length test-json)))<br /></li>
<li>(&ldquo;<a href="https://example.com/foo-1.0.0-py2.py3-none-any.whl">https://example.com/foo-1.0.0-py2.py3-none-any.whl</a>&rdquo;<br /></li>
<li>#f)<br /></li>
<li>(_ (error &ldquo;Unexpected URL: &rdquo; url)))))<br /></li>
<li>(match (pypi-&gt;guix-package &ldquo;foo&rdquo;)<br /></li>
<li>((&rsquo;package<br /></li>
<li>(&rsquo;name &ldquo;python-foo&rdquo;)<br /></li>
<li>(&rsquo;version &ldquo;1.0.0&rdquo;)<br /></li>
<li>(&rsquo;source<br /></li>
<li>(&rsquo;origin<br /></li>
<li>(&rsquo;method &rsquo;url-fetch)<br /></li>
<li>(&rsquo;uri (&rsquo;pypi-uri &ldquo;foo&rdquo; &rsquo;version))<br /></li>
<li>(&rsquo;sha256 (&rsquo;base32 (? string? hash)))))<br /></li>
<li>(&rsquo;build-system &rsquo;python-build-system)<br /></li>
<li>(&rsquo;propagated-inputs<br /></li>
<li>(&rsquo;quasiquote<br /></li>
<li>((&ldquo;python-bar&rdquo; (&rsquo;unquote &rsquo;python-bar))<br /></li>
<li>(&ldquo;python-foo&rdquo; (&rsquo;unquote &rsquo;python-foo)))))<br /></li>
<li>(&rsquo;native-inputs<br /></li>
<li>(&rsquo;quasiquote<br /></li>
<li>((&ldquo;python-pytest&rdquo; (&rsquo;unquote &rsquo;python-pytest)))))<br /></li>
<li>(&rsquo;home-page &ldquo;<a href="http://example.com">http://example.com</a>&rdquo;)<br /></li>
<li>(&rsquo;synopsis &ldquo;summary&rdquo;)<br /></li>
<li>(&rsquo;description &ldquo;summary&rdquo;)<br /></li>
<li>(&rsquo;license &rsquo;license:lgpl2.0))<br /></li>
<li>(string=?<br /></li>
<li>(bytevector-&gt;nix-base32-string test-source-hash)<br /></li>
<li>hash))<br /></li>
<li>(x (pk &rsquo;fail x #f))))))<br /></li>
</ul>
<p>
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: pypi-&gt;guix-package, wheels<br />
location: /home/simendsjo/code/guix/tests/pypi.scm:235<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;pypi-&gt;guix-package, wheels&rdquo;<br /></li>
<li>(mock ((guix import utils)<br /></li>
<li>url-fetch<br /></li>
<li>(lambda (url file-name)<br /></li>
<li>(match url<br /></li>
<li>(&ldquo;<a href="https://example.com/foo-1.0.0.tar.gz">https://example.com/foo-1.0.0.tar.gz</a>&rdquo;<br /></li>
<li>(begin<br /></li>
<li>(mkdir-p &ldquo;foo-1.0.0/foo.egg-info/&rdquo;)<br /></li>
<li>(with-output-to-file<br /></li>
<li>&ldquo;foo-1.0.0/foo.egg-info/requires.txt&rdquo;<br /></li>
<li>(lambda ()<br /></li>
<li>(display<br /></li>
<li>&ldquo;wrong data to make sure we&rsquo;re testing wheels &rdquo;)))<br /></li>
<li>(parameterize<br /></li>
<li>((current-output-port (%make-void-port &ldquo;rw+&rdquo;)))<br /></li>
<li>(system* &ldquo;tar&rdquo; &ldquo;czvf&rdquo; file-name &ldquo;foo-1.0.0/&rdquo;))<br /></li>
<li>(delete-file-recursively &ldquo;foo-1.0.0&rdquo;)<br /></li>
<li>(set! test-source-hash<br /></li>
<li>(call-with-input-file file-name port-sha256))))<br /></li>
<li>(&ldquo;<a href="https://example.com/foo-1.0.0-py2.py3-none-any.whl">https://example.com/foo-1.0.0-py2.py3-none-any.whl</a>&rdquo;<br /></li>
<li>(begin<br /></li>
<li>(mkdir &ldquo;foo-1.0.0.dist-info&rdquo;)<br /></li>
<li>(with-output-to-file<br /></li>
<li>&ldquo;foo-1.0.0.dist-info/METADATA&rdquo;<br /></li>
<li>(lambda () (display test-metadata)))<br /></li>
<li>(let ((zip-file (string-append file-name &ldquo;.zip&rdquo;)))<br /></li>
<li>(system*<br /></li>
<li>&ldquo;zip&rdquo;<br /></li>
<li>&ldquo;-q&rdquo;<br /></li>
<li>zip-file<br /></li>
<li>&ldquo;foo-1.0.0.dist-info/METADATA&rdquo;)<br /></li>
<li>(rename-file zip-file file-name))<br /></li>
<li>(delete-file-recursively &ldquo;foo-1.0.0.dist-info&rdquo;)))<br /></li>
<li>(_ (error &ldquo;Unexpected URL: &rdquo; url)))))<br /></li>
<li>(mock ((guix http-client)<br /></li>
<li>http-fetch<br /></li>
<li>(lambda (url . rest)<br /></li>
<li>(match url<br /></li>
<li>(&ldquo;<a href="https://pypi.org/pypi/foo/json">https://pypi.org/pypi/foo/json</a>&rdquo;<br /></li>
<li>(values<br /></li>
<li>(open-input-string test-json)<br /></li>
<li>(string-length test-json)))<br /></li>
<li>(&ldquo;<a href="https://example.com/foo-1.0.0-py2.py3-none-any.whl">https://example.com/foo-1.0.0-py2.py3-none-any.whl</a>&rdquo;<br /></li>
<li>#f)<br /></li>
<li>(_ (error &ldquo;Unexpected URL: &rdquo; url)))))<br /></li>
<li>(invalidate-memoization! pypi-&gt;guix-package)<br /></li>
<li>(match (pypi-&gt;guix-package &ldquo;foo&rdquo;)<br /></li>
<li>((&rsquo;package<br /></li>
<li>(&rsquo;name &ldquo;python-foo&rdquo;)<br /></li>
<li>(&rsquo;version &ldquo;1.0.0&rdquo;)<br /></li>
<li>(&rsquo;source<br /></li>
<li>(&rsquo;origin<br /></li>
<li>(&rsquo;method &rsquo;url-fetch)<br /></li>
<li>(&rsquo;uri (&rsquo;pypi-uri &ldquo;foo&rdquo; &rsquo;version))<br /></li>
<li>(&rsquo;sha256 (&rsquo;base32 (? string? hash)))))<br /></li>
<li>(&rsquo;build-system &rsquo;python-build-system)<br /></li>
<li>(&rsquo;propagated-inputs<br /></li>
<li>(&rsquo;quasiquote<br /></li>
<li>((&ldquo;python-bar&rdquo; (&rsquo;unquote &rsquo;python-bar))<br /></li>
<li>(&ldquo;python-baz&rdquo; (&rsquo;unquote &rsquo;python-baz)))))<br /></li>
<li>(&rsquo;native-inputs<br /></li>
<li>(&rsquo;quasiquote<br /></li>
<li>((&ldquo;python-pytest&rdquo; (&rsquo;unquote &rsquo;python-pytest)))))<br /></li>
<li>(&rsquo;home-page &ldquo;<a href="http://example.com">http://example.com</a>&rdquo;)<br /></li>
<li>(&rsquo;synopsis &ldquo;summary&rdquo;)<br /></li>
<li>(&rsquo;description &ldquo;summary&rdquo;)<br /></li>
<li>(&rsquo;license &rsquo;license:lgpl2.0))<br /></li>
<li>(string=?<br /></li>
<li>(bytevector-&gt;nix-base32-string test-source-hash)<br /></li>
<li>hash))<br /></li>
<li>(x (pk &rsquo;fail x #f))))))<br /></li>
</ul>
<p>
result: SKIP<br />
</p>

<p>
test-name: pypi-&gt;guix-package, no usable requirement file.<br />
location: /home/simendsjo/code/guix/tests/pypi.scm:303<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;pypi-&gt;guix-package, no usable requirement file.&rdquo;<br /></li>
<li>(mock ((guix import utils)<br /></li>
<li>url-fetch<br /></li>
<li>(lambda (url file-name)<br /></li>
<li>(match url<br /></li>
<li>(&ldquo;<a href="https://example.com/foo-1.0.0.tar.gz">https://example.com/foo-1.0.0.tar.gz</a>&rdquo;<br /></li>
<li>(mkdir-p &ldquo;foo-1.0.0/foo.egg-info/&rdquo;)<br /></li>
<li>(parameterize<br /></li>
<li>((current-output-port (%make-void-port &ldquo;rw+&rdquo;)))<br /></li>
<li>(system* &ldquo;tar&rdquo; &ldquo;czvf&rdquo; file-name &ldquo;foo-1.0.0/&rdquo;))<br /></li>
<li>(delete-file-recursively &ldquo;foo-1.0.0&rdquo;)<br /></li>
<li>(set! test-source-hash<br /></li>
<li>(call-with-input-file file-name port-sha256)))<br /></li>
<li>(&ldquo;<a href="https://example.com/foo-1.0.0-py2.py3-none-any.whl">https://example.com/foo-1.0.0-py2.py3-none-any.whl</a>&rdquo;<br /></li>
<li>#f)<br /></li>
<li>(_ (error &ldquo;Unexpected URL: &rdquo; url)))))<br /></li>
<li>(mock ((guix http-client)<br /></li>
<li>http-fetch<br /></li>
<li>(lambda (url . rest)<br /></li>
<li>(match url<br /></li>
<li>(&ldquo;<a href="https://pypi.org/pypi/foo/json">https://pypi.org/pypi/foo/json</a>&rdquo;<br /></li>
<li>(values<br /></li>
<li>(open-input-string test-json)<br /></li>
<li>(string-length test-json)))<br /></li>
<li>(&ldquo;<a href="https://example.com/foo-1.0.0-py2.py3-none-any.whl">https://example.com/foo-1.0.0-py2.py3-none-any.whl</a>&rdquo;<br /></li>
<li>#f)<br /></li>
<li>(_ (error &ldquo;Unexpected URL: &rdquo; url)))))<br /></li>
<li>(invalidate-memoization! pypi-&gt;guix-package)<br /></li>
<li>(match (pypi-&gt;guix-package &ldquo;foo&rdquo;)<br /></li>
<li>((&rsquo;package<br /></li>
<li>(&rsquo;name &ldquo;python-foo&rdquo;)<br /></li>
<li>(&rsquo;version &ldquo;1.0.0&rdquo;)<br /></li>
<li>(&rsquo;source<br /></li>
<li>(&rsquo;origin<br /></li>
<li>(&rsquo;method &rsquo;url-fetch)<br /></li>
<li>(&rsquo;uri (&rsquo;pypi-uri &ldquo;foo&rdquo; &rsquo;version))<br /></li>
<li>(&rsquo;sha256 (&rsquo;base32 (? string? hash)))))<br /></li>
<li>(&rsquo;build-system &rsquo;python-build-system)<br /></li>
<li>(&rsquo;home-page &ldquo;<a href="http://example.com">http://example.com</a>&rdquo;)<br /></li>
<li>(&rsquo;synopsis &ldquo;summary&rdquo;)<br /></li>
<li>(&rsquo;description &ldquo;summary&rdquo;)<br /></li>
<li>(&rsquo;license &rsquo;license:lgpl2.0))<br /></li>
<li>(string=?<br /></li>
<li>(bytevector-&gt;nix-base32-string test-source-hash)<br /></li>
<li>hash))<br /></li>
<li>(x (pk &rsquo;fail x #f))))))<br /></li>
</ul>
<p>
actual-value: #t<br />
result: PASS<br />
</p>

<p>
random seed for tests: 1592465056<br />
warning: Cannot guess requirements from source archive: no requires.txt file found.<br />
</p>

<p>
SKIP: tests/snix<br />
<code>==============</code><br />
</p>

<p>
test-name: factorize-uri<br />
location: /home/simendsjo/code/guix/tests/snix.scm:36<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;factorize-uri&rdquo;<br /></li>
<li>(every?<br /></li>
<li>(match-lambda<br /></li>
<li>((uri version &rsquo;-&gt; expected)<br /></li>
<li>(equal? (factorize-uri uri version) expected)))<br /></li>
<li>&rsquo;((&ldquo;<a href="http://example.com/foo.tgz">http://example.com/foo.tgz</a>&rdquo;<br /></li>
<li>&ldquo;1.0&rdquo;<br /></li>
<li>-&gt;<br /></li>
<li>&ldquo;<a href="http://example.com/foo.tgz">http://example.com/foo.tgz</a>&rdquo;)<br /></li>
<li>(&ldquo;<a href="http://example.com/foo-2.8.tgz">http://example.com/foo-2.8.tgz</a>&rdquo;<br /></li>
<li>&ldquo;2.8&rdquo;<br /></li>
<li>-&gt;<br /></li>
<li>(&ldquo;<a href="http://example.com/foo">http://example.com/foo</a>-&rdquo; version &ldquo;.tgz&rdquo;))<br /></li>
<li>(&ldquo;<a href="http://example.com/2.8/foo-2.8.tgz">http://example.com/2.8/foo-2.8.tgz</a>&rdquo;<br /></li>
<li>&ldquo;2.8&rdquo;<br /></li>
<li>-&gt;<br /></li>
<li>(&ldquo;<a href="http://example.com/">http://example.com/</a>&rdquo;<br /></li>
<li>version<br /></li>
<li>&ldquo;/foo-&rdquo;<br /></li>
<li>version<br /></li>
<li>&ldquo;.tgz&rdquo;)))))<br /></li>
</ul>
<p>
actual-value: #t<br />
result: PASS<br />
</p>

<p>
test-name: nixpkgs-&gt;guix-package<br />
location: /home/simendsjo/code/guix/tests/snix.scm:54<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-assert<br /></li>
<li>&ldquo;nixpkgs-&gt;guix-package&rdquo;<br /></li>
<li>(match (nixpkgs-&gt;guix-package<br /></li>
<li>%nixpkgs-directory<br /></li>
<li>&ldquo;guile&rdquo;)<br /></li>
<li>((&rsquo;package<br /></li>
<li>(&rsquo;name &ldquo;guile&rdquo;)<br /></li>
<li>(&rsquo;version (? string?))<br /></li>
<li>(&rsquo;source (&rsquo;origin _ &#x2026;))<br /></li>
<li>(&rsquo;build-system _)<br /></li>
<li>(&rsquo;inputs (&rsquo;quasiquote (inputs &#x2026;)))<br /></li>
<li>(&rsquo;propagated-inputs (&rsquo;quasiquote (pinputs &#x2026;)))<br /></li>
<li>(&rsquo;home-page (? string?))<br /></li>
<li>(&rsquo;synopsis (? string?))<br /></li>
<li>(&rsquo;description (? string?))<br /></li>
<li>(&rsquo;license (? symbol?)))<br /></li>
<li>(and (member &rsquo;(&ldquo;libffi&rdquo; ,libffi) inputs)<br /></li>
<li>(member &rsquo;(&ldquo;gmp&rdquo; ,gmp) pinputs)<br /></li>
<li>#t))<br /></li>
<li>(x (pk &rsquo;fail x #f))))<br /></li>
</ul>
<p>
result: SKIP<br />
</p>


<p>
SKIP: tests/upstream<br />
<code>==================</code><br />
</p>

<p>
test-name: coalesce-sources same version<br />
location: /home/simendsjo/code/guix/tests/upstream.scm:30<br />
source:<br />
</p>
<ul class="org-ul">
<li>(test-equal<br /></li>
<li>&ldquo;coalesce-sources same version&rdquo;<br /></li>
<li>(list (upstream-source<br /></li>
<li>(package &ldquo;foo&rdquo;)<br /></li>
<li>(version &ldquo;1&rdquo;)<br /></li>
<li>(urls &rsquo;(&ldquo;<a href="ftp://example.org/foo-1.tar.xz">ftp://example.org/foo-1.tar.xz</a>&rdquo;<br /></li>
<li>&ldquo;<a href="ftp://example.org/foo-1.tar.gz">ftp://example.org/foo-1.tar.gz</a>&rdquo;))<br /></li>
<li>(signature-urls<br /></li>
<li>&rsquo;(&ldquo;<a href="ftp://example.org/foo-1.tar.xz.sig">ftp://example.org/foo-1.tar.xz.sig</a>&rdquo;<br /></li>
<li>&ldquo;<a href="ftp://example.org/foo-1.tar.gz.sig">ftp://example.org/foo-1.tar.gz.sig</a>&rdquo;))))<br /></li>
<li>(coalesce-sources<br /></li>
<li>(list (upstream-source<br /></li>
<li>(package &ldquo;foo&rdquo;)<br /></li>
<li>(version &ldquo;1&rdquo;)<br /></li>
<li>(urls &rsquo;(&ldquo;<a href="ftp://example.org/foo-1.tar.gz">ftp://example.org/foo-1.tar.gz</a>&rdquo;))<br /></li>
<li>(signature-urls<br /></li>
<li>&rsquo;(&ldquo;<a href="ftp://example.org/foo-1.tar.gz.sig">ftp://example.org/foo-1.tar.gz.sig</a>&rdquo;)))<br /></li>
<li>(upstream-source<br /></li>
<li>(package &ldquo;foo&rdquo;)<br /></li>
<li>(version &ldquo;1&rdquo;)<br /></li>
<li>(urls &rsquo;(&ldquo;<a href="ftp://example.org/foo-1.tar.xz">ftp://example.org/foo-1.tar.xz</a>&rdquo;))<br /></li>
<li>(signature-urls<br /></li>
<li>&rsquo;(&ldquo;<a href="ftp://example.org/foo-1.tar.xz.sig">ftp://example.org/foo-1.tar.xz.sig</a>&rdquo;))))))<br /></li>
</ul>
<p>
result: SKIP<br />
</p>

<p>
random seed for tests: 1592461337<br />
</p>

<p>
SKIP: tests/guix-environment-container<br />
<code>====================================</code><br />
</p>

<ul class="org-ul">
<li>set -e<br /></li>
<li>guix environment &#x2013;version<br /></li>
</ul>
<p>
guix environment (GNU Guix) 1.0.1.18382-e418c<br />
Copyright (C) 2020 the Guix authors<br />
License GPLv3+: GNU GPL version 3 or later <a href="http://gnu.org/licenses/gpl.html">http://gnu.org/licenses/gpl.html</a><br />
This is free software: you are free to change and redistribute it.<br />
There is NO WARRANTY, to the extent permitted by law.<br />
</p>
<ul class="org-ul">
<li>guile -c &rsquo;((@@ (guix scripts environment) assert-container-features))&rsquo;<br /></li>
</ul>
<p>
Backtrace:<br />
In ice-9/boot-9.scm:<br />
  1736:10  8 (with-exception-handler _ _ #:unwind? _ # _)<br />
In unknown file:<br />
           7 (apply-smob/0 #&lt;thunk 7f8770fa0180&gt;)<br />
In ice-9/boot-9.scm:<br />
    718:2  6 (call-with-prompt _ _ #&lt;procedure default-prompt-handle?&gt;)<br />
In ice-9/eval.scm:<br />
    619:8  5 (_ #(#(#&lt;directory (guile-user) 7f8770c1ef00&gt;)))<br />
In ice-9/command-line.scm:<br />
   185:18  4 (_ #&lt;input: string 7f8770c18a10&gt;)<br />
In unknown file:<br />
           3 (eval ((@@ (guix scripts environment) #)) #&lt;directory (?&gt;)<br />
In ice-9/eval.scm:<br />
   182:19  2 (proc #f)<br />
   142:16  1 (compile-top-call #f (5 (guix scripts environment) . #) #)<br />
In unknown file:<br />
           0 (%resolve-variable (5 (guix scripts environment) # . #f) ?)<br />
</p>

<p>
ERROR: In procedure %resolve-variable:<br />
error: assert-container-features: unbound variable<br />
</p>
<ul class="org-ul">
<li>exit 77<br /></li>
</ul>
<p>
SKIP tests/guix-environment-container.sh (exit status: 77)<br />
</p>

<p>
FAIL: tests/guix-repl<br />
<code>===================</code><br />
</p>

<ul class="org-ul">
<li>guix repl &#x2013;version<br /></li>
</ul>
<p>
guix repl (GNU Guix) 1.0.1.18382-e418c<br />
Copyright (C) 2020 the Guix authors<br />
License GPLv3+: GNU GPL version 3 or later <a href="http://gnu.org/licenses/gpl.html">http://gnu.org/licenses/gpl.html</a><br />
This is free software: you are free to change and redistribute it.<br />
There is NO WARRANTY, to the extent permitted by law.<br />
++ mktemp -d<br />
</p>
<ul class="org-ul">
<li>test<sub>directory</sub>=/tmp/tmp.1dOO9LbJgB<br /></li>
<li>export test<sub>directory</sub><br /></li>
<li>trap &rsquo;chmod -Rf +w &ldquo;$test<sub>directory</sub>&rdquo;; rm -rf &ldquo;$test<sub>directory</sub>&rdquo;&rsquo; EXIT<br /></li>
<li>tmpfile=/tmp/tmp.1dOO9LbJgB/foo.scm<br /></li>
<li>rm -f /tmp/tmp.1dOO9LbJgB/foo.scm<br /></li>
<li>trap &rsquo;rm -f &ldquo;$tmpfile&rdquo;&rsquo; EXIT<br /></li>
<li>module<sub>dir</sub>=t-guix-repl-20146<br /></li>
<li>mkdir t-guix-repl-20146<br /></li>
<li>trap &rsquo;rm -rf &ldquo;$module<sub>dir</sub>&rdquo;&rsquo; EXIT<br /></li>
<li>cat<br /></li>
</ul>
<p>
++ guix repl /tmp/tmp.1dOO9LbJgB/foo.scm<br />
</p>
<ul class="org-ul">
<li>test &rsquo;Consider installing the &rsquo;\&rsquo;&rsquo;guile-readline&rsquo;\&rsquo;&rsquo; package for<br /></li>
</ul>
<p>
convenient interactive line editing and input history.<br />
</p>

<p>
Consider installing the &rsquo;\&rsquo;&rsquo;guile-colorized&rsquo;\&rsquo;&rsquo; package<br />
for a colorful Guile experience.<br />
</p>

<p>
coreutils&rsquo; = coreutils<br />
</p>
<ul class="org-ul">
<li>rm -rf t-guix-repl-20146<br /></li>
</ul>
<p>
FAIL tests/guix-repl.sh (exit status: 1)<br />
</p>

--==-=-=--

--=-=-=--




Acknowledgement sent to Simen Endsjø <simendsjo@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-guix@HIDDEN. Full text available.
Report forwarded to bug-guix@HIDDEN:
bug#41932; Package guix. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sat, 20 Jun 2020 11:30:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.