* Re: Move /gnu/store to another filesystem
2022-05-27 5:56 ` Giovanni Biscuolo
2022-05-27 9:34 ` Théo Maxime Tyburn
@ 2022-05-27 11:08 ` Théo Maxime Tyburn
2022-05-27 12:48 ` Giovanni Biscuolo
1 sibling, 1 reply; 16+ messages in thread
From: Théo Maxime Tyburn @ 2022-05-27 11:08 UTC (permalink / raw)
To: Giovanni Biscuolo; +Cc: guix-devel
[-- Attachment #1: Type: text/plain, Size: 236 bytes --]
Hi again,
I ran into 2 errors when running the tests after running make in
the repo. One error has to do with crate. I guess there is a dependency
missing. The other error has to do with channels. Not sure why.
Here are my test logs
[-- Attachment #2: test logs --]
[-- Type: text/plain, Size: 143666 bytes --]
==================================================
GNU Guix 1.3.0.19080-38bf6: ./test-suite.log
==================================================
# TOTAL: 2207
# PASS: 2186
# SKIP: 18
# XFAIL: 1
# FAIL: 2
# XPASS: 0
# ERROR: 0
.. contents:: :depth: 2
FAIL: tests/channels
====================
test-name: channel-instance-metadata returns default if .guix-channel does not exist
location: /data/src/guix/tests/channels.scm:117
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: /data/src/guix/tests/channels.scm:123
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: /data/src/guix/tests/channels.scm:127
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: /data/src/guix/tests/channels.scm:132
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: /data/src/guix/tests/channels.scm:138
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: /data/src/guix/tests/channels.scm:145
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: /data/src/guix/tests/channels.scm:152
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: /data/src/guix/tests/channels.scm:171
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: ((filename . "guix/channels.scm") (line . 262) (column . 19))> commit: "abcde1234" checkout: "/data/src/guix/test-tmp/store/nwds585cl9sivbcxz12b5lb7611a9zsc-test-channel-abcde12">
result: PASS
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /tmp/guix-directory.xhmL8p/.git/
[master (root-commit) 21c0010] first commit
1 file changed, 1 insertion(+)
create mode 100644 a.txt
[master 2d50a03] second commit
1 file changed, 1 insertion(+)
create mode 100644 b.scm
test-name: latest-channel-instances #:validate-pull
location: /data/src/guix/tests/channels.scm:201
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)))))))
expected-value: descendant
actual-value: descendant
result: PASS
test-name: channel-instances->manifest
location: /data/src/guix/tests/channels.scm:234
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
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /tmp/guix-directory.X6mqT5/.git/
[master (root-commit) e7978b4] the commit
1 file changed, 1 insertion(+)
create mode 100644 a.txt
test-name: channel-news, no news
location: /data/src/guix/tests/channels.scm:311
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))))))
expected-value: ()
actual-value: ()
result: PASS
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /tmp/guix-directory.7jW8Xf/.git/
[master (root-commit) 0c3914c] first commit
1 file changed, 1 insertion(+)
create mode 100644 .guix-channel
[master f4247e9] second commit
1 file changed, 1 insertion(+)
create mode 100644 src/a.txt
[master 7a1eba7] third commit
1 file changed, 1 insertion(+)
create mode 100644 news.scm
[master 69359fa] fourth commit
1 file changed, 1 insertion(+)
create mode 100644 src/b.txt
[master daa4999] fifth commit
1 file changed, 1 insertion(+), 1 deletion(-)
test-name: channel-news, one entry
location: /data/src/guix/tests/channels.scm:323
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")))))))
actual-value: #f
result: FAIL
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /tmp/guix-directory.5Uqx3x/.git/
[master (root-commit) d8da0bb] first commit
2 files changed, 2 insertions(+)
create mode 100644 .guix-channel
create mode 100644 src/a.txt
[master b2d8390] second commit
1 file changed, 1 insertion(+)
create mode 100644 news.scm
test-name: channel-news, annotated tag
location: /data/src/guix/tests/channels.scm:411
source:
+ (test-assert
+ "channel-news, annotated tag"
+ (with-temporary-git-repository
+ directory
+ `((add ".guix-channel"
+ ,(object->string
+ '(channel (version 0) (news-file "news.scm"))))
+ (add "src/a.txt" "A")
+ (commit "first commit")
+ (tag "tag-for-first-news-entry"
+ "This is an annotated tag.")
+ (add "news.scm"
+ ,(lambda (repository)
+ (let ((previous
+ (reference-name->oid repository "HEAD")))
+ (object->string
+ `(channel-news
+ (version 0)
+ (entry (tag "tag-for-first-news-entry")
+ (title (en "New file!"))
+ (body (en "Yeah, a.txt."))))))))
+ (commit "second 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")))
+ (and (null? (channel-news-for-commit channel commit1))
+ (lset= equal?
+ (map channel-news-entry-title
+ (channel-news-for-commit channel commit2))
+ '((("en" . "New file!"))))
+ (lset= string=?
+ (map channel-news-entry-tag
+ (channel-news-for-commit channel commit2))
+ (list "tag-for-first-news-entry"))
+ (lset= string=?
+ (map channel-news-entry-commit
+ (channel-news-for-commit channel commit2))
+ (list commit1)))))))
actual-value: #t
result: PASS
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /tmp/guix-directory.cxwIpE/.git/
[master (root-commit) a630402] first commit
1 file changed, 1 insertion(+)
create mode 100644 a.txt
[master 9956d6a] second commit
1 file changed, 1 insertion(+)
create mode 100644 b.scm
test-name: latest-channel-instances, missing introduction for 'guix'
location: /data/src/guix/tests/channels.scm:458
source:
+ (test-assert
+ "latest-channel-instances, missing introduction for 'guix'"
+ (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"))
+ (channel
+ (channel
+ (url (string-append "file://" directory))
+ (name 'guix))))
+ (guard (c ((formatted-message? c)
+ (->bool
+ (string-contains
+ (formatted-message-string c)
+ "introduction"))))
+ (with-store
+ store
+ (latest-channel-instances store (list channel))
+ #f))))))
actual-value: #t
result: PASS
test-name: authenticate-channel, wrong first commit signer
location: /data/src/guix/tests/channels.scm:479
source:
+ (test-equal
+ "authenticate-channel, wrong first commit signer"
+ #t
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file
+ %ed25519-2-public-key-file
+ %ed25519-2-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)))
+ (add "random" ,(random-text))
+ (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"))
+ (intro (make-channel-introduction
+ (commit-id-string commit1)
+ (openpgp-public-key-fingerprint
+ (read-openpgp-packet %ed25519-2-public-key-file))))
+ (channel
+ (channel
+ (name 'example)
+ (url (string-append "file://" directory))
+ (introduction intro))))
+ (guard (c ((formatted-message? c)
+ (and (string-contains
+ (formatted-message-string c)
+ "initial commit")
+ (equal?
+ (formatted-message-arguments c)
+ (list (oid->string (commit-id commit1))
+ (key-fingerprint %ed25519-public-key-file)
+ (key-fingerprint
+ %ed25519-2-public-key-file))))))
+ (authenticate-channel
+ channel
+ directory
+ (commit-id-string commit2)
+ #:keyring-reference-prefix
+ "")
+ 'failed))))))
result: SKIP
test-name: authenticate-channel, not a descendant of introductory commit
location: /data/src/guix/tests/channels.scm:529
source:
+ (test-equal
+ "authenticate-channel, not a descendant of introductory commit"
+ #t
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file
+ %ed25519-2-public-key-file
+ %ed25519-2-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)))
+ (branch "alternate-branch")
+ (checkout "alternate-branch")
+ (add "something.txt" ,(random-text))
+ (commit
+ "intro commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (checkout "master")
+ (add "random" ,(random-text))
+ (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"))
+ (commit0
+ (commit-lookup
+ repository
+ (reference-target
+ (branch-lookup repository "alternate-branch"))))
+ (intro (make-channel-introduction
+ (commit-id-string commit0)
+ (openpgp-public-key-fingerprint
+ (read-openpgp-packet %ed25519-public-key-file))))
+ (channel
+ (channel
+ (name 'example)
+ (url (string-append "file://" directory))
+ (introduction intro))))
+ (guard (c ((formatted-message? c)
+ (and (string-contains
+ (formatted-message-string c)
+ "not a descendant")
+ (equal?
+ (formatted-message-arguments c)
+ (list (oid->string (commit-id commit2))
+ (oid->string (commit-id commit0)))))))
+ (authenticate-channel
+ channel
+ directory
+ (commit-id-string commit2)
+ #:keyring-reference-prefix
+ "")
+ 'failed))))))
result: SKIP
test-name: authenticate-channel, .guix-authorizations
location: /data/src/guix/tests/channels.scm:587
source:
+ (test-equal
+ "authenticate-channel, .guix-authorizations"
+ #t
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file
+ %ed25519-2-public-key-file
+ %ed25519-2-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 %ed25519-2-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
+ %ed25519-2-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 (make-channel-introduction
+ (commit-id-string commit1)
+ (openpgp-public-key-fingerprint
+ (read-openpgp-packet %ed25519-public-key-file))))
+ (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
+ %ed25519-2-public-key-file))))))
+ (authenticate-channel
+ channel
+ directory
+ (commit-id-string commit3)
+ #:keyring-reference-prefix
+ "")
+ 'failed)))))))
result: SKIP
test-name: latest-channel-instances, authenticate dependency
location: /data/src/guix/tests/channels.scm:656
source:
+ (test-equal
+ "latest-channel-instances, authenticate dependency"
+ #t
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file)
+ (with-temporary-git-repository
+ dependency-directory
+ `((add ".guix-channel"
+ ,(object->string
+ '(channel
+ (version 0)
+ (keyring-reference "master"))))
+ (add ".guix-authorizations"
+ ,(object->string `(authorizations (version 0) ())))
+ (add "signer.key"
+ ,(call-with-input-file
+ %ed25519-public-key-file
+ get-string-all))
+ (commit
+ "zeroth commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (add "foo.txt" "evil")
+ (commit "unsigned commit"))
+ (with-repository
+ dependency-directory
+ dependency
+ (let* ((commit0 (find-commit dependency "zeroth"))
+ (commit1 (find-commit dependency "unsigned"))
+ (intro `(channel-introduction
+ (version 0)
+ (commit ,(commit-id-string commit0))
+ (signer
+ ,(openpgp-format-fingerprint
+ (openpgp-public-key-fingerprint
+ (read-openpgp-packet
+ %ed25519-public-key-file)))))))
+ (with-temporary-git-repository
+ directory
+ `((add ".guix-channel"
+ ,(object->string
+ `(channel
+ (version 0)
+ (dependencies
+ (channel
+ (name test-channel)
+ (url ,dependency-directory)
+ (introduction ,intro))))))
+ (commit "single commit"))
+ (let ((channel (channel (name 'test) (url directory))))
+ (guard (c ((unsigned-commit-error? c)
+ (oid=? (git-authentication-error-commit c)
+ (commit-id commit1))))
+ (with-store
+ store
+ (latest-channel-instances store (list channel))
+ 'failed)))))))))
result: SKIP
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.xhmL8p'...
Updating channel 'guix' from Git repository at 'file:///tmp/guix-directory.cxwIpE'...
SKIP: tests/cpio
================
test-name: file->cpio-header + write-cpio-header + read-cpio-header
location: /data/src/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: /data/src/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
FAIL: tests/crate
=================
test-name: guix-package->crate-name
location: /data/src/guix/tests/crate.scm:326
source:
+ (test-equal
+ "guix-package->crate-name"
+ "rustc-serialize"
+ (guix-package->crate-name
+ (dummy-package
+ "rust-rustc-serialize"
+ (source
+ (dummy-origin
+ (uri (crate-uri "rustc-serialize" "1.0")))))))
expected-value: "rustc-serialize"
actual-value: "rustc-serialize"
result: PASS
test-name: crate->guix-package
location: /data/src/guix/tests/crate.scm:335
source:
+ (test-assert
+ "crate->guix-package"
+ (mock ((guix http-client)
+ http-fetch
+ (lambda (url . rest)
+ (match url
+ ("https://crates.io/api/v1/crates/foo"
+ (open-input-string test-foo-crate))
+ ("https://crates.io/api/v1/crates/foo/1.0.3/download"
+ (set! test-source-hash
+ (bytevector->nix-base32-string
+ (sha256
+ (string->bytevector "empty file\n" "utf-8"))))
+ (open-input-string "empty file\n"))
+ ("https://crates.io/api/v1/crates/foo/1.0.3/dependencies"
+ (open-input-string test-foo-dependencies))
+ ("https://crates.io/api/v1/crates/leaf-alice"
+ (open-input-string test-leaf-alice-crate))
+ ("https://crates.io/api/v1/crates/leaf-alice/0.7.5/download"
+ (set! test-source-hash
+ (bytevector->nix-base32-string
+ (sha256
+ (string->bytevector "empty file\n" "utf-8"))))
+ (open-input-string "empty file\n"))
+ ("https://crates.io/api/v1/crates/leaf-alice/0.7.5/dependencies"
+ (open-input-string test-leaf-alice-dependencies))
+ (_ (error "Unexpected URL: " url)))))
+ (match (crate->guix-package "foo")
+ ((define-public 'rust-foo-1
+ (package
+ (name "rust-foo")
+ (version "1.0.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "foo" 'version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256 (base32 (? string? hash)))))
+ (build-system 'cargo-build-system)
+ (arguments
+ ('quasiquote
+ (#:skip-build?
+ #t
+ #:cargo-inputs
+ (("rust-leaf-alice"
+ ('unquote 'rust-leaf-alice-0.7))))))
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
+ (license (list license:expat license:asl2.0))))
+ (string=? test-source-hash hash))
+ (x (pk 'fail x #f)))))
actual-value: #t
result: PASS
test-name: cargo-recursive-import
location: /data/src/guix/tests/crate.scm:388
source:
+ (test-assert
+ "cargo-recursive-import"
+ (mock ((guix http-client)
+ http-fetch
+ (lambda (url . rest)
+ (match url
+ ("https://crates.io/api/v1/crates/root"
+ (open-input-string test-root-crate))
+ ("https://crates.io/api/v1/crates/root/1.0.4/download"
+ (set! test-source-hash
+ (bytevector->nix-base32-string
+ (sha256
+ (string->bytevector "empty file\n" "utf-8"))))
+ (open-input-string "empty file\n"))
+ ("https://crates.io/api/v1/crates/root/1.0.4/dependencies"
+ (open-input-string test-root-dependencies))
+ ("https://crates.io/api/v1/crates/intermediate-a"
+ (open-input-string test-intermediate-a-crate))
+ ("https://crates.io/api/v1/crates/intermediate-a/1.0.42/download"
+ (set! test-source-hash
+ (bytevector->nix-base32-string
+ (sha256
+ (string->bytevector "empty file\n" "utf-8"))))
+ (open-input-string "empty file\n"))
+ ("https://crates.io/api/v1/crates/intermediate-a/1.0.42/dependencies"
+ (open-input-string
+ test-intermediate-a-dependencies))
+ ("https://crates.io/api/v1/crates/intermediate-b"
+ (open-input-string test-intermediate-b-crate))
+ ("https://crates.io/api/v1/crates/intermediate-b/1.2.3/download"
+ (set! test-source-hash
+ (bytevector->nix-base32-string
+ (sha256
+ (string->bytevector "empty file\n" "utf-8"))))
+ (open-input-string "empty file\n"))
+ ("https://crates.io/api/v1/crates/intermediate-b/1.2.3/dependencies"
+ (open-input-string
+ test-intermediate-b-dependencies))
+ ("https://crates.io/api/v1/crates/leaf-alice"
+ (open-input-string test-leaf-alice-crate))
+ ("https://crates.io/api/v1/crates/leaf-alice/0.7.5/download"
+ (set! test-source-hash
+ (bytevector->nix-base32-string
+ (sha256
+ (string->bytevector "empty file\n" "utf-8"))))
+ (open-input-string "empty file\n"))
+ ("https://crates.io/api/v1/crates/leaf-alice/0.7.5/dependencies"
+ (open-input-string test-leaf-alice-dependencies))
+ ("https://crates.io/api/v1/crates/leaf-bob"
+ (open-input-string test-leaf-bob-crate))
+ ("https://crates.io/api/v1/crates/leaf-bob/3.0.1/download"
+ (set! test-source-hash
+ (bytevector->nix-base32-string
+ (sha256
+ (string->bytevector "empty file\n" "utf-8"))))
+ (open-input-string "empty file\n"))
+ ("https://crates.io/api/v1/crates/leaf-bob/3.0.1/dependencies"
+ (open-input-string test-leaf-bob-dependencies))
+ (_ (error "Unexpected URL: " url)))))
+ (match (crate-recursive-import "root")
+ (((define-public 'rust-leaf-alice-0.7
+ (package
+ (name "rust-leaf-alice")
+ (version "0.7.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "leaf-alice" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256 (base32 (? string? hash)))))
+ (build-system cargo-build-system)
+ (arguments ('quasiquote (#:skip-build? #t)))
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
+ (license (list license:expat license:asl2.0))))
+ (define-public 'rust-leaf-bob-3
+ (package
+ (name "rust-leaf-bob")
+ (version "3.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "leaf-bob" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256 (base32 (? string? hash)))))
+ (build-system cargo-build-system)
+ (arguments ('quasiquote (#:skip-build? #t)))
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
+ (license (list license:expat license:asl2.0))))
+ (define-public 'rust-intermediate-b-1
+ (package
+ (name "rust-intermediate-b")
+ (version "1.2.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "intermediate-b" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256 (base32 (? string? hash)))))
+ (build-system cargo-build-system)
+ (arguments
+ ('quasiquote
+ (#:skip-build?
+ #t
+ #:cargo-inputs
+ (("rust-leaf-bob" ('unquote rust-leaf-bob-3))))))
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
+ (license (list license:expat license:asl2.0))))
+ (define-public 'rust-intermediate-a-1
+ (package
+ (name "rust-intermediate-a")
+ (version "1.0.42")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "intermediate-a" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256 (base32 (? string? hash)))))
+ (build-system cargo-build-system)
+ (arguments
+ ('quasiquote
+ (#:skip-build?
+ #t
+ #:cargo-inputs
+ (("rust-intermediate-b"
+ ('unquote rust-intermediate-b-1))
+ ("rust-leaf-alice"
+ ('unquote 'rust-leaf-alice-0.7))
+ ("rust-leaf-bob" ('unquote rust-leaf-bob-3))))))
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
+ (license (list license:expat license:asl2.0))))
+ (define-public 'rust-root-1
+ (package
+ (name "rust-root")
+ (version "1.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "root" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256 (base32 (? string? hash)))))
+ (build-system cargo-build-system)
+ (arguments
+ ('quasiquote
+ (#:cargo-inputs
+ (("rust-intermediate-a"
+ ('unquote rust-intermediate-a-1))
+ ("rust-intermediate-b"
+ ('unquote rust-intermediate-b-1))
+ ("rust-leaf-alice"
+ ('unquote 'rust-leaf-alice-0.7))
+ ("rust-leaf-bob" ('unquote rust-leaf-bob-3))))))
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
+ (license (list license:expat license:asl2.0)))))
+ #t)
+ (x (pk 'fail x #f)))))
actual-value: #t
result: PASS
test-name: licenses: MIT OR Apache-2.0
location: /data/src/guix/tests/crate.scm:562
source:
+ (test-equal
+ "licenses: MIT OR Apache-2.0"
+ '(license:expat license:asl2.0)
+ (string->license "MIT OR Apache-2.0"))
expected-value: (license:expat license:asl2.0)
actual-value: (license:expat license:asl2.0)
result: PASS
test-name: licenses: Apache-2.0 / MIT
location: /data/src/guix/tests/crate.scm:566
source:
+ (test-equal
+ "licenses: Apache-2.0 / MIT"
+ '(license:asl2.0 license:expat)
+ (string->license "Apache-2.0 / MIT"))
expected-value: (license:asl2.0 license:expat)
actual-value: (license:asl2.0 license:expat)
result: PASS
test-name: licenses: Apache-2.0 WITH LLVM-exception
location: /data/src/guix/tests/crate.scm:570
source:
+ (test-equal
+ "licenses: Apache-2.0 WITH LLVM-exception"
+ '(license:asl2.0 unknown-license!)
+ (string->license
+ "Apache-2.0 WITH LLVM-exception"))
expected-value: (license:asl2.0 unknown-license!)
actual-value: (license:asl2.0 unknown-license!)
result: PASS
test-name: licenses: MIT/Apache-2.0 AND BSD-2-Clause
location: /data/src/guix/tests/crate.scm:574
source:
+ (test-equal
+ "licenses: MIT/Apache-2.0 AND BSD-2-Clause"
+ '(license:expat license:asl2.0 unknown-license!)
+ (string->license
+ "MIT/Apache-2.0 AND BSD-2-Clause"))
expected-value: (license:expat license:asl2.0 unknown-license!)
actual-value: (license:expat license:asl2.0 license:bsd-2)
result: FAIL
test-name: licenses: MIT/Apache-2.0
location: /data/src/guix/tests/crate.scm:578
source:
+ (test-equal
+ "licenses: MIT/Apache-2.0"
+ '(license:expat license:asl2.0)
+ (string->license "MIT/Apache-2.0"))
expected-value: (license:expat license:asl2.0)
actual-value: (license:expat license:asl2.0)
result: PASS
test-name: self-test: rust-docopt 0.8.x is gone, please adjust the test case
location: /data/src/guix/tests/crate.scm:619
source:
+ (test-assert
+ "self-test: rust-docopt 0.8.x is gone, please adjust the test case"
+ (not (null? (find-packages-by-name "rust-docopt" "0.8"))))
actual-value: #t
result: PASS
test-name: cargo-recursive-import-hoors-existing-packages
location: /data/src/guix/tests/crate.scm:623
source:
+ (test-assert
+ "cargo-recursive-import-hoors-existing-packages"
+ (mock ((guix http-client)
+ http-fetch
+ (lambda (url . rest)
+ (match url
+ ("https://crates.io/api/v1/crates/doctool"
+ (open-input-string test-doctool-crate))
+ ("https://crates.io/api/v1/crates/doctool/2.2.2/download"
+ (set! test-source-hash
+ (bytevector->nix-base32-string
+ (sha256
+ (string->bytevector "empty file\n" "utf-8"))))
+ (open-input-string "empty file\n"))
+ ("https://crates.io/api/v1/crates/doctool/2.2.2/dependencies"
+ (open-input-string test-doctool-dependencies))
+ (_ (error "Unexpected URL: " url)))))
+ (match (crate-recursive-import "doctool")
+ (((define-public 'rust-doctool-2
+ (package
+ (name "rust-doctool")
+ (version "2.2.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "doctool" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256 (base32 (? string? hash)))))
+ (build-system cargo-build-system)
+ (arguments
+ ('quasiquote
+ (#:cargo-inputs
+ (("rust-docopt" ('unquote 'rust-docopt-0.8))))))
+ (home-page "http://example.com")
+ (synopsis "summary")
+ (description "summary")
+ (license (list license:expat license:asl2.0)))))
+ #t)
+ (x (pk 'fail x #f)))))
actual-value: #t
result: PASS
SKIP: tests/git-authenticate
============================
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /tmp/guix-directory.dpSDkE/.git/
[master (root-commit) 08f3bdb] first commit
1 file changed, 1 insertion(+)
create mode 100644 a.txt
[master 0865cb5] second commit
1 file changed, 1 insertion(+)
create mode 100644 b.txt
test-name: unsigned commits
location: /data/src/guix/tests/git-authenticate.scm:48
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)))))
actual-value: #t
result: PASS
test-name: signed commits, SHA1 signature
location: /data/src/guix/tests/git-authenticate.scm:65
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))))))
result: SKIP
test-name: signed commits, default authorizations
location: /data/src/guix/tests/git-authenticate.scm:94
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: /data/src/guix/tests/git-authenticate.scm:118
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: /data/src/guix/tests/git-authenticate.scm:166
source:
+ (test-assert
+ "signed commits, .guix-authorizations, unauthorized merge"
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file
+ %ed25519-2-public-key-file
+ %ed25519-2-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
+ %ed25519-2-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 %ed25519-2-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 %ed25519-2-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: /data/src/guix/tests/git-authenticate.scm:235
source:
+ (test-assert
+ "signed commits, .guix-authorizations, authorized merge"
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file
+ %ed25519-2-public-key-file
+ %ed25519-2-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
+ %ed25519-2-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 %ed25519-2-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 %ed25519-2-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 %ed25519-2-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: /data/src/guix/tests/git-authenticate.scm:295
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
test-name: introductory commit, valid signature
location: /data/src/guix/tests/git-authenticate.scm:336
source:
+ (test-assert
+ "introductory commit, valid signature"
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file)
+ (let ((fingerprint
+ (key-fingerprint %ed25519-public-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" (signer ,fingerprint))
+ (add "a.txt" "A")
+ (commit "first commit" (signer ,fingerprint)))
+ (with-repository
+ directory
+ repository
+ (let ((commit0 (find-commit repository "zero"))
+ (commit1 (find-commit repository "first")))
+ (authenticate-repository
+ repository
+ (commit-id commit0)
+ (openpgp-fingerprint fingerprint)
+ #:keyring-reference
+ "master"
+ #:cache-key
+ (random-text))))))))
result: SKIP
test-name: introductory commit, missing signature
location: /data/src/guix/tests/git-authenticate.scm:363
source:
+ (test-equal
+ "introductory commit, missing signature"
+ 'intro-lacks-signature
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file)
+ (let ((fingerprint
+ (key-fingerprint %ed25519-public-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 ,fingerprint)))
+ (with-repository
+ directory
+ repository
+ (let ((commit0 (find-commit repository "zero")))
+ (guard (c ((formatted-message? c)
+ (and (equal?
+ (formatted-message-arguments c)
+ (list (oid->string (commit-id commit0))))
+ 'intro-lacks-signature)))
+ (authenticate-repository
+ repository
+ (commit-id commit0)
+ (openpgp-fingerprint fingerprint)
+ #:keyring-reference
+ "master"
+ #:cache-key
+ (random-text)))))))))
result: SKIP
test-name: introductory commit, wrong signature
location: /data/src/guix/tests/git-authenticate.scm:395
source:
+ (test-equal
+ "introductory commit, wrong signature"
+ 'wrong-intro-signing-key
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file
+ %ed25519-2-public-key-file
+ %ed25519-2-secret-key-file)
+ (let ((fingerprint
+ (key-fingerprint %ed25519-public-key-file))
+ (wrong-fingerprint
+ (key-fingerprint %ed25519-2-public-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
+ %ed25519-2-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"
+ (signer ,wrong-fingerprint))
+ (add "a.txt" "A")
+ (commit "first commit" (signer ,fingerprint)))
+ (with-repository
+ directory
+ repository
+ (let ((commit0 (find-commit repository "zero"))
+ (commit1 (find-commit repository "first")))
+ (guard (c ((formatted-message? c)
+ (and (equal?
+ (formatted-message-arguments c)
+ (list (oid->string (commit-id commit0))
+ wrong-fingerprint
+ fingerprint))
+ 'wrong-intro-signing-key)))
+ (authenticate-repository
+ repository
+ (commit-id commit0)
+ (openpgp-fingerprint fingerprint)
+ #:keyring-reference
+ "master"
+ #:cache-key
+ (random-text)))))))))
result: SKIP
test-name: authenticate-repository, target not a descendant of intro
location: /data/src/guix/tests/git-authenticate.scm:435
source:
+ (test-equal
+ "authenticate-repository, target not a descendant of intro"
+ 'target-commit-not-a-descendant-of-intro
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file)
+ (let ((fingerprint
+ (key-fingerprint %ed25519-public-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" (signer ,fingerprint))
+ (branch "pre-intro-branch")
+ (checkout "pre-intro-branch")
+ (add "b.txt" "B")
+ (commit "alternate commit" (signer ,fingerprint))
+ (checkout "master")
+ (add "a.txt" "A")
+ (commit "first commit" (signer ,fingerprint))
+ (add "c.txt" "C")
+ (commit "second commit" (signer ,fingerprint)))
+ (with-repository
+ directory
+ repository
+ (let ((commit1 (find-commit repository "first"))
+ (commit-alt
+ (commit-lookup
+ repository
+ (reference-target
+ (branch-lookup repository "pre-intro-branch")))))
+ (guard (c ((formatted-message? c)
+ (and (equal?
+ (formatted-message-arguments c)
+ (list (oid->string (commit-id commit-alt))
+ (oid->string (commit-id commit1))))
+ 'target-commit-not-a-descendant-of-intro)))
+ (authenticate-repository
+ repository
+ (commit-id commit1)
+ (openpgp-fingerprint fingerprint)
+ #:end
+ (commit-id commit-alt)
+ #:keyring-reference
+ "master"
+ #:cache-key
+ (random-text)))))))))
result: SKIP
SKIP: tests/hackage
===================
Starting download of /tmp/guix-file.w9P7Co
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"
Starting download of /tmp/guix-file.w9P7Co
From https://web.archive.org/web/20220527122906/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20220527122906/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.w9P7Co...
could not find its Disarchive specification
failed to download "/tmp/guix-file.w9P7Co" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test 1
location: /data/src/guix/tests/hackage.scm:189
source:
+ (test-assert
+ "hackage->guix-package test 1"
+ (eval-test-with-cabal test-cabal-1 match-ghc-foo))
actual-value: #t
result: PASS
Starting download of /tmp/guix-file.MpO2s4
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"
Starting download of /tmp/guix-file.MpO2s4
From https://web.archive.org/web/20220527122910/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20220527122910/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.MpO2s4...
could not find its Disarchive specification
failed to download "/tmp/guix-file.MpO2s4" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test 2
location: /data/src/guix/tests/hackage.scm:192
source:
+ (test-assert
+ "hackage->guix-package test 2"
+ (eval-test-with-cabal test-cabal-2 match-ghc-foo))
actual-value: #t
result: PASS
Starting download of /tmp/guix-file.4Nf5S1
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"
Starting download of /tmp/guix-file.4Nf5S1
From https://web.archive.org/web/20220527122912/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20220527122912/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.4Nf5S1...
could not find its Disarchive specification
failed to download "/tmp/guix-file.4Nf5S1" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test 3
location: /data/src/guix/tests/hackage.scm:195
source:
+ (test-assert
+ "hackage->guix-package test 3"
+ (eval-test-with-cabal
+ test-cabal-3
+ match-ghc-foo
+ #:cabal-environment
+ '(("impl" . "ghc-7.8"))))
actual-value: #t
result: PASS
Starting download of /tmp/guix-file.XoTojc
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"
Starting download of /tmp/guix-file.XoTojc
From https://web.archive.org/web/20220527122913/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20220527122913/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.XoTojc...
could not find its Disarchive specification
failed to download "/tmp/guix-file.XoTojc" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test 4
location: /data/src/guix/tests/hackage.scm:199
source:
+ (test-assert
+ "hackage->guix-package test 4"
+ (eval-test-with-cabal
+ test-cabal-4
+ match-ghc-foo
+ #:cabal-environment
+ '(("impl" . "ghc-7.8"))))
actual-value: #t
result: PASS
Starting download of /tmp/guix-file.oYLjYo
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"
Starting download of /tmp/guix-file.oYLjYo
From https://web.archive.org/web/20220527122915/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20220527122915/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.oYLjYo...
could not find its Disarchive specification
failed to download "/tmp/guix-file.oYLjYo" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test 5
location: /data/src/guix/tests/hackage.scm:203
source:
+ (test-assert
+ "hackage->guix-package test 5"
+ (eval-test-with-cabal
+ test-cabal-5
+ match-ghc-foo
+ #:cabal-environment
+ '(("impl" . "ghc-7.8"))))
actual-value: #t
result: PASS
Starting download of /tmp/guix-file.2dXblr
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"
Starting download of /tmp/guix-file.2dXblr
From https://web.archive.org/web/20220527122916/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20220527122916/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.2dXblr...
could not find its Disarchive specification
failed to download "/tmp/guix-file.2dXblr" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test 6
location: /data/src/guix/tests/hackage.scm:226
source:
+ (test-assert
+ "hackage->guix-package test 6"
+ (eval-test-with-cabal
+ test-cabal-6
+ match-ghc-foo-6))
actual-value: #t
result: PASS
Starting download of /tmp/guix-file.Za5ehc
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"
Starting download of /tmp/guix-file.Za5ehc
From https://web.archive.org/web/20220527122917/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20220527122917/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.Za5ehc...
could not find its Disarchive specification
failed to download "/tmp/guix-file.Za5ehc" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test multiline desc (layout)
location: /data/src/guix/tests/hackage.scm:244
source:
+ (test-assert
+ "hackage->guix-package test multiline desc (layout)"
+ (eval-test-with-cabal
+ test-cabal-multiline-layout
+ match-ghc-foo))
actual-value: #t
result: PASS
Starting download of /tmp/guix-file.ycm4Gn
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"
Starting download of /tmp/guix-file.ycm4Gn
From https://web.archive.org/web/20220527122918/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20220527122918/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.ycm4Gn...
could not find its Disarchive specification
failed to download "/tmp/guix-file.ycm4Gn" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test multiline desc (braced)
location: /data/src/guix/tests/hackage.scm:264
source:
+ (test-assert
+ "hackage->guix-package test multiline desc (braced)"
+ (eval-test-with-cabal
+ test-cabal-multiline-braced
+ match-ghc-foo))
actual-value: #t
result: PASS
Syntax error: unexpected token : (ghc-options (-Wall)) (at line 11, column 2)
Syntax error: unexpected end of input
;;; (fail #f #f)
test-name: hackage->guix-package test mixed layout
location: /data/src/guix/tests/hackage.scm:284
source:
+ (test-assert
+ "hackage->guix-package test mixed layout"
+ (eval-test-with-cabal
+ test-cabal-mixed-layout
+ match-ghc-foo))
actual-value: #f
result: XFAIL
Starting download of /tmp/guix-file.1G42Pv
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"
Starting download of /tmp/guix-file.1G42Pv
From https://web.archive.org/web/20220527122920/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20220527122920/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.1G42Pv...
could not find its Disarchive specification
failed to download "/tmp/guix-file.1G42Pv" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test flag executable
location: /data/src/guix/tests/hackage.scm:309
source:
+ (test-assert
+ "hackage->guix-package test flag executable"
+ (eval-test-with-cabal
+ test-cabal-flag-executable
+ match-ghc-foo))
actual-value: #t
result: PASS
Starting download of /tmp/guix-file.pI2PJT
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"
Starting download of /tmp/guix-file.pI2PJT
From https://web.archive.org/web/20220527122921/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20220527122921/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.pI2PJT...
could not find its Disarchive specification
failed to download "/tmp/guix-file.pI2PJT" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test cabal revision
location: /data/src/guix/tests/hackage.scm:349
source:
+ (test-assert
+ "hackage->guix-package test cabal revision"
+ (eval-test-with-cabal
+ test-cabal-revision
+ match-ghc-foo-revision))
actual-value: #t
result: PASS
test-name: read-cabal test 1
location: /data/src/guix/tests/hackage.scm:352
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
Starting download of /tmp/guix-file.oeodD8
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"
Starting download of /tmp/guix-file.oeodD8
From https://web.archive.org/web/20220527122922/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20220527122922/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.oeodD8...
could not find its Disarchive specification
failed to download "/tmp/guix-file.oeodD8" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test cabal import
location: /data/src/guix/tests/hackage.scm:406
source:
+ (test-assert
+ "hackage->guix-package test cabal import"
+ (eval-test-with-cabal
+ test-cabal-import
+ match-ghc-foo-import))
actual-value: #t
result: PASS
SKIP: tests/inferior
====================
test-name: open-inferior
location: /data/src/guix/tests/inferior.scm:54
source:
+ (test-equal
+ "open-inferior"
+ '(42 #t)
+ (let ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix")))
+ (and (inferior? inferior)
+ (let ((a (inferior-eval '(apply * '(6 7)) inferior))
+ (b (inferior-eval
+ '(@ (gnu packages base) coreutils)
+ inferior)))
+ (close-inferior inferior)
+ (list a (inferior-object? b))))))
expected-value: (42 #t)
actual-value: (42 #t)
result: PASS
test-name: close-inferior
location: /data/src/guix/tests/inferior.scm:65
source:
+ (test-equal
+ "close-inferior"
+ '((hello) (world))
+ (let* ((inferior1
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix"))
+ (lst1 (inferior-eval '(list 'hello) inferior1))
+ (inferior2
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix"))
+ (lst2 (inferior-eval '(list 'world) inferior2)))
+ (close-inferior inferior1)
+ (close-inferior inferior2)
+ (list lst1 lst2)))
expected-value: ((hello) (world))
actual-value: ((hello) (world))
result: PASS
test-name: &inferior-exception
location: /data/src/guix/tests/inferior.scm:79
source:
+ (test-equal
+ "&inferior-exception"
+ '(a b c d)
+ (let ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix")))
+ (guard (c ((inferior-exception? c)
+ (close-inferior inferior)
+ (and (eq? inferior (inferior-exception-inferior c))
+ (match (inferior-exception-stack c)
+ (((_ (files lines columns)) ..1)
+ (member "guix/repl.scm" files)))
+ (inferior-exception-arguments c))))
+ (inferior-eval '(throw 'a 'b 'c 'd) inferior)
+ 'badness)))
expected-value: (a b c d)
actual-value: (a b c d)
result: PASS
test-name: &inferior-exception, legacy mode
location: /data/src/guix/tests/inferior.scm:93
source:
+ (test-equal
+ "&inferior-exception, legacy mode"
+ '(a b c d)
+ (let ((inferior (open-inferior %top-builddir)))
+ (guard (c ((inferior-exception? c)
+ (close-inferior inferior)
+ (and (eq? inferior (inferior-exception-inferior c))
+ (inferior-exception-arguments c))))
+ (inferior-eval '(throw 'a 'b 'c 'd) inferior)
+ 'badness)))
expected-value: (a b c d)
actual-value: (a b c d)
result: PASS
test-name: inferior-packages
location: /data/src/guix/tests/inferior.scm:105
source:
+ (test-equal
+ "inferior-packages"
+ (take (sort (fold-packages
+ (lambda (package lst)
+ (cons (list (package-name package)
+ (package-version package)
+ (package-home-page package)
+ (package-location package))
+ lst))
+ '())
+ (lambda (x y) (string<? (car x) (car y))))
+ 10)
+ (let* ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix"))
+ (packages (inferior-packages inferior)))
+ (and (every string?
+ (map inferior-package-synopsis packages))
+ (let ()
+ (define result
+ (take (sort (map (lambda (package)
+ (list (inferior-package-name package)
+ (inferior-package-version package)
+ (inferior-package-home-page package)
+ (inferior-package-location package)))
+ packages)
+ (lambda (x y) (string<? (car x) (car y))))
+ 10))
+ (close-inferior inferior)
+ result))))
expected-value: (("0ad" "0.0.25b-alpha" "https://play0ad.com" #<<location> file: "gnu/packages/games.scm" line: 6666 column: 2>) ("0ad-data" "0.0.25b-alpha" "https://play0ad.com" #<<location> file: "gnu/packages/games.scm" line: 6619 column: 2>) ("0xffff" "0.9" "https://github.com/pali/0xFFFF" #<<location> file: "gnu/packages/flashing-tools.scm" line: 106 column: 2>) ("389-ds-base" "1.4.4.17" "https://directory.fedoraproject.org" #<<location> file: "gnu/packages/openldap.scm" line: 245 column: 2>) ("4dtris" "0.4.3" "https://launchpad.net/4dtris/" #<<location> file: "gnu/packages/games.scm" line: 8713 column: 2>) ("4store" "1.1.6" "https://github.com/4store/4store" #<<location> file: "gnu/packages/databases.scm" line: 180 column: 2>) ("4ti2" "1.6.9" "http://www.4ti2.de/" #<<location> file: "gnu/packages/maths.scm" line: 692 column: 2>) ("7kaa" "2.15.4p1" "https://7kfans.com/" #<<location> file: "gnu/packages/games.scm" line: 12089 column: 2>) ("a2jmidid" "9" "https://github.com/jackaudio/a2jmidid" #<<location> file: "gnu/packages/music.scm" line: 6746 column: 2>) ("a2ps" "4.14" "https://www.gnu.org/software/a2ps/" #<<location> file: "gnu/packages/pretty-print.scm" line: 51 column: 2>))
actual-value: (("0ad" "0.0.25b-alpha" "https://play0ad.com" #<<location> file: "gnu/packages/games.scm" line: 6666 column: 2>) ("0ad-data" "0.0.25b-alpha" "https://play0ad.com" #<<location> file: "gnu/packages/games.scm" line: 6619 column: 2>) ("0xffff" "0.9" "https://github.com/pali/0xFFFF" #<<location> file: "gnu/packages/flashing-tools.scm" line: 106 column: 2>) ("389-ds-base" "1.4.4.17" "https://directory.fedoraproject.org" #<<location> file: "gnu/packages/openldap.scm" line: 245 column: 2>) ("4dtris" "0.4.3" "https://launchpad.net/4dtris/" #<<location> file: "gnu/packages/games.scm" line: 8713 column: 2>) ("4store" "1.1.6" "https://github.com/4store/4store" #<<location> file: "gnu/packages/databases.scm" line: 180 column: 2>) ("4ti2" "1.6.9" "http://www.4ti2.de/" #<<location> file: "gnu/packages/maths.scm" line: 692 column: 2>) ("7kaa" "2.15.4p1" "https://7kfans.com/" #<<location> file: "gnu/packages/games.scm" line: 12089 column: 2>) ("a2jmidid" "9" "https://github.com/jackaudio/a2jmidid" #<<location> file: "gnu/packages/music.scm" line: 6746 column: 2>) ("a2ps" "4.14" "https://www.gnu.org/software/a2ps/" #<<location> file: "gnu/packages/pretty-print.scm" line: 51 column: 2>))
result: PASS
test-name: inferior-available-packages
location: /data/src/guix/tests/inferior.scm:134
source:
+ (test-equal
+ "inferior-available-packages"
+ (take (sort (fold-available-packages
+ (lambda* (name
+ version
+ result
+ #:key
+ supported?
+ deprecated?
+ #:allow-other-keys)
+ (if (and supported? (not deprecated?))
+ (alist-cons name version result)
+ result))
+ '())
+ (lambda (x y) (string<? (car x) (car y))))
+ 10)
+ (let* ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix"))
+ (packages (inferior-available-packages inferior)))
+ (close-inferior inferior)
+ (take (sort packages
+ (lambda (x y) (string<? (car x) (car y))))
+ 10)))
expected-value: (("0ad" . "0.0.25b-alpha") ("0ad-data" . "0.0.25b-alpha") ("0xffff" . "0.9") ("389-ds-base" . "1.4.4.17") ("4dtris" . "0.4.3") ("4store" . "1.1.6") ("4ti2" . "1.6.9") ("7kaa" . "2.15.4p1") ("a2jmidid" . "9") ("a2ps" . "4.14"))
actual-value: (("0ad" . "0.0.25b-alpha") ("0ad-data" . "0.0.25b-alpha") ("0xffff" . "0.9") ("389-ds-base" . "1.4.4.17") ("4dtris" . "0.4.3") ("4store" . "1.1.6") ("4ti2" . "1.6.9") ("7kaa" . "2.15.4p1") ("a2jmidid" . "9") ("a2ps" . "4.14"))
result: PASS
test-name: lookup-inferior-packages
location: /data/src/guix/tests/inferior.scm:154
source:
+ (test-equal
+ "lookup-inferior-packages"
+ (let ((->list
+ (lambda (package)
+ (list (package-name package)
+ (package-version package)
+ (package-location package)))))
+ (list (map ->list (find-packages-by-name "guile" #f))
+ (map ->list
+ (find-packages-by-name "guile" "2.2"))))
+ (let* ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix"))
+ (->list
+ (lambda (package)
+ (list (inferior-package-name package)
+ (inferior-package-version package)
+ (inferior-package-location package))))
+ (lst1 (map ->list
+ (lookup-inferior-packages inferior "guile")))
+ (lst2 (map ->list
+ (lookup-inferior-packages inferior "guile" "2.2"))))
+ (close-inferior inferior)
+ (list lst1 lst2)))
expected-value: ((("guile" "3.0.8" #<<location> file: "gnu/packages/guile.scm" line: 392 column: 2>) ("guile" "3.0.7" #<<location> file: "gnu/packages/guile.scm" line: 310 column: 2>) ("guile" "2.2.7" #<<location> file: "gnu/packages/guile.scm" line: 250 column: 2>) ("guile" "2.2.4" #<<location> file: "gnu/packages/guile.scm" line: 297 column: 2>) ("guile" "2.0.14" #<<location> file: "gnu/packages/guile.scm" line: 147 column: 2>) ("guile" "1.8.8" #<<location> file: "gnu/packages/guile.scm" line: 76 column: 2>)) (("guile" "2.2.7" #<<location> file: "gnu/packages/guile.scm" line: 250 column: 2>) ("guile" "2.2.4" #<<location> file: "gnu/packages/guile.scm" line: 297 column: 2>)))
actual-value: ((("guile" "3.0.8" #<<location> file: "gnu/packages/guile.scm" line: 392 column: 2>) ("guile" "3.0.7" #<<location> file: "gnu/packages/guile.scm" line: 310 column: 2>) ("guile" "2.2.7" #<<location> file: "gnu/packages/guile.scm" line: 250 column: 2>) ("guile" "2.2.4" #<<location> file: "gnu/packages/guile.scm" line: 297 column: 2>) ("guile" "2.0.14" #<<location> file: "gnu/packages/guile.scm" line: 147 column: 2>) ("guile" "1.8.8" #<<location> file: "gnu/packages/guile.scm" line: 76 column: 2>)) (("guile" "2.2.7" #<<location> file: "gnu/packages/guile.scm" line: 250 column: 2>) ("guile" "2.2.4" #<<location> file: "gnu/packages/guile.scm" line: 297 column: 2>)))
result: PASS
test-name: lookup-inferior-packages and eq?-ness
location: /data/src/guix/tests/inferior.scm:175
source:
+ (test-assert
+ "lookup-inferior-packages and eq?-ness"
+ (let* ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix"))
+ (lst1 (lookup-inferior-packages inferior "guile"))
+ (lst2 (lookup-inferior-packages inferior "guile")))
+ (close-inferior inferior)
+ (every eq? lst1 lst2)))
actual-value: #t
result: PASS
test-name: inferior-package-inputs
location: /data/src/guix/tests/inferior.scm:183
source:
+ (test-equal
+ "inferior-package-inputs"
+ (let ((->list
+ (match-lambda
+ ((label (? package? package) . rest)
+ `(,label
+ (package
+ ,(package-name package)
+ ,(package-version package)
+ ,(package-location package))
+ ,@rest)))))
+ (list (map ->list (package-inputs guile-3.0-latest))
+ (map ->list
+ (package-native-inputs guile-3.0-latest))
+ (map ->list
+ (package-propagated-inputs guile-3.0-latest))))
+ (let* ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix"))
+ (guile (first (lookup-inferior-packages inferior "guile")))
+ (->list
+ (match-lambda
+ ((label (? inferior-package? package) . rest)
+ `(,label
+ (package
+ ,(inferior-package-name package)
+ ,(inferior-package-version package)
+ ,(inferior-package-location package))
+ ,@rest))))
+ (result
+ (list (map ->list (inferior-package-inputs guile))
+ (map ->list
+ (inferior-package-native-inputs guile))
+ (map ->list
+ (inferior-package-propagated-inputs guile)))))
+ (close-inferior inferior)
+ result))
expected-value: ((("libffi" (package "libffi" "3.3" #<<location> file: "gnu/packages/libffi.scm" line: 44 column: 2>)) ("bash" (package "bash-minimal" "5.1.8" #<<location> file: "gnu/packages/bash.scm" line: 215 column: 2>))) (("pkgconfig" (package "pkg-config" "0.29.2" #<<location> file: "gnu/packages/pkg-config.scm" line: 36 column: 2>))) (("libunistring" (package "libunistring" "0.9.10" #<<location> file: "gnu/packages/libunistring.scm" line: 35 column: 2>)) ("bdw-gc" (package "libgc" "8.0.4" #<<location> file: "gnu/packages/bdw-gc.scm" line: 33 column: 2>))))
actual-value: ((("libffi" (package "libffi" "3.3" #<<location> file: "gnu/packages/libffi.scm" line: 44 column: 2>)) ("bash" (package "bash-minimal" "5.1.8" #<<location> file: "gnu/packages/bash.scm" line: 215 column: 2>))) (("pkgconfig" (package "pkg-config" "0.29.2" #<<location> file: "gnu/packages/pkg-config.scm" line: 36 column: 2>))) (("libunistring" (package "libunistring" "0.9.10" #<<location> file: "gnu/packages/libunistring.scm" line: 35 column: 2>)) ("bdw-gc" (package "libgc" "8.0.4" #<<location> file: "gnu/packages/bdw-gc.scm" line: 33 column: 2>))))
result: PASS
test-name: inferior-package-search-paths
location: /data/src/guix/tests/inferior.scm:213
source:
+ (test-equal
+ "inferior-package-search-paths"
+ (package-native-search-paths guile-3.0)
+ (let* ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix"))
+ (guile (first (lookup-inferior-packages inferior "guile")))
+ (result
+ (inferior-package-native-search-paths guile)))
+ (close-inferior inferior)
+ result))
expected-value: (#<<search-path-specification> variable: "GUILE_LOAD_PATH" files: ("share/guile/site/3.0") separator: ":" file-type: directory file-pattern: #f> #<<search-path-specification> variable: "GUILE_LOAD_COMPILED_PATH" files: ("lib/guile/3.0/site-ccache" "share/guile/site/3.0") separator: ":" file-type: directory file-pattern: #f>)
actual-value: (#<<search-path-specification> variable: "GUILE_LOAD_PATH" files: ("share/guile/site/3.0") separator: ":" file-type: directory file-pattern: #f> #<<search-path-specification> variable: "GUILE_LOAD_COMPILED_PATH" files: ("lib/guile/3.0/site-ccache" "share/guile/site/3.0") separator: ":" file-type: directory file-pattern: #f>)
result: PASS
test-name: inferior-eval-with-store
location: /data/src/guix/tests/inferior.scm:222
source:
+ (test-equal
+ "inferior-eval-with-store"
+ (add-text-to-store %store "foo" "Hello, world!")
+ (let* ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix")))
+ (inferior-eval-with-store
+ inferior
+ %store
+ '(lambda (store)
+ (add-text-to-store store "foo" "Hello, world!")))))
expected-value: "/data/src/guix/test-tmp/store/4583q1sfgrllsgxh67x5m0l3xmxdajm7-foo"
actual-value: "/data/src/guix/test-tmp/store/4583q1sfgrllsgxh67x5m0l3xmxdajm7-foo"
result: PASS
test-name: inferior-eval-with-store, &store-protocol-error
location: /data/src/guix/tests/inferior.scm:231
source:
+ (test-assert
+ "inferior-eval-with-store, &store-protocol-error"
+ (let* ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix")))
+ (guard (c ((store-protocol-error? c)
+ (string-contains
+ (store-protocol-error-message c)
+ "invalid character")))
+ (inferior-eval-with-store
+ inferior
+ %store
+ '(lambda (store)
+ (add-text-to-store store "we|rd/?!@" "uh uh")))
+ #f)))
actual-value: 0
result: PASS
test-name: inferior-eval-with-store, exception
location: /data/src/guix/tests/inferior.scm:243
source:
+ (test-equal
+ "inferior-eval-with-store, exception"
+ '(the-answer = 42)
+ (let ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix")))
+ (guard (c ((inferior-exception? c)
+ (close-inferior inferior)
+ (inferior-exception-arguments c)))
+ (inferior-eval-with-store
+ inferior
+ %store
+ '(lambda (store) (throw 'the-answer '= 42))))))
expected-value: (the-answer = 42)
actual-value: (the-answer = 42)
result: PASS
test-name: inferior-eval-with-store, not a procedure
location: /data/src/guix/tests/inferior.scm:254
source:
+ (test-equal
+ "inferior-eval-with-store, not a procedure"
+ 'wrong-type-arg
+ (let ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix")))
+ (guard (c ((inferior-exception? c)
+ (close-inferior inferior)
+ (car (inferior-exception-arguments c))))
+ (inferior-eval-with-store
+ inferior
+ %store
+ '(+ 1 2)))))
expected-value: wrong-type-arg
actual-value: wrong-type-arg
result: PASS
test-name: inferior-package-derivation
location: /data/src/guix/tests/inferior.scm:263
source:
+ (test-equal
+ "inferior-package-derivation"
+ (map derivation-file-name
+ (list (package-derivation
+ %store
+ %bootstrap-guile
+ "x86_64-linux")
+ (package-derivation
+ %store
+ %bootstrap-guile
+ "armhf-linux")))
+ (let* ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix"))
+ (packages (inferior-packages inferior))
+ (guile (find (lambda (package)
+ (string=?
+ (package-name %bootstrap-guile)
+ (inferior-package-name package)))
+ packages)))
+ (map derivation-file-name
+ (list (inferior-package-derivation
+ %store
+ guile
+ "x86_64-linux")
+ (inferior-package-derivation
+ %store
+ guile
+ "armhf-linux")))))
expected-value: ("/data/src/guix/test-tmp/store/lygim61fny1awb72s0xrni55mj6l2f51-guile-bootstrap-2.0.drv" "/data/src/guix/test-tmp/store/iwc444k8qikcqkffnwv9ai90ghigy7ih-guile-bootstrap-2.0.drv")
actual-value: ("/data/src/guix/test-tmp/store/lygim61fny1awb72s0xrni55mj6l2f51-guile-bootstrap-2.0.drv" "/data/src/guix/test-tmp/store/iwc444k8qikcqkffnwv9ai90ghigy7ih-guile-bootstrap-2.0.drv")
result: PASS
test-name: inferior-package-replacement
location: /data/src/guix/tests/inferior.scm:281
source:
+ (test-equal
+ "inferior-package-replacement"
+ (package-derivation
+ %store
+ (package-replacement sqlite)
+ "x86_64-linux")
+ (let* ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix"))
+ (packages (inferior-packages inferior)))
+ (match (lookup-inferior-packages
+ inferior
+ (package-name sqlite)
+ (package-version sqlite))
+ ((inferior-sqlite rest ...)
+ (inferior-package-derivation
+ %store
+ (inferior-package-replacement inferior-sqlite)
+ "x86_64-linux")))))
result: SKIP
test-name: inferior-package->manifest-entry
location: /data/src/guix/tests/inferior.scm:297
source:
+ (test-equal
+ "inferior-package->manifest-entry"
+ (manifest-entry->list
+ (package->manifest-entry
+ (first (find-best-packages-by-name "guile" #f))))
+ (let* ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix"))
+ (guile (first (lookup-inferior-packages inferior "guile")))
+ (entry (inferior-package->manifest-entry guile)))
+ (close-inferior inferior)
+ (manifest-entry->list entry)))
expected-value: ("guile" "3.0.8" "out" (#<<search-path-specification> variable: "GUILE_LOAD_PATH" files: ("share/guile/site/3.0") separator: ":" file-type: directory file-pattern: #f> #<<search-path-specification> variable: "GUILE_LOAD_COMPILED_PATH" files: ("lib/guile/3.0/site-ccache" "share/guile/site/3.0") separator: ":" file-type: directory file-pattern: #f>) (("libunistring" "0.9.10" "out" () ()) ("libgc" "8.0.4" "out" () ())))
actual-value: ("guile" "3.0.8" "out" (#<<search-path-specification> variable: "GUILE_LOAD_PATH" files: ("share/guile/site/3.0") separator: ":" file-type: directory file-pattern: #f> #<<search-path-specification> variable: "GUILE_LOAD_COMPILED_PATH" files: ("lib/guile/3.0/site-ccache" "share/guile/site/3.0") separator: ":" file-type: directory file-pattern: #f>) (("libunistring" "0.9.10" "out" () ()) ("libgc" "8.0.4" "out" () ())))
result: PASS
test-name: packages->manifest
location: /data/src/guix/tests/inferior.scm:307
source:
+ (test-equal
+ "packages->manifest"
+ (map manifest-entry->list
+ (manifest-entries
+ (packages->manifest
+ (find-best-packages-by-name "guile" #f))))
+ (let* ((inferior
+ (open-inferior
+ %top-builddir
+ #:command
+ "scripts/guix"))
+ (guile (first (lookup-inferior-packages inferior "guile")))
+ (manifest (packages->manifest (list guile))))
+ (close-inferior inferior)
+ (map manifest-entry->list
+ (manifest-entries manifest))))
expected-value: (("guile" "3.0.8" "out" (#<<search-path-specification> variable: "GUILE_LOAD_PATH" files: ("share/guile/site/3.0") separator: ":" file-type: directory file-pattern: #f> #<<search-path-specification> variable: "GUILE_LOAD_COMPILED_PATH" files: ("lib/guile/3.0/site-ccache" "share/guile/site/3.0") separator: ":" file-type: directory file-pattern: #f>) (("libunistring" "0.9.10" "out" () ()) ("libgc" "8.0.4" "out" () ()))))
actual-value: (("guile" "3.0.8" "out" (#<<search-path-specification> variable: "GUILE_LOAD_PATH" files: ("share/guile/site/3.0") separator: ":" file-type: directory file-pattern: #f> #<<search-path-specification> variable: "GUILE_LOAD_COMPILED_PATH" files: ("lib/guile/3.0/site-ccache" "share/guile/site/3.0") separator: ":" file-type: directory file-pattern: #f>) (("libunistring" "0.9.10" "out" () ()) ("libgc" "8.0.4" "out" () ()))))
result: PASS
SKIP: tests/pypi
================
test-name: guix-package->pypi-name, old URL style
location: /data/src/guix/tests/pypi.scm:137
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: /data/src/guix/tests/pypi.scm:145
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: /data/src/guix/tests/pypi.scm:153
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: guix-package->pypi-name, honor 'upstream-name'
location: /data/src/guix/tests/pypi.scm:162
source:
+ (test-equal
+ "guix-package->pypi-name, honor 'upstream-name'"
+ "bar-3"
+ (guix-package->pypi-name
+ (dummy-package
+ "foo"
+ (properties '((upstream-name . "bar-3"))))))
expected-value: "bar-3"
actual-value: "bar-3"
result: PASS
test-name: specification->requirement-name
location: /data/src/guix/tests/pypi.scm:169
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: /data/src/guix/tests/pypi.scm:173
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: /data/src/guix/tests/pypi.scm:179
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: /data/src/guix/tests/pypi.scm:185
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: /data/src/guix/tests/pypi.scm:191
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: find-project-url, with numpy
location: /data/src/guix/tests/pypi.scm:197
source:
+ (test-equal
+ "find-project-url, with numpy"
+ "numpy"
+ (find-project-url
+ "numpy"
+ "https://files.pythonhosted.org/packages/0a/c8/a62767a6b374a0dfb02d2a0456e5f56a372cdd1689dbc6ffb6bf1ddedbc0/numpy-1.22.1.zip"))
expected-value: "numpy"
actual-value: "numpy"
result: PASS
test-name: find-project-url, uWSGI
location: /data/src/guix/tests/pypi.scm:203
source:
+ (test-equal
+ "find-project-url, uWSGI"
+ "uwsgi"
+ (find-project-url
+ "uWSGI"
+ "https://files.pythonhosted.org/packages/24/fd/93851e4a076719199868d4c918cc93a52742e68370188c1c570a6e42a54f/uwsgi-2.0.20.tar.gz"))
expected-value: "uwsgi"
actual-value: "uwsgi"
result: PASS
test-name: find-project-url, flake8-array-spacing
location: /data/src/guix/tests/pypi.scm:209
source:
+ (test-equal
+ "find-project-url, flake8-array-spacing"
+ "flake8_array_spacing"
+ (find-project-url
+ "flake8-array-spacing"
+ "https://files.pythonhosted.org/packages/a4/21/ff29b901128b681b7de7a2787b3aeb3e1f3cba4a8c0cffa9712cbff016bc/flake8_array_spacing-0.2.0.tar.gz"))
expected-value: "flake8_array_spacing"
actual-value: "flake8_array_spacing"
result: PASS
test-name: find-project-url, foo/goo
location: /data/src/guix/tests/pypi.scm:215
source:
+ (test-equal
+ "find-project-url, foo/goo"
+ "foo"
+ (find-project-url
+ "foo"
+ "https://files.pythonhosted.org/packages/f0/f00/goo-0.0.0.tar.gz"))
expected-value: "foo"
actual-value: "foo"
result: PASS
test-name: pypi->guix-package, no wheel
location: /data/src/guix/tests/pypi.scm:221
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-1)
+ (string-length test-json-1)))
+ ("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
+ ('list 'python-bar 'python-foo))
+ ('native-inputs ('list 'python-pytest))
+ ('home-page "http://example.com")
+ ('synopsis "summary")
+ ('description "summary")
+ ('license 'license:lgpl2.0))
+ (and (string=?
+ (bytevector->nix-base32-string test-source-hash)
+ hash)
+ (equal?
+ (pypi->guix-package "foo" #:version "1.0.0")
+ (pypi->guix-package "foo"))
+ (guard (c ((error? c) #t))
+ (pypi->guix-package
+ "foo"
+ #:version
+ "42"))))
+ (x (pk 'fail x #f))))))
actual-value: #t
result: PASS
test-name: pypi->guix-package, wheels
location: /data/src/guix/tests/pypi.scm:276
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-1)
+ (string-length test-json-1)))
+ ("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
+ ('list 'python-bar 'python-baz))
+ ('native-inputs ('list '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: /data/src/guix/tests/pypi.scm:339
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-1)
+ (string-length test-json-1)))
+ ("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
test-name: pypi->guix-package, package name contains "-" followed by digits
location: /data/src/guix/tests/pypi.scm:385
source:
+ (test-assert
+ "pypi->guix-package, package name contains \"-\" followed by digits"
+ (mock ((guix import utils)
+ url-fetch
+ (lambda (url file-name)
+ (match url
+ ("https://example.com/foo-99-1.0.0.tar.gz"
+ (begin
+ (mkdir-p "foo-99-1.0.0/src/bizarre.egg-info")
+ (with-output-to-file
+ "foo-99-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-99-1.0.0/"))
+ (delete-file-recursively "foo-99-1.0.0")
+ (set! test-source-hash
+ (call-with-input-file file-name port-sha256))))
+ ("https://example.com/foo-99-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-99/json"
+ (values
+ (open-input-string test-json-2)
+ (string-length test-json-2)))
+ ("https://example.com/foo-99-1.0.0-py2.py3-none-any.whl"
+ #f)
+ (_ (error "Unexpected URL: " url)))))
+ (match (pypi->guix-package "foo-99")
+ (('package
+ ('name "python-foo-99")
+ ('version "1.0.0")
+ ('source
+ ('origin
+ ('method 'url-fetch)
+ ('uri ('pypi-uri "foo-99" 'version))
+ ('sha256 ('base32 (? string? hash)))))
+ ('properties
+ ('quote (("upstream-name" . "foo-99"))))
+ ('build-system 'python-build-system)
+ ('propagated-inputs
+ ('list 'python-bar 'python-foo))
+ ('native-inputs ('list '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
warning: project name foo does not appear verbatim in the PyPI URI
hint: The PyPI URI is:
`https://files.pythonhosted.org/packages/f0/f00/goo-0.0.0.tar.gz'. You
should review the pypi-uri declaration in the generated package. You may
need to replace "foo" with a substring of the PyPI URI that identifies the
package.
warning: Cannot guess requirements from source archive: no requires.txt file found.
RUN: tests/services/configuration
=================================
test-name: default value, no serialization
location: /data/src/guix/tests/services/configuration.scm:39
source:
+ (test-equal
+ "default value, no serialization"
+ 80
+ (port-configuration-port (port-configuration)))
expected-value: 80
actual-value: 80
result: PASS
test-name: default value, custom serializer
location: /data/src/guix/tests/services/configuration.scm:46
source:
+ (test-equal
+ "default value, custom serializer"
+ 80
+ (port-configuration-cs-port
+ (port-configuration-cs)))
expected-value: 80
actual-value: 80
result: PASS
test-name: no default value, provided
location: /data/src/guix/tests/services/configuration.scm:54
source:
+ (test-equal
+ "no default value, provided"
+ 55
+ (port-configuration-ndv-port
+ (port-configuration-ndv (port 55))))
expected-value: 55
actual-value: 55
result: PASS
test-name: no default value, not provided
location: /data/src/guix/tests/services/configuration.scm:59
source:
+ (test-assert
+ "no default value, not provided"
+ (guard (c ((configuration-error? c) #t))
+ (port-configuration-ndv-port
+ (port-configuration-ndv))))
actual-value: #t
result: PASS
test-name: serialize-configuration
location: /data/src/guix/tests/services/configuration.scm:70
source:
+ (test-assert
+ "serialize-configuration"
+ (gexp? (let ((config (serializable-configuration)))
+ (serialize-configuration
+ config
+ serializable-configuration-fields))))
actual-value: #t
result: PASS
test-name: serialize-configuration with no-serialization
location: /data/src/guix/tests/services/configuration.scm:79
source:
+ (test-assert
+ "serialize-configuration with no-serialization"
+ (not (false-if-exception
+ (let ((config (serializable-configuration)))
+ (serialize-configuration
+ config
+ serializable-configuration-fields)))))
actual-value: #t
result: PASS
test-name: serialize-configuration with prefix
location: /data/src/guix/tests/services/configuration.scm:92
source:
+ (test-assert
+ "serialize-configuration with prefix"
+ (gexp? (let ((config (configuration-with-prefix)))
+ (serialize-configuration
+ config
+ configuration-with-prefix-fields))))
actual-value: #t
result: PASS
test-name: maybe value serialization
location: /data/src/guix/tests/services/configuration.scm:109
source:
+ (test-equal
+ "maybe value serialization"
+ "port=80"
+ (serialize-maybe-number "port" 80))
expected-value: "port=80"
actual-value: "port=80"
result: PASS
test-name: maybe value without serialization no procedure bound
location: /data/src/guix/tests/services/configuration.scm:119
source:
+ (test-assert
+ "maybe value without serialization no procedure bound"
+ (not (defined? 'serialize-maybe-string)))
actual-value: #t
result: PASS
SKIP: tests/upstream
====================
test-name: coalesce-sources same version
location: /data/src/guix/tests/upstream.scm:38
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
test-name: changed-inputs returns no changes
location: /data/src/guix/tests/upstream.scm:105
source:
+ (test-equal
+ "changed-inputs returns no changes"
+ '()
+ (changed-inputs test-package test-package-sexp))
expected-value: ()
actual-value: ()
result: PASS
test-name: changed-inputs returns changes to labelled input list
location: /data/src/guix/tests/upstream.scm:109
source:
+ (test-assert
+ "changed-inputs returns changes to labelled input list"
+ (let ((changes
+ (changed-inputs
+ (package
+ (inherit test-package)
+ (inputs `(("hello" ,hello) ("sed" ,sed))))
+ test-package-sexp)))
+ (match changes
+ (((? upstream-input-change? item))
+ (and (equal?
+ (upstream-input-change-type item)
+ 'regular)
+ (equal?
+ (upstream-input-change-action item)
+ 'remove)
+ (string=?
+ (upstream-input-change-name item)
+ "sed")))
+ (else (pk else #f)))))
actual-value: #t
result: PASS
test-name: changed-inputs returns changes to all labelled input lists
location: /data/src/guix/tests/upstream.scm:127
source:
+ (test-assert
+ "changed-inputs returns changes to all labelled input lists"
+ (let ((changes
+ (changed-inputs
+ (package
+ (inherit test-package)
+ (inputs '())
+ (native-inputs '())
+ (propagated-inputs '()))
+ test-package-sexp)))
+ (match changes
+ (((? upstream-input-change? items) ...)
+ (and (equal?
+ (map upstream-input-change-type items)
+ '(regular native native propagated))
+ (equal?
+ (map upstream-input-change-action items)
+ '(add add add add))
+ (equal?
+ (map upstream-input-change-name items)
+ '("hello" "sed" "tar" "grep"))))
+ (else (pk else #f)))))
actual-value: #t
result: PASS
test-name: changed-inputs returns changes to plain input list
location: /data/src/guix/tests/upstream.scm:178
source:
+ (test-assert
+ "changed-inputs returns changes to plain input list"
+ (let ((changes
+ (changed-inputs
+ (package
+ (inherit test-new-package)
+ (inputs (list hello sed)))
+ test-new-package-sexp)))
+ (match changes
+ (((? upstream-input-change? item))
+ (and (equal?
+ (upstream-input-change-type item)
+ 'regular)
+ (equal?
+ (upstream-input-change-action item)
+ 'remove)
+ (string=?
+ (upstream-input-change-name item)
+ "sed")))
+ (else (pk else #f)))))
actual-value: #t
result: PASS
test-name: changed-inputs returns changes to all plain input lists
location: /data/src/guix/tests/upstream.scm:195
source:
+ (test-assert
+ "changed-inputs returns changes to all plain input lists"
+ (let ((changes
+ (changed-inputs
+ (package
+ (inherit test-new-package)
+ (inputs '())
+ (native-inputs '())
+ (propagated-inputs '()))
+ test-new-package-sexp)))
+ (match changes
+ (((? upstream-input-change? items) ...)
+ (and (equal?
+ (map upstream-input-change-type items)
+ '(regular native native propagated))
+ (equal?
+ (map upstream-input-change-action items)
+ '(add add add add))
+ (equal?
+ (map upstream-input-change-name items)
+ '("hello" "sed" "tar" "grep"))))
+ (else (pk else #f)))))
actual-value: #t
result: PASS
RUN: tests/offload
==================
test-name: #f
location: /data/src/guix/tests/offload.scm:55
source:
+ (test-assert
+ (machine-matches?
+ (deprecated-build-machine "i686-linux")
+ (build-requirements (system "i686-linux"))))
actual-value: #t
result: PASS
test-name: #f
location: /data/src/guix/tests/offload.scm:60
source:
+ (test-assert
+ (machine-matches?
+ (new-build-machine '("i686-linux"))
+ (build-requirements (system "i686-linux"))))
actual-value: #t
result: PASS
test-name: #f
location: /data/src/guix/tests/offload.scm:66
source:
+ (test-assert
+ (machine-matches?
+ (new-build-machine
+ '("armhf-linux"
+ "aarch64-linux"
+ "i686-linux"
+ "x86_64-linux"))
+ (build-requirements (system "armhf-linux"))))
actual-value: #t
result: PASS
/data/src/guix/tests/offload.scm:41:2: warning: The 'system' field is deprecated, please use 'systems' instead.
[-- Attachment #3: Type: text/plain, Size: 37 bytes --]
The env was made usign this manifest
[-- Attachment #4: manifest --]
[-- Type: text/plain, Size: 1207 bytes --]
;; generated from
;; guix environment guix --pure --ad-hoc help2man git strace autoconf automake gettext texinfo graphviz guile-ssh guile-zstd guile-semver guile-lib libgcrypt sqlite gcc-toolchain
;; ./pre-inst-env guix package --export-manifest -p $GUIX_ENVIRONMENT/
;; and edited afterwards.
(specifications->manifest
(list
"gcc-toolchain"
"sqlite"
"libgcrypt"
"guile-lib"
"guile-semver"
"guile-zstd"
"guile-ssh"
"graphviz"
"texinfo"
"gettext"
"automake"
"autoconf"
"strace"
"git"
"help2man"
"pkg-config"
"guile"
"gnutls"
"guile-avahi"
"guile-gcrypt"
"guile-json"
"guile-sqlite3"
"guile-zlib"
"guile-lzlib"
"guile-git"
"autoconf"
"automake"
"gettext-minimal"
"po4a"
"bzip2"
"gzip"
"sqlite"
"util-linux"
"disarchive"
;; "glibc-utf8-locales"
"tar"
"gzip"
"bzip2"
"xz"
"file"
"diffutils"
"patch"
"findutils"
"gawk"
"sed"
"grep"
"coreutils"
"make"
"bash-minimal"
"ld-wrapper"
"binutils"
;; "gcc"
"glibc"
"glibc:static"
;; "glibc-utf8-locales"
"libunistring"
;; "libgc"
"zlib"
"nettle"
"libidn2"
"libtasn1"
"guile-bytestructures"
"libgpg-error"
;; "linux-libre-headers"
"gmp"))
[-- Attachment #5: Type: text/plain, Size: 346 bytes --]
I also pulled guix today as well as the guix git repository.
Tell me if you need more details.
Anyway I can already start writing some things in the cookbook. Should I
directly edit doc/guix-cookbok.texi? I have no expereince writing docs
in texinfo, so I’ll try my best. Are there any recommendations or guidelines?
Cheers,
Théo
^ permalink raw reply [flat|nested] 16+ messages in thread