* bug#51848: `make && make check` fails
@ 2021-11-14 14:50 Rostislav Svoboda
2021-11-15 16:01 ` zimoun
2022-03-26 13:52 ` Maxim Cournoyer
0 siblings, 2 replies; 4+ messages in thread
From: Rostislav Svoboda @ 2021-11-14 14:50 UTC (permalink / raw)
To: 51848
[-- Attachment #1: Type: text/plain, Size: 144 bytes --]
Trying to compile guix (for the first time, ever!) I get:
FAIL: tests/home-import.scm
FAIL: tests/guix-home.sh
the log is attached.
Bost
[-- Attachment #2: test-suite.log --]
[-- Type: text/x-log, Size: 154665 bytes --]
========================================
GNU Guix UNKNOWN: ./test-suite.log
========================================
# TOTAL: 2022
# PASS: 1973
# SKIP: 46
# XFAIL: 1
# FAIL: 2
# XPASS: 0
# ERROR: 0
.. contents:: :depth: 2
SKIP: tests/channels
====================
test-name: channel-instance-metadata returns default if .guix-channel does not exist
location: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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 . 261) (column . 19))> commit: "abcde1234" checkout: "/home/bost/dev/guix/test-tmp/store/2f93jq1zm9wcnj7jc91ayhz686yp6ynp-test-channel-abcde12">
result: PASS
test-name: latest-channel-instances #:validate-pull
location: /home/bost/dev/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)))))))
result: SKIP
test-name: channel-instances->manifest
location: /home/bost/dev/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
test-name: channel-news, no news
location: /home/bost/dev/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))))))
result: SKIP
test-name: channel-news, one entry
location: /home/bost/dev/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")))))))
result: SKIP
test-name: channel-news, annotated tag
location: /home/bost/dev/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)))))))
result: SKIP
test-name: latest-channel-instances, missing introduction for 'guix'
location: /home/bost/dev/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))))))
result: SKIP
test-name: authenticate-channel, wrong first commit signer
location: /home/bost/dev/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
+ %ed25519bis-public-key-file
+ %ed25519bis-secret-key-file)
+ (with-temporary-git-repository
+ directory
+ `((add ".guix-channel"
+ ,(object->string
+ '(channel
+ (version 0)
+ (keyring-reference "master"))))
+ (add ".guix-authorizations"
+ ,(object->string
+ `(authorizations
+ (version 0)
+ ((,(key-fingerprint %ed25519-public-key-file)
+ (name "Charlie"))))))
+ (add "signer.key"
+ ,(call-with-input-file
+ %ed25519-public-key-file
+ get-string-all))
+ (commit
+ "first commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (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
+ %ed25519bis-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
+ %ed25519bis-public-key-file))))))
+ (authenticate-channel
+ channel
+ directory
+ (commit-id-string commit2)
+ #:keyring-reference-prefix
+ "")
+ 'failed))))))
result: SKIP
test-name: authenticate-channel, .guix-authorizations
location: /home/bost/dev/guix/tests/channels.scm:529
source:
+ (test-equal
+ "authenticate-channel, .guix-authorizations"
+ #t
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file
+ %ed25519bis-public-key-file
+ %ed25519bis-secret-key-file)
+ (with-temporary-git-repository
+ directory
+ `((add ".guix-channel"
+ ,(object->string
+ '(channel
+ (version 0)
+ (keyring-reference "channel-keyring"))))
+ (add ".guix-authorizations"
+ ,(object->string
+ `(authorizations
+ (version 0)
+ ((,(key-fingerprint %ed25519-public-key-file)
+ (name "Charlie"))))))
+ (commit "zeroth commit")
+ (add "a.txt" "A")
+ (commit
+ "first commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (add "b.txt" "B")
+ (commit
+ "second commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (add "c.txt" "C")
+ (commit
+ "third commit"
+ (signer
+ ,(key-fingerprint %ed25519bis-public-key-file)))
+ (branch "channel-keyring")
+ (checkout "channel-keyring")
+ (add "signer.key"
+ ,(call-with-input-file
+ %ed25519-public-key-file
+ get-string-all))
+ (add "other.key"
+ ,(call-with-input-file
+ %ed25519bis-public-key-file
+ get-string-all))
+ (commit "keyring commit")
+ (checkout "master"))
+ (with-repository
+ directory
+ repository
+ (let* ((commit1 (find-commit repository "first"))
+ (commit2 (find-commit repository "second"))
+ (commit3 (find-commit repository "third"))
+ (intro (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
+ %ed25519bis-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: /home/bost/dev/guix/tests/channels.scm:598
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'...
SKIP: tests/cpio
================
test-name: file->cpio-header + write-cpio-header + read-cpio-header
location: /home/bost/dev/guix/tests/cpio.scm:37
source:
+ (test-assert
+ "file->cpio-header + write-cpio-header + read-cpio-header"
+ (let* ((file (search-path %load-path "guix.scm"))
+ (header (file->cpio-header file)))
+ (call-with-values
+ (lambda () (open-bytevector-output-port))
+ (lambda (port get-bv)
+ (write-cpio-header header port)
+ (let ((port (open-bytevector-input-port (get-bv))))
+ (equal? header (read-cpio-header port)))))))
actual-value: #t
result: PASS
test-name: bit-identical to GNU cpio's output
location: /home/bost/dev/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
SKIP: tests/crate
=================
test-name: guix-package->crate-name
location: /home/bost/dev/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: /home/bost/dev/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)))))
result: SKIP
test-name: cargo-recursive-import
location: /home/bost/dev/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)))))
result: SKIP
test-name: licenses: MIT OR Apache-2.0
location: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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 unknown-license!)
result: PASS
test-name: licenses: MIT/Apache-2.0
location: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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)))))
result: SKIP
SKIP: tests/git
===============
test-name: commit-difference, linear history
location: /home/bost/dev/guix/tests/git.scm:34
source:
+ (test-assert
+ "commit-difference, linear history"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "first commit")
+ (add "b.txt" "B")
+ (commit "second commit")
+ (add "c.txt" "C")
+ (commit "third commit")
+ (add "d.txt" "D")
+ (commit "fourth commit"))
+ (with-repository
+ directory
+ repository
+ (let ((commit1 (find-commit repository "first"))
+ (commit2 (find-commit repository "second"))
+ (commit3 (find-commit repository "third"))
+ (commit4 (find-commit repository "fourth")))
+ (and (lset= eq?
+ (commit-difference commit4 commit1)
+ (list commit2 commit3 commit4))
+ (lset= eq?
+ (commit-difference commit4 commit2)
+ (list commit3 commit4))
+ (equal?
+ (commit-difference commit3 commit2)
+ (list commit3))
+ (null? (commit-difference commit1 commit4)))))))
result: SKIP
test-name: commit-difference, fork
location: /home/bost/dev/guix/tests/git.scm:61
source:
+ (test-assert
+ "commit-difference, fork"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "first commit")
+ (branch "devel")
+ (checkout "devel")
+ (add "devel/1.txt" "1")
+ (commit "first devel commit")
+ (add "devel/2.txt" "2")
+ (commit "second devel commit")
+ (checkout "master")
+ (add "b.txt" "B")
+ (commit "second commit")
+ (add "c.txt" "C")
+ (commit "third commit")
+ (merge "devel" "merge")
+ (add "d.txt" "D")
+ (commit "fourth commit"))
+ (with-repository
+ directory
+ repository
+ (let ((master1 (find-commit repository "first commit"))
+ (master2
+ (find-commit repository "second commit"))
+ (master3 (find-commit repository "third commit"))
+ (master4
+ (find-commit repository "fourth commit"))
+ (devel1 (find-commit repository "first devel"))
+ (devel2 (find-commit repository "second devel"))
+ (merge (find-commit repository "merge")))
+ (and (equal?
+ (commit-difference master4 merge)
+ (list master4))
+ (lset= eq?
+ (commit-difference master3 master1)
+ (list master3 master2))
+ (lset= eq?
+ (commit-difference devel2 master1)
+ (list devel2 devel1))
+ (lset= eq?
+ (commit-difference master4 master2)
+ (list master4 merge master3 devel1 devel2)))))))
result: SKIP
test-name: commit-difference, excluded commits
location: /home/bost/dev/guix/tests/git.scm:101
source:
+ (test-assert
+ "commit-difference, excluded commits"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "first commit")
+ (add "b.txt" "B")
+ (commit "second commit")
+ (add "c.txt" "C")
+ (commit "third commit")
+ (add "d.txt" "D")
+ (commit "fourth commit")
+ (add "e.txt" "E")
+ (commit "fifth commit"))
+ (with-repository
+ directory
+ repository
+ (let ((commit1 (find-commit repository "first"))
+ (commit2 (find-commit repository "second"))
+ (commit3 (find-commit repository "third"))
+ (commit4 (find-commit repository "fourth"))
+ (commit5 (find-commit repository "fifth")))
+ (and (lset= eq?
+ (commit-difference
+ commit4
+ commit1
+ (list commit2))
+ (list commit3 commit4))
+ (lset= eq?
+ (commit-difference
+ commit4
+ commit1
+ (list commit3))
+ (list commit4))
+ (null? (commit-difference
+ commit4
+ commit1
+ (list commit5))))))))
result: SKIP
test-name: commit-relation
location: /home/bost/dev/guix/tests/git.scm:126
source:
+ (test-equal
+ "commit-relation"
+ '(self ancestor
+ descendant
+ unrelated
+ unrelated
+ ancestor
+ descendant
+ ancestor
+ descendant)
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "first commit")
+ (branch "hack")
+ (checkout "hack")
+ (add "1.txt" "1")
+ (commit "branch commit")
+ (checkout "master")
+ (add "b.txt" "B")
+ (commit "second commit")
+ (add "c.txt" "C")
+ (commit "third commit")
+ (merge "hack" "merge"))
+ (with-repository
+ directory
+ repository
+ (let ((master1 (find-commit repository "first"))
+ (master2 (find-commit repository "second"))
+ (master3 (find-commit repository "third"))
+ (branch1 (find-commit repository "branch"))
+ (merge (find-commit repository "merge")))
+ (list (commit-relation master3 master3)
+ (commit-relation master1 master3)
+ (commit-relation master3 master1)
+ (commit-relation master2 branch1)
+ (commit-relation branch1 master2)
+ (commit-relation branch1 merge)
+ (commit-relation merge branch1)
+ (commit-relation master1 merge)
+ (commit-relation merge master1))))))
result: SKIP
test-name: remote-refs
location: /home/bost/dev/guix/tests/git.scm:166
source:
+ (test-equal
+ "remote-refs"
+ '("refs/heads/develop"
+ "refs/heads/master"
+ "refs/tags/v1.0"
+ "refs/tags/v1.1")
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "v1.0" "release-1.0")
+ (branch "develop")
+ (checkout "develop")
+ (add "b.txt" "B")
+ (commit "Second commit")
+ (tag "v1.1" "release-1.1"))
+ (remote-refs directory)))
result: SKIP
test-name: remote-refs: only tags
location: /home/bost/dev/guix/tests/git.scm:181
source:
+ (test-equal
+ "remote-refs: only tags"
+ '("refs/tags/v1.0" "refs/tags/v1.1")
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "v1.0" "Release 1.0")
+ (add "b.txt" "B")
+ (commit "Second commit")
+ (tag "v1.1" "Release 1.1"))
+ (remote-refs directory #:tags? #t)))
result: SKIP
SKIP: tests/git-authenticate
============================
test-name: unsigned commits
location: /home/bost/dev/guix/tests/git-authenticate.scm:43
source:
+ (test-assert
+ "unsigned commits"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "first commit")
+ (add "b.txt" "B")
+ (commit "second commit"))
+ (with-repository
+ directory
+ repository
+ (let ((commit1 (find-commit repository "first"))
+ (commit2 (find-commit repository "second")))
+ (guard (c ((unsigned-commit-error? c)
+ (oid=? (git-authentication-error-commit c)
+ (commit-id commit1))))
+ (authenticate-commits
+ repository
+ (list commit1 commit2)
+ #:keyring-reference
+ "master")
+ 'failed)))))
result: SKIP
test-name: signed commits, SHA1 signature
location: /home/bost/dev/guix/tests/git-authenticate.scm:60
source:
+ (test-assert
+ "signed commits, SHA1 signature"
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file)
+ (call-with-output-file
+ (string-append (getenv "GNUPGHOME") "/gpg.conf")
+ (lambda (port) (display "digest-algo sha1" port)))
+ (with-temporary-git-repository
+ directory
+ `((add "a.txt" "A")
+ (add "signer.key"
+ ,(call-with-input-file
+ %ed25519-public-key-file
+ get-string-all))
+ (add ".guix-authorizations"
+ ,(object->string
+ `(authorizations
+ (version 0)
+ ((,(key-fingerprint %ed25519-public-key-file)
+ (name "Charlie"))))))
+ (commit
+ "first commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file))))
+ (with-repository
+ directory
+ repository
+ (let ((commit (find-commit repository "first")))
+ (guard (c ((unsigned-commit-error? c)
+ (oid=? (git-authentication-error-commit c)
+ (commit-id commit))))
+ (authenticate-commits
+ repository
+ (list commit)
+ #:keyring-reference
+ "master")
+ 'failed))))))
result: SKIP
test-name: signed commits, default authorizations
location: /home/bost/dev/guix/tests/git-authenticate.scm:89
source:
+ (test-assert
+ "signed commits, default authorizations"
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file)
+ (with-temporary-git-repository
+ directory
+ `((add "signer.key"
+ ,(call-with-input-file
+ %ed25519-public-key-file
+ get-string-all))
+ (commit "zeroth commit")
+ (add "a.txt" "A")
+ (commit
+ "first commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (add "b.txt" "B")
+ (commit
+ "second commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file))))
+ (with-repository
+ directory
+ repository
+ (let ((commit1 (find-commit repository "first"))
+ (commit2 (find-commit repository "second")))
+ (authenticate-commits
+ repository
+ (list commit1 commit2)
+ #:default-authorizations
+ (list (openpgp-public-key-fingerprint
+ (read-openpgp-packet %ed25519-public-key-file)))
+ #:keyring-reference
+ "master"))))))
result: SKIP
test-name: signed commits, .guix-authorizations
location: /home/bost/dev/guix/tests/git-authenticate.scm:113
source:
+ (test-assert
+ "signed commits, .guix-authorizations"
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file)
+ (with-temporary-git-repository
+ directory
+ `((add "signer.key"
+ ,(call-with-input-file
+ %ed25519-public-key-file
+ get-string-all))
+ (add ".guix-authorizations"
+ ,(object->string
+ `(authorizations
+ (version 0)
+ ((,(key-fingerprint %ed25519-public-key-file)
+ (name "Charlie"))))))
+ (commit "zeroth commit")
+ (add "a.txt" "A")
+ (commit
+ "first commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (add ".guix-authorizations"
+ ,(object->string `(authorizations (version 0) ())))
+ (commit
+ "second commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (add "b.txt" "B")
+ (commit
+ "third commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file))))
+ (with-repository
+ directory
+ repository
+ (let ((commit1 (find-commit repository "first"))
+ (commit2 (find-commit repository "second"))
+ (commit3 (find-commit repository "third")))
+ (and (authenticate-commits
+ repository
+ (list commit1 commit2)
+ #:keyring-reference
+ "master")
+ (guard (c ((unauthorized-commit-error? c)
+ (and (oid=? (git-authentication-error-commit c)
+ (commit-id commit3))
+ (bytevector=?
+ (openpgp-public-key-fingerprint
+ (unauthorized-commit-error-signing-key c))
+ (openpgp-public-key-fingerprint
+ (read-openpgp-packet
+ %ed25519-public-key-file))))))
+ (authenticate-commits
+ repository
+ (list commit1 commit2 commit3)
+ #:keyring-reference
+ "master")
+ 'failed)))))))
result: SKIP
test-name: signed commits, .guix-authorizations, unauthorized merge
location: /home/bost/dev/guix/tests/git-authenticate.scm:161
source:
+ (test-assert
+ "signed commits, .guix-authorizations, unauthorized merge"
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file
+ %ed25519bis-public-key-file
+ %ed25519bis-secret-key-file)
+ (with-temporary-git-repository
+ directory
+ `((add "signer1.key"
+ ,(call-with-input-file
+ %ed25519-public-key-file
+ get-string-all))
+ (add "signer2.key"
+ ,(call-with-input-file
+ %ed25519bis-public-key-file
+ get-string-all))
+ (add ".guix-authorizations"
+ ,(object->string
+ `(authorizations
+ (version 0)
+ ((,(key-fingerprint %ed25519-public-key-file)
+ (name "Alice"))))))
+ (commit "zeroth commit")
+ (add "a.txt" "A")
+ (commit
+ "first commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (branch "devel")
+ (checkout "devel")
+ (add "devel/1.txt" "1")
+ (commit
+ "first devel commit"
+ (signer
+ ,(key-fingerprint %ed25519bis-public-key-file)))
+ (checkout "master")
+ (add "b.txt" "B")
+ (commit
+ "second commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (merge "devel"
+ "merge"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file))))
+ (with-repository
+ directory
+ repository
+ (let ((master1 (find-commit repository "first commit"))
+ (master2
+ (find-commit repository "second commit"))
+ (devel1
+ (find-commit repository "first devel commit"))
+ (merge (find-commit repository "merge")))
+ (define (correct? c commit)
+ (and (oid=? (git-authentication-error-commit c)
+ (commit-id commit))
+ (bytevector=?
+ (openpgp-public-key-fingerprint
+ (unauthorized-commit-error-signing-key c))
+ (openpgp-public-key-fingerprint
+ (read-openpgp-packet %ed25519bis-public-key-file)))))
+ (and (authenticate-commits
+ repository
+ (list master1 master2)
+ #:keyring-reference
+ "master")
+ (guard (c ((unauthorized-commit-error? c)
+ (correct? c devel1)))
+ (authenticate-commits
+ repository
+ (list master1 devel1)
+ #:keyring-reference
+ "master")
+ #f)
+ (guard (c ((unauthorized-commit-error? c)
+ (correct? c devel1)))
+ (authenticate-commits
+ repository
+ (list master1 master2 devel1 merge)
+ #:keyring-reference
+ "master")
+ #f)))))))
result: SKIP
test-name: signed commits, .guix-authorizations, authorized merge
location: /home/bost/dev/guix/tests/git-authenticate.scm:230
source:
+ (test-assert
+ "signed commits, .guix-authorizations, authorized merge"
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file
+ %ed25519bis-public-key-file
+ %ed25519bis-secret-key-file)
+ (with-temporary-git-repository
+ directory
+ `((add "signer1.key"
+ ,(call-with-input-file
+ %ed25519-public-key-file
+ get-string-all))
+ (add "signer2.key"
+ ,(call-with-input-file
+ %ed25519bis-public-key-file
+ get-string-all))
+ (add ".guix-authorizations"
+ ,(object->string
+ `(authorizations
+ (version 0)
+ ((,(key-fingerprint %ed25519-public-key-file)
+ (name "Alice"))))))
+ (commit "zeroth commit")
+ (add "a.txt" "A")
+ (commit
+ "first commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (branch "devel")
+ (checkout "devel")
+ (add ".guix-authorizations"
+ ,(object->string
+ `(authorizations
+ (version 0)
+ ((,(key-fingerprint %ed25519-public-key-file)
+ (name "Alice"))
+ (,(key-fingerprint %ed25519bis-public-key-file))))))
+ (commit
+ "first devel commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (add "devel/2.txt" "2")
+ (commit
+ "second devel commit"
+ (signer
+ ,(key-fingerprint %ed25519bis-public-key-file)))
+ (checkout "master")
+ (add "b.txt" "B")
+ (commit
+ "second commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (merge "devel"
+ "merge"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (add "c.txt" "C")
+ (commit
+ "third commit"
+ (signer
+ ,(key-fingerprint %ed25519bis-public-key-file))))
+ (with-repository
+ directory
+ repository
+ (let ((master1 (find-commit repository "first commit"))
+ (master2
+ (find-commit repository "second commit"))
+ (devel1
+ (find-commit repository "first devel commit"))
+ (devel2
+ (find-commit repository "second devel commit"))
+ (merge (find-commit repository "merge"))
+ (master3 (find-commit repository "third commit")))
+ (authenticate-commits
+ repository
+ (list master1
+ master2
+ devel1
+ devel2
+ merge
+ master3)
+ #:keyring-reference
+ "master"))))))
result: SKIP
test-name: signed commits, .guix-authorizations removed
location: /home/bost/dev/guix/tests/git-authenticate.scm:290
source:
+ (test-assert
+ "signed commits, .guix-authorizations removed"
+ (with-fresh-gnupg-setup
+ (list %ed25519-public-key-file
+ %ed25519-secret-key-file)
+ (with-temporary-git-repository
+ directory
+ `((add "signer.key"
+ ,(call-with-input-file
+ %ed25519-public-key-file
+ get-string-all))
+ (add ".guix-authorizations"
+ ,(object->string
+ `(authorizations
+ (version 0)
+ ((,(key-fingerprint %ed25519-public-key-file)
+ (name "Charlie"))))))
+ (commit "zeroth commit")
+ (add "a.txt" "A")
+ (commit
+ "first commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (remove ".guix-authorizations")
+ (commit
+ "second commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file)))
+ (add "b.txt" "B")
+ (commit
+ "third commit"
+ (signer
+ ,(key-fingerprint %ed25519-public-key-file))))
+ (with-repository
+ directory
+ repository
+ (let ((commit1 (find-commit repository "first"))
+ (commit2 (find-commit repository "second"))
+ (commit3 (find-commit repository "third")))
+ (and (authenticate-commits
+ repository
+ (list commit1 commit2)
+ #:keyring-reference
+ "master")
+ (guard (c ((unauthorized-commit-error? c)
+ (oid=? (git-authentication-error-commit c)
+ (commit-id commit2))))
+ (authenticate-commits
+ repository
+ (list commit1 commit2 commit3)
+ #:keyring-reference
+ "master")
+ 'failed)))))))
result: SKIP
SKIP: tests/hackage
===================
Starting download of /tmp/guix-file.GdtMfN
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.GdtMfN
From https://web.archive.org/web/20211114154130/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20211114154130/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.GdtMfN...
could not find its Disarchive specification
failed to download "/tmp/guix-file.GdtMfN" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test 1
location: /home/bost/dev/guix/tests/hackage.scm:193
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.OcgwgN
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.OcgwgN
From https://web.archive.org/web/20211114154131/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20211114154131/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.OcgwgN...
could not find its Disarchive specification
failed to download "/tmp/guix-file.OcgwgN" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test 2
location: /home/bost/dev/guix/tests/hackage.scm:196
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.wHnWsM
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.wHnWsM
From https://web.archive.org/web/20211114154133/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20211114154133/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.wHnWsM...
could not find its Disarchive specification
failed to download "/tmp/guix-file.wHnWsM" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test 3
location: /home/bost/dev/guix/tests/hackage.scm:199
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.WkvmkN
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.WkvmkN
From https://web.archive.org/web/20211114154135/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20211114154135/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.WkvmkN...
could not find its Disarchive specification
failed to download "/tmp/guix-file.WkvmkN" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test 4
location: /home/bost/dev/guix/tests/hackage.scm:203
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.SewhkN
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.SewhkN
From https://web.archive.org/web/20211114154137/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20211114154137/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.SewhkN...
could not find its Disarchive specification
failed to download "/tmp/guix-file.SewhkN" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test 5
location: /home/bost/dev/guix/tests/hackage.scm:207
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.7l0DGM
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.7l0DGM
From https://web.archive.org/web/20211114154139/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20211114154139/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.7l0DGM...
could not find its Disarchive specification
failed to download "/tmp/guix-file.7l0DGM" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test 6
location: /home/bost/dev/guix/tests/hackage.scm:238
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.ywzUeK
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.ywzUeK
From https://web.archive.org/web/20211114154140/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20211114154140/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.ywzUeK...
could not find its Disarchive specification
failed to download "/tmp/guix-file.ywzUeK" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test multiline desc (layout)
location: /home/bost/dev/guix/tests/hackage.scm:256
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.e234mM
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.e234mM
From https://web.archive.org/web/20211114154141/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20211114154141/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.e234mM...
could not find its Disarchive specification
failed to download "/tmp/guix-file.e234mM" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test multiline desc (braced)
location: /home/bost/dev/guix/tests/hackage.scm:276
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: /home/bost/dev/guix/tests/hackage.scm:296
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.eFqZLO
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.eFqZLO
From https://web.archive.org/web/20211114154143/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20211114154143/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.eFqZLO...
could not find its Disarchive specification
failed to download "/tmp/guix-file.eFqZLO" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test flag executable
location: /home/bost/dev/guix/tests/hackage.scm:321
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.9qijaM
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.9qijaM
From https://web.archive.org/web/20211114154144/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20211114154144/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.9qijaM...
could not find its Disarchive specification
failed to download "/tmp/guix-file.9qijaM" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test cabal revision
location: /home/bost/dev/guix/tests/hackage.scm:366
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: /home/bost/dev/guix/tests/hackage.scm:369
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.zewZwM
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.zewZwM
From https://web.archive.org/web/20211114154145/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz...
download failed "https://web.archive.org/web/20211114154145/https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz" 404 "NOT FOUND"
Trying to use Disarchive to assemble /tmp/guix-file.zewZwM...
could not find its Disarchive specification
failed to download "/tmp/guix-file.zewZwM" from "https://hackage.haskell.org/package/foo/foo-1.0.0.tar.gz"
test-name: hackage->guix-package test cabal import
location: /home/bost/dev/guix/tests/hackage.scm:428
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
FAIL: tests/home-import
=======================
test-name: manifest->code: No services
location: /home/bost/dev/guix/tests/home-import.scm:159
source:
+ (test-assert
+ "manifest->code: No services"
+ (eval-test-with-home-environment
+ '()
+ (make-manifest (list guile-2.0.9 gcc glibc))
+ match-home-environment-no-services))
actual-value: #t
result: PASS
test-name: manifest->code: No services, package transformations
location: /home/bost/dev/guix/tests/home-import.scm:165
source:
+ (test-assert
+ "manifest->code: No services, package transformations"
+ (eval-test-with-home-environment
+ '()
+ (make-manifest
+ (list (manifest-entry
+ (inherit guile-2.0.9)
+ (properties `((transformations (foo . "bar")))))
+ gcc
+ glibc))
+ match-home-environment-transformations))
actual-value: #t
result: PASS
test-name: manifest->code: No packages nor services
location: /home/bost/dev/guix/tests/home-import.scm:175
source:
+ (test-assert
+ "manifest->code: No packages nor services"
+ (eval-test-with-home-environment
+ '()
+ (make-manifest '())
+ match-home-environment-no-services-nor-packages))
actual-value: #t
result: PASS
;;; (fail (begin (use-modules (gnu home) (gnu packages) (gnu services) (guix gexp) (gnu home services shells)) (home-environment (packages (map specification->package (list))) (services (list (service home-bash-service-type (home-bash-configuration (aliases (quote ())) (bashrc (list (local-file "/tmp/guix-config/.bashrc" "bashrc"))))))))) #f)
test-name: manifest->code: Bash service
location: /home/bost/dev/guix/tests/home-import.scm:181
source:
+ (test-assert
+ "manifest->code: Bash service"
+ (eval-test-with-home-environment
+ '((".bashrc" . "echo 'hello guix'"))
+ (make-manifest '())
+ match-home-environment-bash-service))
actual-value: #f
result: FAIL
SKIP: tests/import-git
======================
test-name: latest-git-tag-version: no custom prefix, suffix, and delimiter
location: /home/bost/dev/guix/tests/import-git.scm:50
source:
+ (test-equal
+ "latest-git-tag-version: no custom prefix, suffix, and delimiter"
+ "1.0.1"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "1.0.1" "Release 1.0.1"))
+ (let ((package (make-package directory "1.0.0")))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: custom prefix, no suffix and delimiter
location: /home/bost/dev/guix/tests/import-git.scm:60
source:
+ (test-equal
+ "latest-git-tag-version: custom prefix, no suffix and delimiter"
+ "1.0.1"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "prefix-1.0.1" "Release 1.0.1"))
+ (let ((package
+ (make-package
+ directory
+ "1.0.0"
+ '((release-tag-prefix . "prefix-")))))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: custom suffix, no prefix and delimiter
location: /home/bost/dev/guix/tests/import-git.scm:71
source:
+ (test-equal
+ "latest-git-tag-version: custom suffix, no prefix and delimiter"
+ "1.0.1"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "1.0.1-suffix-123" "Release 1.0.1"))
+ (let ((package
+ (make-package
+ directory
+ "1.0.0"
+ '((release-tag-suffix . "-suffix-[0-9]*")))))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: custom delimiter, no prefix and suffix
location: /home/bost/dev/guix/tests/import-git.scm:82
source:
+ (test-equal
+ "latest-git-tag-version: custom delimiter, no prefix and suffix"
+ "2021.09.07"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "2021-09-07" "Release 2021-09-07"))
+ (let ((package
+ (make-package
+ directory
+ "2021-09-06"
+ '((release-tag-version-delimiter . "-")))))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: empty delimiter, no prefix and suffix
location: /home/bost/dev/guix/tests/import-git.scm:93
source:
+ (test-equal
+ "latest-git-tag-version: empty delimiter, no prefix and suffix"
+ "20210907"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "20210907" "Release 20210907"))
+ (let ((package
+ (make-package
+ directory
+ "20210906"
+ '((release-tag-version-delimiter . "")))))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: custom prefix and suffix, no delimiter
location: /home/bost/dev/guix/tests/import-git.scm:104
source:
+ (test-equal
+ "latest-git-tag-version: custom prefix and suffix, no delimiter"
+ "2.0.0"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "Release-2.0.0suffix-1" "Release 2.0.0"))
+ (let ((package
+ (make-package
+ directory
+ "1.0.0"
+ '((release-tag-prefix . "Release-")
+ (release-tag-suffix . "suffix-[0-9]")))))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: custom prefix, suffix, and delimiter
location: /home/bost/dev/guix/tests/import-git.scm:116
source:
+ (test-equal
+ "latest-git-tag-version: custom prefix, suffix, and delimiter"
+ "2.0.0"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "Release-2_0_0suffix-1" "Release 2.0.0"))
+ (let ((package
+ (make-package
+ directory
+ "1.0.0"
+ '((release-tag-prefix . "Release-")
+ (release-tag-suffix . "suffix-[0-9]")
+ (release-tag-version-delimiter . "_")))))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: only pre-releases available
location: /home/bost/dev/guix/tests/import-git.scm:129
source:
+ (test-equal
+ "latest-git-tag-version: only pre-releases available"
+ #f
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "2.0.0-rc1" "Release candidate for 2.0.0"))
+ (let ((package (make-package directory "1.0.0")))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: accept pre-releases
location: /home/bost/dev/guix/tests/import-git.scm:139
source:
+ (test-equal
+ "latest-git-tag-version: accept pre-releases"
+ "2.0.0-rc1"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "2.0.0-rc1" "Release candidate for 2.0.0"))
+ (let ((package
+ (make-package
+ directory
+ "1.0.0"
+ '((accept-pre-releases? . #t)))))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: accept pre-releases, and custom prefix
location: /home/bost/dev/guix/tests/import-git.scm:150
source:
+ (test-equal
+ "latest-git-tag-version: accept pre-releases, and custom prefix"
+ "2.0.0-rc1"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "version-2.0.0-rc1"
+ "Release candidate for 2.0.0"))
+ (let ((package
+ (make-package
+ directory
+ "1.0.0"
+ '((accept-pre-releases? . #t)
+ (release-tag-prefix . "version-")))))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: accept pre-releases, and custom suffix
location: /home/bost/dev/guix/tests/import-git.scm:162
source:
+ (test-equal
+ "latest-git-tag-version: accept pre-releases, and custom suffix"
+ "2.0.0-rc1"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "2.0.0-rc1-suffix"
+ "Release candidate for 2.0.0"))
+ (let ((package
+ (make-package
+ directory
+ "1.0.0"
+ '((accept-pre-releases? . #t)
+ (release-tag-suffix . "-suffix")))))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: accept pre-releases, delimiter conflicts with pre-release part
location: /home/bost/dev/guix/tests/import-git.scm:174
source:
+ (test-equal
+ "latest-git-tag-version: accept pre-releases, delimiter conflicts with pre-release part"
+ "2.0.0_alpha"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "2_0_0_alpha" "Alpha release for 2.0.0"))
+ (let ((package
+ (make-package
+ directory
+ "1.0.0"
+ '((accept-pre-releases? . #t)
+ (release-tag-version-delimiter . "_")))))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: accept pre-releases, and custom suffix and prefix
location: /home/bost/dev/guix/tests/import-git.scm:186
source:
+ (test-equal
+ "latest-git-tag-version: accept pre-releases, and custom suffix and prefix"
+ "2.0.0-alpha"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "prefix123-2.0.0-alpha-suffix"
+ "Alpha release for 2.0.0"))
+ (let ((package
+ (make-package
+ directory
+ "1.0.0"
+ '((accept-pre-releases? . #t)
+ (release-tag-prefix . "prefix[0-9]{3}-")
+ (release-tag-suffix . "-suffix")))))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: accept pre-releases, and custom suffix, prefix, and delimiter
location: /home/bost/dev/guix/tests/import-git.scm:199
source:
+ (test-equal
+ "latest-git-tag-version: accept pre-releases, and custom suffix, prefix, and delimiter"
+ "2.0.0-alpha"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "prefix123-2-0-0-alpha-suffix"
+ "Alpha release for 2.0.0"))
+ (let ((package
+ (make-package
+ directory
+ "1.0.0"
+ '((accept-pre-releases? . #t)
+ (release-tag-prefix . "prefix[0-9]{3}-")
+ (release-tag-suffix . "-suffix")
+ (release-tag-version-delimiter . "-")))))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: accept pre-releases, no delimiter, and custom suffix, prefix
location: /home/bost/dev/guix/tests/import-git.scm:213
source:
+ (test-equal
+ "latest-git-tag-version: accept pre-releases, no delimiter, and custom suffix, prefix"
+ "2alpha"
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "prefix123-2alpha-suffix"
+ "Alpha release for version 2"))
+ (let ((package
+ (make-package
+ directory
+ "1.0.0"
+ '((accept-pre-releases? . #t)
+ (release-tag-prefix . "prefix[0-9]{3}-")
+ (release-tag-suffix . "-suffix")
+ (release-tag-version-delimiter . "")))))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: no tags found
location: /home/bost/dev/guix/tests/import-git.scm:227
source:
+ (test-equal
+ "latest-git-tag-version: no tags found"
+ #f
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A") (commit "First commit"))
+ (let ((package (make-package directory "1.0.0")))
+ (latest-git-tag-version package))))
result: SKIP
test-name: latest-git-tag-version: no valid tags found
location: /home/bost/dev/guix/tests/import-git.scm:236
source:
+ (test-equal
+ "latest-git-tag-version: no valid tags found"
+ #f
+ (with-temporary-git-repository
+ directory
+ '((add "a.txt" "A")
+ (commit "First commit")
+ (tag "Test" "Test tag"))
+ (let ((package (make-package directory "1.0.0")))
+ (latest-git-tag-version package))))
result: SKIP
SKIP: tests/pypi
================
test-name: guix-package->pypi-name, old URL style
location: /home/bost/dev/guix/tests/pypi.scm:154
source:
+ (test-equal
+ "guix-package->pypi-name, old URL style"
+ "psutil"
+ (guix-package->pypi-name
+ (dummy-package
+ "foo"
+ (source
+ (dummy-origin
+ (uri "https://pypi.org/packages/source/p/psutil/psutil-4.3.0.tar.gz"))))))
expected-value: "psutil"
actual-value: "psutil"
result: PASS
test-name: guix-package->pypi-name, new URL style
location: /home/bost/dev/guix/tests/pypi.scm:162
source:
+ (test-equal
+ "guix-package->pypi-name, new URL style"
+ "certbot"
+ (guix-package->pypi-name
+ (dummy-package
+ "foo"
+ (source
+ (dummy-origin
+ (uri "https://pypi.org/packages/a2/3b/4756e6a0ceb14e084042a2a65c615d68d25621c6fd446d0fc10d14c4ce7d/certbot-0.8.1.tar.gz"))))))
expected-value: "certbot"
actual-value: "certbot"
result: PASS
test-name: guix-package->pypi-name, several URLs
location: /home/bost/dev/guix/tests/pypi.scm:170
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: /home/bost/dev/guix/tests/pypi.scm:179
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: /home/bost/dev/guix/tests/pypi.scm:186
source:
+ (test-equal
+ "specification->requirement-name"
+ '("Fizzy"
+ "PickyThing"
+ "SomethingWithMarker"
+ "requests"
+ "pip")
+ (map specification->requirement-name
+ test-specifications))
expected-value: ("Fizzy" "PickyThing" "SomethingWithMarker" "requests" "pip")
actual-value: ("Fizzy" "PickyThing" "SomethingWithMarker" "requests" "pip")
result: PASS
test-name: parse-requires.txt
location: /home/bost/dev/guix/tests/pypi.scm:190
source:
+ (test-equal
+ "parse-requires.txt"
+ (list '("foo" "bar") '("pytest"))
+ (mock ((ice-9 ports)
+ call-with-input-file
+ call-with-input-string)
+ (parse-requires.txt test-requires.txt)))
expected-value: (("foo" "bar") ("pytest"))
actual-value: (("foo" "bar") ("pytest"))
result: PASS
test-name: parse-requires.txt - Beaker
location: /home/bost/dev/guix/tests/pypi.scm:196
source:
+ (test-equal
+ "parse-requires.txt - Beaker"
+ (list '() '("Mock" "coverage"))
+ (mock ((ice-9 ports)
+ call-with-input-file
+ call-with-input-string)
+ (parse-requires.txt test-requires.txt-beaker)))
expected-value: (() ("Mock" "coverage"))
actual-value: (() ("Mock" "coverage"))
result: PASS
test-name: parse-wheel-metadata, with extras
location: /home/bost/dev/guix/tests/pypi.scm:202
source:
+ (test-equal
+ "parse-wheel-metadata, with extras"
+ (list '("wrapt" "bar") '("tox" "bumpversion"))
+ (mock ((ice-9 ports)
+ call-with-input-file
+ call-with-input-string)
+ (parse-wheel-metadata test-metadata-with-extras)))
expected-value: (("wrapt" "bar") ("tox" "bumpversion"))
actual-value: (("wrapt" "bar") ("tox" "bumpversion"))
result: PASS
test-name: parse-wheel-metadata, with extras - Jedi
location: /home/bost/dev/guix/tests/pypi.scm:208
source:
+ (test-equal
+ "parse-wheel-metadata, with extras - Jedi"
+ (list '("parso") '("pytest"))
+ (mock ((ice-9 ports)
+ call-with-input-file
+ call-with-input-string)
+ (parse-wheel-metadata
+ test-metadata-with-extras-jedi)))
expected-value: (("parso") ("pytest"))
actual-value: (("parso") ("pytest"))
result: PASS
test-name: pypi->guix-package, no wheel
location: /home/bost/dev/guix/tests/pypi.scm:214
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
+ ('quasiquote
+ (("python-bar" ('unquote 'python-bar))
+ ("python-foo" ('unquote 'python-foo)))))
+ ('native-inputs
+ ('quasiquote
+ (("python-pytest" ('unquote 'python-pytest)))))
+ ('home-page "http://example.com")
+ ('synopsis "summary")
+ ('description "summary")
+ ('license 'license:lgpl2.0))
+ (and (string=?
+ (bytevector->nix-base32-string test-source-hash)
+ hash)
+ (equal?
+ (pypi->guix-package "foo" #:version "1.0.0")
+ (pypi->guix-package "foo"))
+ (catch 'quit
+ (lambda ()
+ (pypi->guix-package
+ "foo"
+ #:version
+ "42"))
+ (const #t))))
+ (x (pk 'fail x #f))))))
actual-value: #t
result: PASS
test-name: pypi->guix-package, wheels
location: /home/bost/dev/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
+ ('quasiquote
+ (("python-bar" ('unquote 'python-bar))
+ ("python-baz" ('unquote 'python-baz)))))
+ ('native-inputs
+ ('quasiquote
+ (("python-pytest" ('unquote 'python-pytest)))))
+ ('home-page "http://example.com")
+ ('synopsis "summary")
+ ('description "summary")
+ ('license 'license:lgpl2.0))
+ (string=?
+ (bytevector->nix-base32-string test-source-hash)
+ hash))
+ (x (pk 'fail x #f))))))
result: SKIP
test-name: pypi->guix-package, no usable requirement file.
location: /home/bost/dev/guix/tests/pypi.scm:344
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: /home/bost/dev/guix/tests/pypi.scm:390
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
+ ('quasiquote
+ (("python-bar" ('unquote 'python-bar))
+ ("python-foo" ('unquote 'python-foo)))))
+ ('native-inputs
+ ('quasiquote
+ (("python-pytest" ('unquote 'python-pytest)))))
+ ('home-page "http://example.com")
+ ('synopsis "summary")
+ ('description "summary")
+ ('license 'license:lgpl2.0))
+ (string=?
+ (bytevector->nix-base32-string test-source-hash)
+ hash))
+ (x (pk 'fail x #f))))))
actual-value: #t
result: PASS
error: no source release for pypi package foo 42
warning: Cannot guess requirements from source archive: no requires.txt file found.
RUN: tests/services/configuration
=================================
test-name: default value, no serialization
location: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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/syscalls
====================
test-name: mount, ENOENT
location: /home/bost/dev/guix/tests/syscalls.scm:43
source:
+ (test-equal
+ "mount, ENOENT"
+ ENOENT
+ (catch 'system-error
+ (lambda ()
+ (mount "/dev/null" "/does-not-exist" "ext2")
+ #f)
+ (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS
test-name: umount, ENOENT/EPERM
location: /home/bost/dev/guix/tests/syscalls.scm:51
source:
+ (test-assert
+ "umount, ENOENT/EPERM"
+ (catch 'system-error
+ (lambda () (umount "/does-not-exist") #f)
+ (lambda args
+ (memv (system-error-errno args)
+ (list EPERM ENOENT)))))
actual-value: (2)
result: PASS
test-name: mounts
location: /home/bost/dev/guix/tests/syscalls.scm:60
source:
+ (test-assert
+ "mounts"
+ (let ((mounts (mounts)))
+ (any (match-lambda
+ ((point . type)
+ (let ((mount (find (lambda (mount)
+ (string=? (mount-point mount) point))
+ mounts)))
+ (and mount (string=? (mount-type mount) type)))))
+ '(("/proc" . "proc")
+ ("/sys" . "sysfs")
+ ("/dev/shm" . "tmpfs")))))
actual-value: #t
result: PASS
test-name: mount-points
location: /home/bost/dev/guix/tests/syscalls.scm:74
source:
+ (test-assert
+ "mount-points"
+ (any (cute member <> (mount-points))
+ '("/" "/proc" "/sys" "/dev")))
actual-value: ("/" "/boot/efi1" "/dev/pts" "/sys/kernel/debug" "/dev/shm" "/sys/firmware/efi/efivars" "/gnu/store" "/run/systemd" "/run/user" "/sys/fs/cgroup" "/sys/fs/cgroup/elogind" "/sys/fs/cgroup/cpuset" "/sys/fs/cgroup/cpu" "/sys/fs/cgroup/cpuacct" "/sys/fs/cgroup/memory" "/sys/fs/cgroup/devices" "/sys/fs/cgroup/freezer" "/sys/fs/cgroup/blkio" "/sys/fs/cgroup/perf_event" "/sys/fs/cgroup/pids" "/var/cache/fontconfig" "/sys/fs/cgroup/unified" "/run/user/983" "/run/user/1000" "/run/user/1000/gvfs")
result: PASS
test-name: utime with AT_SYMLINK_NOFOLLOW
location: /home/bost/dev/guix/tests/syscalls.scm:81
source:
+ (test-equal
+ "utime with AT_SYMLINK_NOFOLLOW"
+ '(0 0)
+ (begin
+ (symlink "/nowhere" temp-file)
+ (utime temp-file 0 0 0 0 AT_SYMLINK_NOFOLLOW)
+ (let ((st (lstat temp-file)))
+ (delete-file temp-file)
+ (list (stat:mtime st) (stat:atime st)))))
expected-value: (0 0)
actual-value: (0 0)
result: PASS
test-name: swapon, ENOSYS/ENOENT/EPERM
location: /home/bost/dev/guix/tests/syscalls.scm:93
source:
+ (test-assert
+ "swapon, ENOSYS/ENOENT/EPERM"
+ (catch 'system-error
+ (lambda () (swapon "/does-not-exist") #f)
+ (lambda args
+ (memv (system-error-errno args)
+ (list EPERM ENOENT ENOSYS)))))
actual-value: (1 2 38)
result: PASS
test-name: swapoff, ENOSYS/ENOENT/EINVAL/EPERM
location: /home/bost/dev/guix/tests/syscalls.scm:101
source:
+ (test-assert
+ "swapoff, ENOSYS/ENOENT/EINVAL/EPERM"
+ (catch 'system-error
+ (lambda () (swapoff "/does-not-exist") #f)
+ (lambda args
+ (memv (system-error-errno args)
+ (list EPERM EINVAL ENOENT ENOSYS)))))
actual-value: (1 22 2 38)
result: PASS
test-name: mkdtemp!
location: /home/bost/dev/guix/tests/syscalls.scm:109
source:
+ (test-assert
+ "mkdtemp!"
+ (let* ((tmp (or (getenv "TMPDIR") "/tmp"))
+ (dir (mkdtemp!
+ (string-append tmp "/guix-test-XXXXXX"))))
+ (and (file-exists? dir) (begin (rmdir dir) #t))))
actual-value: #t
result: PASS
test-name: statfs, ENOENT
location: /home/bost/dev/guix/tests/syscalls.scm:117
source:
+ (test-equal
+ "statfs, ENOENT"
+ ENOENT
+ (catch 'system-error
+ (lambda () (statfs "/does-not-exist"))
+ (compose system-error-errno list)))
expected-value: 2
actual-value: 2
result: PASS
test-name: statfs
location: /home/bost/dev/guix/tests/syscalls.scm:124
source:
+ (test-assert
+ "statfs"
+ (let ((fs (statfs "/")))
+ (and (file-system? fs)
+ (> (file-system-block-size fs) 0)
+ (>= (file-system-blocks-available fs) 0)
+ (>= (file-system-blocks-free fs)
+ (file-system-blocks-available fs)))))
actual-value: #t
result: PASS
test-name: clone
location: /home/bost/dev/guix/tests/syscalls.scm:141
source:
+ (test-assert
+ "clone"
+ (match (clone (logior CLONE_NEWUSER SIGCHLD))
+ (0 (primitive-exit 42))
+ (pid (and (not (equal?
+ (readlink (user-namespace pid))
+ (readlink (user-namespace (getpid)))))
+ (match (waitpid pid)
+ ((_ . status) (= 42 (status:exit-val status))))))))
actual-value: #t
result: PASS
test-name: setns
location: /home/bost/dev/guix/tests/syscalls.scm:154
source:
+ (test-assert
+ "setns"
+ (match (clone (logior CLONE_NEWUSER SIGCHLD))
+ (0 (primitive-exit 0))
+ (clone-pid
+ (match (pipe)
+ ((in . out)
+ (match (primitive-fork)
+ (0
+ (close in)
+ (call-with-input-file
+ (user-namespace clone-pid)
+ (lambda (port) (setns (port->fdes port) 0)))
+ (write 'done out)
+ (close out)
+ (primitive-exit 0))
+ (fork-pid
+ (close out)
+ (read in)
+ (let ((result
+ (and (equal?
+ (readlink
+ (user-namespace clone-pid))
+ (readlink
+ (user-namespace fork-pid))))))
+ (waitpid clone-pid)
+ (waitpid fork-pid)
+ result))))))))
actual-value: #t
result: PASS
test-name: pivot-root
location: /home/bost/dev/guix/tests/syscalls.scm:183
source:
+ (test-equal
+ "pivot-root"
+ 'success!
+ (match (socketpair AF_UNIX SOCK_STREAM 0)
+ ((parent . child)
+ (match (clone (logior CLONE_NEWUSER CLONE_NEWNS SIGCHLD))
+ (0
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (close parent)
+ (call-with-temporary-directory
+ (lambda (root)
+ (display "ready\n" child)
+ (read child)
+ (let ((put-old (string-append root "/real-root")))
+ (mount "none" root "tmpfs")
+ (mkdir put-old)
+ (call-with-output-file
+ (string-append root "/test")
+ (lambda (port) (display "testing\n" port)))
+ (pivot-root root put-old)
+ (write (and (file-exists? "/test") 'success!)
+ child)
+ (close child)))))
+ (lambda () (primitive-exit 0))))
+ (pid (close child)
+ (match (read parent)
+ ('ready
+ (call-with-output-file
+ (format #f "/proc/~d/setgroups" pid)
+ (lambda (port) (display "deny" port)))
+ (call-with-output-file
+ (format #f "/proc/~d/uid_map" pid)
+ (lambda (port)
+ (format port "0 ~d 1" (getuid))))
+ (call-with-output-file
+ (format #f "/proc/~d/gid_map" pid)
+ (lambda (port)
+ (format port "0 ~d 1" (getgid))))
+ (display "go!\n" parent)
+ (let ((result (read parent)))
+ (close parent)
+ (and (zero? (match (waitpid pid)
+ ((_ . status)
+ (status:exit-val
+ status))))
+ result)))))))))
expected-value: success!
actual-value: success!
result: PASS
test-name: scandir*, ENOENT
location: /home/bost/dev/guix/tests/syscalls.scm:232
source:
+ (test-equal
+ "scandir*, ENOENT"
+ ENOENT
+ (catch 'system-error
+ (lambda () (scandir* "/does/not/exist"))
+ (lambda args (system-error-errno args))))
expected-value: 2
actual-value: 2
result: PASS
test-name: scandir*, ASCII file names
location: /home/bost/dev/guix/tests/syscalls.scm:240
source:
+ (test-equal
+ "scandir*, ASCII file names"
+ (scandir
+ (dirname
+ (search-path %load-path "guix/base32.scm"))
+ (const #t)
+ string<?)
+ (match (scandir*
+ (dirname
+ (search-path %load-path "guix/base32.scm")))
+ (((names . properties) ...) names)))
expected-value: ("." ".." "android-repo-download.go" "android-repo-download.scm" "avahi.go" "avahi.scm" "base16.go" "base16.scm" "base32.go" "base32.scm" "base64.go" "base64.scm" "build" "build-system" "build-system.go" "build-system.go.8vDaZ3" "build-system.scm" "bzr-download.go" "bzr-download.scm" "cache.go" "cache.scm" "channels.go" "channels.scm" "ci.go" "ci.scm" "colors.go" "colors.scm" "combinators.go" "combinators.scm" "config.go" "config.scm" "config.scm.in" "cpio.go" "cpio.scm" "cve.go" "cve.go.0Q3a74" "cve.scm" "cvs-download.go" "cvs-download.scm" "d3.v3.js" "deprecation.go" "deprecation.scm" "derivations.go" "derivations.scm" "describe.go" "describe.scm" "diagnostics.go" "diagnostics.scm" "discovery.go" "discovery.scm" "docker.go" "docker.scm" "download.go" "download.scm" "elf.go" "elf.scm" "extracting-download.go" "extracting-download.scm" "ftp-client.go" "ftp-client.scm" "gexp.go" "gexp.go.f8Jvc4" "gexp.scm" "git-authenticate.go" "git-authenticate.scm" "git-download.go" "git-download.scm" "git.go" "git.scm" "glob.go" "glob.scm" "gnu-maintenance.go" "gnu-maintenance.scm" "gnupg.go" "gnupg.scm" "grafts.go" "grafts.scm" "graph.go" "graph.js" "graph.scm" "hg-download.go" "hg-download.scm" "http-client.go" "http-client.scm" "i18n.go" "i18n.scm" "import" "inferior.go" "inferior.scm" "ipfs.go" "ipfs.go.xLBVA4" "ipfs.scm" "licenses.go" "licenses.scm" "lint.go" "lint.go.w9uLf5" "lint.scm" "man-db.scm" "memoization.go" "memoization.scm" "modules.go" "modules.scm" "monad-repl.go" "monad-repl.scm" "monads.go" "monads.scm" "nar.go" "nar.scm" "narinfo.go" "narinfo.scm" "openpgp.go" "openpgp.scm" "packages.go" "packages.scm" "pki.go" "pki.scm" "profiles.go" "profiles.go.94dGC6" "profiles.scm" "profiling.go" "profiling.scm" "progress.go" "progress.scm" "quirks.go" "quirks.scm" "records.go" "records.scm" "remote.go" "remote.scm" "repl.go" "repl.scm" "scripts" "scripts.go" "scripts.scm" "search-paths.go" "search-paths.scm" "self.go" "self.scm" "serialization.go" "serialization.scm" "sets.go" "sets.scm" "ssh.go" "ssh.scm" "status.go" "status.scm" "store" "store.go" "store.scm" "substitutes.go" "substitutes.scm" "svn-download.go" "svn-download.scm" "swh.go" "swh.scm" "tests" "tests.go" "tests.scm" "transformations.go" "transformations.scm" "ui.go" "ui.scm" "upstream.go" "upstream.scm" "utils.go" "utils.scm" "workers.go" "workers.scm")
actual-value: ("." ".." "android-repo-download.go" "android-repo-download.scm" "avahi.go" "avahi.scm" "base16.go" "base16.scm" "base32.go" "base32.scm" "base64.go" "base64.scm" "build" "build-system" "build-system.go" "build-system.go.8vDaZ3" "build-system.scm" "bzr-download.go" "bzr-download.scm" "cache.go" "cache.scm" "channels.go" "channels.scm" "ci.go" "ci.scm" "colors.go" "colors.scm" "combinators.go" "combinators.scm" "config.go" "config.scm" "config.scm.in" "cpio.go" "cpio.scm" "cve.go" "cve.go.0Q3a74" "cve.scm" "cvs-download.go" "cvs-download.scm" "d3.v3.js" "deprecation.go" "deprecation.scm" "derivations.go" "derivations.scm" "describe.go" "describe.scm" "diagnostics.go" "diagnostics.scm" "discovery.go" "discovery.scm" "docker.go" "docker.scm" "download.go" "download.scm" "elf.go" "elf.scm" "extracting-download.go" "extracting-download.scm" "ftp-client.go" "ftp-client.scm" "gexp.go" "gexp.go.f8Jvc4" "gexp.scm" "git-authenticate.go" "git-authenticate.scm" "git-download.go" "git-download.scm" "git.go" "git.scm" "glob.go" "glob.scm" "gnu-maintenance.go" "gnu-maintenance.scm" "gnupg.go" "gnupg.scm" "grafts.go" "grafts.scm" "graph.go" "graph.js" "graph.scm" "hg-download.go" "hg-download.scm" "http-client.go" "http-client.scm" "i18n.go" "i18n.scm" "import" "inferior.go" "inferior.scm" "ipfs.go" "ipfs.go.xLBVA4" "ipfs.scm" "licenses.go" "licenses.scm" "lint.go" "lint.go.w9uLf5" "lint.scm" "man-db.scm" "memoization.go" "memoization.scm" "modules.go" "modules.scm" "monad-repl.go" "monad-repl.scm" "monads.go" "monads.scm" "nar.go" "nar.scm" "narinfo.go" "narinfo.scm" "openpgp.go" "openpgp.scm" "packages.go" "packages.scm" "pki.go" "pki.scm" "profiles.go" "profiles.go.94dGC6" "profiles.scm" "profiling.go" "profiling.scm" "progress.go" "progress.scm" "quirks.go" "quirks.scm" "records.go" "records.scm" "remote.go" "remote.scm" "repl.go" "repl.scm" "scripts" "scripts.go" "scripts.scm" "search-paths.go" "search-paths.scm" "self.go" "self.scm" "serialization.go" "serialization.scm" "sets.go" "sets.scm" "ssh.go" "ssh.scm" "status.go" "status.scm" "store" "store.go" "store.scm" "substitutes.go" "substitutes.scm" "svn-download.go" "svn-download.scm" "swh.go" "swh.scm" "tests" "tests.go" "tests.scm" "transformations.go" "transformations.scm" "ui.go" "ui.scm" "upstream.go" "upstream.scm" "utils.go" "utils.scm" "workers.go" "workers.scm")
result: PASS
test-name: scandir*, UTF-8 file names
location: /home/bost/dev/guix/tests/syscalls.scm:247
source:
+ (test-equal
+ "scandir*, UTF-8 file names"
+ '("." ".." "?" "?")
+ (call-with-temporary-directory
+ (lambda (directory)
+ (let ((creat (pointer->procedure
+ int
+ (dynamic-func "creat" (dynamic-link))
+ (list '* int))))
+ (creat (string->pointer
+ (string-append directory "/?")
+ "UTF-8")
+ 420)
+ (creat (string->pointer
+ (string-append directory "/?")
+ "UTF-8")
+ 420)
+ (let ((locale (setlocale LC_ALL)))
+ (dynamic-wind
+ (lambda () (setlocale LC_ALL "C"))
+ (lambda ()
+ (match (scandir* directory)
+ (((names . properties) ...) names)))
+ (lambda () (setlocale LC_ALL locale))))))))
expected-value: ("." ".." "?" "?")
actual-value: ("." ".." "?" "?")
result: PASS
test-name: scandir*, properties
location: /home/bost/dev/guix/tests/syscalls.scm:274
source:
+ (test-assert
+ "scandir*, properties"
+ (let ((directory
+ (dirname
+ (search-path %load-path "guix/base32.scm"))))
+ (every (lambda (entry name)
+ (match entry
+ ((name2 . properties)
+ (and (string=? name2 name)
+ (let* ((full (string-append directory "/" name))
+ (stat (lstat full))
+ (inode (assoc-ref properties 'inode))
+ (type (assoc-ref properties 'type)))
+ (and (= inode (stat:ino stat))
+ (or (eq? type 'unknown)
+ (eq? type (stat:type stat)))))))))
+ (scandir* directory)
+ (scandir directory (const #t) string<?))))
actual-value: #t
result: PASS
test-name: getxattr, setxattr
location: /home/bost/dev/guix/tests/syscalls.scm:291
source:
+ (test-assert
+ "getxattr, setxattr"
+ (let ((key "user.translator")
+ (value "/hurd/pfinet\x00")
+ (file (open-file temp-file "w0")))
+ (catch 'system-error
+ (lambda ()
+ (setxattr temp-file key value)
+ (string=? (getxattr temp-file key) value))
+ (lambda args
+ (memv (system-error-errno args) (list ENOTSUP))))))
actual-value: #t
result: PASS
warning: failed to delete /tmp/guix-directory.iP4vwx/??: No such file or directory
warning: failed to delete /tmp/guix-directory.iP4vwx/??: No such file or directory
test-name: fcntl-flock wait
location: /home/bost/dev/guix/tests/syscalls.scm:305
source:
+ (test-equal
+ "fcntl-flock wait"
+ 42
+ (let ((file (open-file temp-file "w0b")))
+ (fcntl-flock file 'write-lock)
+ (match (primitive-fork)
+ (0
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (let ((file (open-file temp-file "r0b")))
+ (fcntl-flock file 'read-lock)
+ (primitive-exit (read file)))
+ (primitive-exit 1))
+ (lambda () (primitive-exit 2))))
+ (pid (display "hello, world!" file)
+ (force-output file)
+ (sleep 1)
+ (seek file 0 SEEK_SET)
+ (truncate-file file 0)
+ (write 42 file)
+ (force-output file)
+ (fcntl-flock file 'unlock)
+ (match (waitpid pid)
+ ((_ . status)
+ (let ((result (status:exit-val status)))
+ (close-port file)
+ result)))))))
expected-value: 42
actual-value: 42
result: PASS
;;; (errno 11)
warning: failed to delete /tmp/guix-directory.iP4vwx/??: No such file or directory
warning: failed to delete /tmp/guix-directory.iP4vwx/??: No such file or directory
test-name: fcntl-flock non-blocking
location: /home/bost/dev/guix/tests/syscalls.scm:344
source:
+ (test-equal
+ "fcntl-flock non-blocking"
+ EAGAIN
+ (match (pipe)
+ ((input . output)
+ (match (primitive-fork)
+ (0
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (close-port output)
+ (read-char input)
+ (let ((file (open-file temp-file "w0")))
+ (catch 'flock-error
+ (lambda ()
+ (fcntl-flock file 'write-lock #:wait? #f))
+ (lambda (key errno)
+ (primitive-exit (pk 'errno errno)))))
+ (primitive-exit -1))
+ (lambda () (primitive-exit -2))))
+ (pid (close-port input)
+ (let ((file (open-file temp-file "w0")))
+ (fcntl-flock file 'write-lock)
+ (write 'green-light output)
+ (force-output output)
+ (match (waitpid pid)
+ ((_ . status)
+ (let ((result (status:exit-val status)))
+ (fcntl-flock file 'unlock)
+ (close-port file)
+ result)))))))))
expected-value: 11
actual-value: 11
result: PASS
test-name: set-thread-name
location: /home/bost/dev/guix/tests/syscalls.scm:386
source:
+ (test-equal
+ "set-thread-name"
+ "Syscall Test"
+ (let ((name (thread-name)))
+ (set-thread-name "Syscall Test")
+ (let ((new-name (thread-name)))
+ (set-thread-name name)
+ new-name)))
expected-value: "Syscall Test"
actual-value: "Syscall Test"
result: PASS
test-name: all-network-interface-names
location: /home/bost/dev/guix/tests/syscalls.scm:394
source:
+ (test-assert
+ "all-network-interface-names"
+ (match (all-network-interface-names)
+ (((? string? names) ..1) (member "lo" names))))
actual-value: ("lo" "enp3s0")
result: PASS
test-name: network-interface-names
location: /home/bost/dev/guix/tests/syscalls.scm:399
source:
+ (test-assert
+ "network-interface-names"
+ (match (remove
+ (lambda (interface)
+ (string-contains interface ":"))
+ (network-interface-names))
+ (((? string? names) ..1)
+ (lset<=
+ string=?
+ names
+ (all-network-interface-names)))))
actual-value: #t
result: PASS
test-name: network-interface-flags
location: /home/bost/dev/guix/tests/syscalls.scm:408
source:
+ (test-assert
+ "network-interface-flags"
+ (let* ((sock (socket AF_INET SOCK_STREAM 0))
+ (flags (network-interface-flags sock "lo")))
+ (close-port sock)
+ (and (not (zero? (logand flags IFF_LOOPBACK)))
+ (not (zero? (logand flags IFF_UP))))))
actual-value: #t
result: PASS
test-name: loopback-network-interface?
location: /home/bost/dev/guix/tests/syscalls.scm:415
source:
+ (test-equal
+ "loopback-network-interface?"
+ ENODEV
+ (and (loopback-network-interface? "lo")
+ (catch 'system-error
+ (lambda ()
+ (loopback-network-interface? "nonexistent")
+ #f)
+ (lambda args (system-error-errno args)))))
expected-value: 19
actual-value: 19
result: PASS
test-name: loopback-network-interface-running?
location: /home/bost/dev/guix/tests/syscalls.scm:425
source:
+ (test-equal
+ "loopback-network-interface-running?"
+ ENODEV
+ (and (network-interface-running? "lo")
+ (catch 'system-error
+ (lambda ()
+ (network-interface-running? "nonexistent")
+ #f)
+ (lambda args (system-error-errno args)))))
expected-value: 19
actual-value: 19
result: PASS
test-name: set-network-interface-flags
location: /home/bost/dev/guix/tests/syscalls.scm:436
source:
+ (test-assert
+ "set-network-interface-flags"
+ (let ((sock (socket AF_INET SOCK_STREAM 0)))
+ (catch 'system-error
+ (lambda ()
+ (set-network-interface-flags sock "lo" IFF_UP))
+ (lambda args
+ (close-port sock)
+ (memv (system-error-errno args)
+ (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS
test-name: network-interface-address lo
location: /home/bost/dev/guix/tests/syscalls.scm:446
source:
+ (test-equal
+ "network-interface-address lo"
+ (make-socket-address
+ AF_INET
+ (inet-pton AF_INET "127.0.0.1")
+ 0)
+ (let* ((sock (socket AF_INET SOCK_STREAM 0))
+ (addr (network-interface-address sock "lo")))
+ (close-port sock)
+ addr))
expected-value: #(2 2130706433 0)
actual-value: #(2 2130706433 0)
result: PASS
test-name: set-network-interface-address
location: /home/bost/dev/guix/tests/syscalls.scm:454
source:
+ (test-assert
+ "set-network-interface-address"
+ (let ((sock (socket AF_INET SOCK_STREAM 0)))
+ (catch 'system-error
+ (lambda ()
+ (set-network-interface-address
+ sock
+ "nonexistent"
+ (make-socket-address
+ AF_INET
+ (inet-pton AF_INET "127.12.14.15")
+ 0)))
+ (lambda args
+ (close-port sock)
+ (memv (system-error-errno args)
+ (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS
test-name: network-interface-netmask lo
location: /home/bost/dev/guix/tests/syscalls.scm:468
source:
+ (test-equal
+ "network-interface-netmask lo"
+ (make-socket-address
+ AF_INET
+ (inet-pton AF_INET "255.0.0.0")
+ 0)
+ (let* ((sock (socket AF_INET SOCK_STREAM 0))
+ (addr (network-interface-netmask sock "lo")))
+ (close-port sock)
+ addr))
expected-value: #(2 4278190080 0)
actual-value: #(2 4278190080 0)
result: PASS
test-name: set-network-interface-netmask
location: /home/bost/dev/guix/tests/syscalls.scm:476
source:
+ (test-assert
+ "set-network-interface-netmask"
+ (let ((sock (socket AF_INET SOCK_STREAM 0)))
+ (catch 'system-error
+ (lambda ()
+ (set-network-interface-netmask
+ sock
+ "nonexistent"
+ (make-socket-address
+ AF_INET
+ (inet-pton AF_INET "255.0.0.0")
+ 0)))
+ (lambda args
+ (close-port sock)
+ (memv (system-error-errno args)
+ (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS
test-name: network-interfaces returns one or more interfaces
location: /home/bost/dev/guix/tests/syscalls.scm:489
source:
+ (test-equal
+ "network-interfaces returns one or more interfaces"
+ '(#t #t #t)
+ (match (network-interfaces)
+ ((interfaces ..1)
+ (list (every interface? interfaces)
+ (every string? (map interface-name interfaces))
+ (every (lambda (sockaddr)
+ (or (vector? sockaddr) (not sockaddr)))
+ (map interface-address interfaces))))))
expected-value: (#t #t #t)
actual-value: (#t #t #t)
result: PASS
test-name: network-interfaces returns "lo"
location: /home/bost/dev/guix/tests/syscalls.scm:501
source:
+ (test-equal
+ "network-interfaces returns \"lo\""
+ (list #t
+ (make-socket-address
+ AF_INET
+ (inet-pton AF_INET "127.0.0.1")
+ 0))
+ (match (filter
+ (lambda (interface)
+ (string=? "lo" (interface-name interface)))
+ (network-interfaces))
+ ((loopbacks ..1)
+ (list (every (lambda (lo)
+ (not (zero? (logand
+ IFF_LOOPBACK
+ (interface-flags lo)))))
+ loopbacks)
+ (match (find (lambda (lo)
+ (= AF_INET
+ (sockaddr:fam (interface-address lo))))
+ loopbacks)
+ (#f #f)
+ (lo (interface-address lo)))))))
expected-value: (#t #(2 2130706433 0))
actual-value: (#t #(2 2130706433 0))
result: PASS
test-name: add-network-route/gateway
location: /home/bost/dev/guix/tests/syscalls.scm:517
source:
+ (test-assert
+ "add-network-route/gateway"
+ (let ((sock (socket AF_INET SOCK_STREAM 0))
+ (gateway
+ (make-socket-address
+ AF_INET
+ (inet-pton AF_INET "192.168.0.1")
+ 0)))
+ (catch 'system-error
+ (lambda ()
+ (add-network-route/gateway sock gateway))
+ (lambda args
+ (close-port sock)
+ (memv (system-error-errno args)
+ (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS
test-name: delete-network-route
location: /home/bost/dev/guix/tests/syscalls.scm:530
source:
+ (test-assert
+ "delete-network-route"
+ (let ((sock (socket AF_INET SOCK_STREAM 0))
+ (destination
+ (make-socket-address AF_INET INADDR_ANY 0)))
+ (catch 'system-error
+ (lambda ()
+ (delete-network-route sock destination))
+ (lambda args
+ (close-port sock)
+ (memv (system-error-errno args)
+ (list EPERM EACCES))))))
actual-value: (1 13)
result: PASS
test-name: tcgetattr ENOTTY
location: /home/bost/dev/guix/tests/syscalls.scm:540
source:
+ (test-equal
+ "tcgetattr ENOTTY"
+ ENOTTY
+ (catch 'system-error
+ (lambda ()
+ (call-with-input-file
+ "/dev/null"
+ (lambda (port) (tcgetattr (fileno port)))))
+ (compose system-error-errno list)))
expected-value: 25
actual-value: 25
result: PASS
test-name: tcgetattr
location: /home/bost/dev/guix/tests/syscalls.scm:554
source:
+ (test-assert
+ "tcgetattr"
+ (let ((termios (tcgetattr 0)))
+ (and (termios? termios)
+ (> (termios-input-speed termios) 0)
+ (> (termios-output-speed termios) 0))))
result: SKIP
test-name: tcsetattr
location: /home/bost/dev/guix/tests/syscalls.scm:560
source:
+ (test-assert
+ "tcsetattr"
+ (let ((first (tcgetattr 0)))
+ (tcsetattr 0 (tcsetattr-action TCSANOW) first)
+ (equal? first (tcgetattr 0))))
result: SKIP
test-name: terminal-window-size ENOTTY
location: /home/bost/dev/guix/tests/syscalls.scm:565
source:
+ (test-assert
+ "terminal-window-size ENOTTY"
+ (call-with-input-file
+ "/dev/null"
+ (lambda (port)
+ (catch 'system-error
+ (lambda () (terminal-window-size port))
+ (lambda args
+ (memv (system-error-errno args)
+ (list ENOTTY EINVAL)))))))
actual-value: (25 22)
result: PASS
test-name: terminal-columns
location: /home/bost/dev/guix/tests/syscalls.scm:576
source:
+ (test-assert
+ "terminal-columns"
+ (> (terminal-columns) 0))
actual-value: #t
result: PASS
test-name: terminal-columns non-file port
location: /home/bost/dev/guix/tests/syscalls.scm:579
source:
+ (test-assert
+ "terminal-columns non-file port"
+ (> (terminal-columns
+ (open-input-string
+ "Join us now, share the software!"))
+ 0))
actual-value: #t
result: PASS
test-name: terminal-rows
location: /home/bost/dev/guix/tests/syscalls.scm:583
source:
+ (test-assert
+ "terminal-rows"
+ (> (terminal-rows) 0))
actual-value: #t
result: PASS
test-name: openpty
location: /home/bost/dev/guix/tests/syscalls.scm:586
source:
+ (test-assert
+ "openpty"
+ (let ((head inferior (openpty)))
+ (and (integer? head)
+ (integer? inferior)
+ (let ((port (fdopen inferior "r+0")))
+ (and (isatty? port)
+ (begin (close-port port) (close-fdes head) #t))))))
actual-value: #t
result: PASS
test-name: openpty + login-tty
location: /home/bost/dev/guix/tests/syscalls.scm:596
source:
+ (test-equal
+ "openpty + login-tty"
+ '(hello world)
+ (let ((head inferior (openpty)))
+ (match (primitive-fork)
+ (0
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (setvbuf (current-input-port) 'none)
+ (close-fdes head)
+ (login-tty inferior)
+ (write (read))
+ (read))
+ (lambda () (primitive-_exit 42))))
+ (pid (close-fdes inferior)
+ (let ((head (fdopen head "r+0")))
+ (write '(hello world) head)
+ (let ((result (read head)))
+ (close-port head)
+ (waitpid pid)
+ result))))))
expected-value: (hello world)
actual-value: (hello world)
result: PASS
test-name: utmpx-entries
location: /home/bost/dev/guix/tests/syscalls.scm:620
source:
+ (test-assert
+ "utmpx-entries"
+ (match (utmpx-entries)
+ (((? utmpx? entries) ...)
+ (every (lambda (entry)
+ (match (utmpx-user entry)
+ ((? string?)
+ (or (not (memv (utmpx-login-type entry)
+ (list (login-type INIT_PROCESS)
+ (login-type LOGIN_PROCESS)
+ (login-type USER_PROCESS))))
+ (> (utmpx-pid entry) 0)))
+ (#f #t)))
+ entries))))
actual-value: #t
result: PASS
test-name: read-utmpx, EOF
location: /home/bost/dev/guix/tests/syscalls.scm:637
source:
+ (test-assert
+ "read-utmpx, EOF"
+ (eof-object? (read-utmpx (%make-void-port "r"))))
actual-value: #t
result: PASS
test-name: read-utmpx
location: /home/bost/dev/guix/tests/syscalls.scm:642
source:
+ (test-assert
+ "read-utmpx"
+ (let ((result
+ (call-with-input-file
+ "/var/run/utmpx"
+ read-utmpx)))
+ (or (utmpx? result) (eof-object? result))))
actual-value: #t
result: PASS
test-name: add-to-entropy-count
location: /home/bost/dev/guix/tests/syscalls.scm:648
source:
+ (test-equal
+ "add-to-entropy-count"
+ EPERM
+ (call-with-output-file
+ "/dev/urandom"
+ (lambda (port)
+ (catch 'system-error
+ (lambda () (add-to-entropy-count port 77) #f)
+ (lambda args (system-error-errno args))))))
expected-value: 1
actual-value: 1
result: PASS
warning: failed to delete /tmp/guix-directory.iP4vwx/??: No such file or directory
warning: failed to delete /tmp/guix-directory.iP4vwx/??: No such file or directory
SKIP: tests/upstream
====================
test-name: coalesce-sources same version
location: /home/bost/dev/guix/tests/upstream.scm:30
source:
+ (test-equal
+ "coalesce-sources same version"
+ (list (upstream-source
+ (package "foo")
+ (version "1")
+ (urls '("ftp://example.org/foo-1.tar.xz"
+ "ftp://example.org/foo-1.tar.gz"))
+ (signature-urls
+ '("ftp://example.org/foo-1.tar.xz.sig"
+ "ftp://example.org/foo-1.tar.gz.sig"))))
+ (coalesce-sources
+ (list (upstream-source
+ (package "foo")
+ (version "1")
+ (urls '("ftp://example.org/foo-1.tar.gz"))
+ (signature-urls
+ '("ftp://example.org/foo-1.tar.gz.sig")))
+ (upstream-source
+ (package "foo")
+ (version "1")
+ (urls '("ftp://example.org/foo-1.tar.xz"))
+ (signature-urls
+ '("ftp://example.org/foo-1.tar.xz.sig"))))))
result: SKIP
RUN: tests/offload
==================
test-name: #f
location: /home/bost/dev/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: /home/bost/dev/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: /home/bost/dev/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
/home/bost/dev/guix/tests/offload.scm:41:2: warning: The 'system' field is deprecated, please use 'systems' instead.
FAIL: tests/guix-home
=====================
+ set -e
+ guix home --version
guix show (GNU Guix) UNKNOWN
Copyright (C) 2021 the Guix authors
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
++ guile -c '(use-modules (guix config))(display %storedir)'
+ NIX_STORE_DIR=/gnu/store
++ guile -c '(use-modules (guix config))(display %localstatedir)'
+ localstatedir=/var
+ GUIX_DAEMON_SOCKET=/var/guix/daemon-socket/socket
+ export NIX_STORE_DIR GUIX_DAEMON_SOCKET
+ guile -c '(use-modules (guix)) (exit (false-if-exception (open-connection)))'
++ dirname /gnu/store
+ STORE_PARENT=/gnu
+ export STORE_PARENT
+ test /gnu = /
++ mktemp -d
+ test_directory=/tmp/tmp.w1KMqcP6M3
+ trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT
+ cd /tmp/tmp.w1KMqcP6M3
+ HOME=/tmp/tmp.w1KMqcP6M3
+ export HOME
+ printf '# dot-bashrc test file for guix home'
+ cat
+ guix home reconfigure /tmp/tmp.w1KMqcP6M3/home.scm
substitute: \rsubstitute: ^[[Kupdating substitutes from 'https://ci.guix.gnu.org'... 0.0%\rsubstitute: ^[[Kupdating substitutes from 'https://ci.guix.gnu.org'... 25.0%\rsubstitute: ^[[Kupdating substitutes from 'https://ci.guix.gnu.org'... 50.0%\rsubstitute: ^[[Kupdating substitutes from 'https://ci.guix.gnu.org'... 75.0%\rsubstitute: ^[[Kupdating substitutes from 'https://ci.guix.gnu.org'... 100.0%
substitute: \rsubstitute: ^[[Kupdating substitutes from 'https://bordeaux.guix.gnu.org'... 0.0%\rsubstitute: ^[[Kupdating substitutes from 'https://bordeaux.guix.gnu.org'... 25.0%\rsubstitute: ^[[Kupdating substitutes from 'https://bordeaux.guix.gnu.org'... 50.0%\rsubstitute: ^[[Kupdating substitutes from 'https://bordeaux.guix.gnu.org'... 75.0%\rsubstitute: ^[[Kupdating substitutes from 'https://bordeaux.guix.gnu.org'... 100.0%
The following derivations will be built:
/gnu/store/0927j5md0cpsqdvz2nkaqzfgj7sbirl7-home.drv
/gnu/store/8ymzlxfvfx1y3sgnxpfyfy4kmglvll6s-profile.drv
/gnu/store/9nnlx4pvd0hrznkns0i5jxylbbszxyj2-activate.drv
/gnu/store/kqz78drdkckji5asc88ala6g9dsna2g4-files.drv
/gnu/store/86hf7g1vwwcdm1in5sj890fmkx0d1145-bash_profile.drv
/gnu/store/lp71sfk6z43x088jgk1j1mkh1n62m3xj-bashrc.drv
/gnu/store/x0y4lj1fjnjbhpf090kfh993qvxkhb8g-provenance.drv
The following profile hooks will be built:
/gnu/store/fmi9dvi24iccg7f4c24ay539kmzlhskm-fonts-dir.drv
/gnu/store/g8v1ncrglcw95086g91sl1sxs99sxcrp-info-dir.drv
/gnu/store/klva6qyk17gzl5ns2adyqjpxxzjs9y9l-ca-certificate-bundle.drv
/gnu/store/py0krc8bwagrhdms8zzp9jp9000lran8-emacs-subdirs.drv
building /gnu/store/9nnlx4pvd0hrznkns0i5jxylbbszxyj2-activate.drv...
successfully built /gnu/store/9nnlx4pvd0hrznkns0i5jxylbbszxyj2-activate.drv
building /gnu/store/86hf7g1vwwcdm1in5sj890fmkx0d1145-bash_profile.drv...
successfully built /gnu/store/86hf7g1vwwcdm1in5sj890fmkx0d1145-bash_profile.drv
building /gnu/store/lp71sfk6z43x088jgk1j1mkh1n62m3xj-bashrc.drv...
successfully built /gnu/store/lp71sfk6z43x088jgk1j1mkh1n62m3xj-bashrc.drv
building CA certificate bundle...
successfully built /gnu/store/klva6qyk17gzl5ns2adyqjpxxzjs9y9l-ca-certificate-bundle.drv
listing Emacs sub-directories...
successfully built /gnu/store/py0krc8bwagrhdms8zzp9jp9000lran8-emacs-subdirs.drv
building /gnu/store/kqz78drdkckji5asc88ala6g9dsna2g4-files.drv...
successfully built /gnu/store/kqz78drdkckji5asc88ala6g9dsna2g4-files.drv
building fonts directory...
successfully built /gnu/store/fmi9dvi24iccg7f4c24ay539kmzlhskm-fonts-dir.drv
building directory of Info manuals...
successfully built /gnu/store/g8v1ncrglcw95086g91sl1sxs99sxcrp-info-dir.drv
building /gnu/store/x0y4lj1fjnjbhpf090kfh993qvxkhb8g-provenance.drv...
successfully built /gnu/store/x0y4lj1fjnjbhpf090kfh993qvxkhb8g-provenance.drv
building profile with 2 packages...
successfully built /gnu/store/8ymzlxfvfx1y3sgnxpfyfy4kmglvll6s-profile.drv
building /gnu/store/0927j5md0cpsqdvz2nkaqzfgj7sbirl7-home.drv...
successfully built /gnu/store/0927j5md0cpsqdvz2nkaqzfgj7sbirl7-home.drv
/gnu/store/dwf71bcwp3d93375r46j89sib2fj0qj1-home
New symlinks to home-environment will be created soon.
All conflicting files will go to /tmp/tmp.w1KMqcP6M3/1636900908-guix-home-legacy-configs-backup.
Skipping /tmp/tmp.w1KMqcP6M3/.config (directory already exists)... done
Creating /tmp/tmp.w1KMqcP6M3/.config/fontconfig... done
Symlinking /tmp/tmp.w1KMqcP6M3/.config/fontconfig/fonts.conf -> /gnu/store/phj2z2iiqdhryfy7mqral0b9qz3hlva6-fonts.conf... done
Symlinking /tmp/tmp.w1KMqcP6M3/.config/test.conf -> /gnu/store/bdixb09v30bvhpgi2f6ndiq25wzb9l74-tmp-file.txt... done
Symlinking /tmp/tmp.w1KMqcP6M3/.profile -> /gnu/store/fxbppk3pqzdi3zzy0xl5vg1ir6c5jzq5-shell-profile... done
Symlinking /tmp/tmp.w1KMqcP6M3/.bash_profile -> /gnu/store/lw6r3rqp7a0slsad42ybvps6976nr9g4-bash_profile... done
Symlinking /tmp/tmp.w1KMqcP6M3/.bashrc -> /gnu/store/fzb3q33zqkjcwdj6diq8473adapikhk6-bashrc... done
done
Finished updating symlinks.
Comparing /gnu/store/non-existing-generation/profile/share/fonts and
/gnu/store/dwf71bcwp3d93375r46j89sib2fj0qj1-home/profile/share/fonts... done (same)
Evaling on-change gexps.
On-change gexps evaluation finished.
+ test -d /tmp/tmp.w1KMqcP6M3/.guix-home
+ test -h /tmp/tmp.w1KMqcP6M3/.bash_profile
+ test -h /tmp/tmp.w1KMqcP6M3/.bashrc
++ tail -n 2 /tmp/tmp.w1KMqcP6M3/.bashrc
+ test 'alias ll='\''ls -l'\''
alias grep='\''grep --color=auto'\''' == '# dot-bashrc test file for guix home
# the content of bashrc-test-config.sh'
+ chmod -Rf +w /tmp/tmp.w1KMqcP6M3
+ rm -rf /tmp/tmp.w1KMqcP6M3
FAIL tests/guix-home.sh (exit status: 1)
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#51848: `make && make check` fails
2021-11-14 14:50 bug#51848: `make && make check` fails Rostislav Svoboda
@ 2021-11-15 16:01 ` zimoun
2021-11-22 10:13 ` Andrew Tropin
2022-03-26 13:52 ` Maxim Cournoyer
1 sibling, 1 reply; 4+ messages in thread
From: zimoun @ 2021-11-15 16:01 UTC (permalink / raw)
To: Rostislav Svoboda; +Cc: 51848, Xinglu Chen, Andrew Tropin
Hi,
On dim., 14 nov. 2021 at 15:50, Rostislav Svoboda <rostislav.svoboda@gmail.com> wrote:
> FAIL: tests/home-import.scm
> FAIL: tests/guix-home.sh
I confirm the failures using Guix ce9b9e7cba.
--8<---------------cut here---------------start------------->8---
;;; (fail (begin (use-modules (gnu home) (gnu packages) (gnu services) (guix gexp) (gnu home services shells)) (home-environment (packages (map specification->package (list))) (services (list (service home-bash-service-type (home-bash-configuration (aliases (quote ())) (bashrc (list (local-file "/tmp/guix-config/.bashrc" "bashrc"))))))))) #f)
test-name: manifest->code: Bash service
location: /home/sitour/src/guix/wk/remove-python2/tests/home-import.scm:181
source:
+ (test-assert
+ "manifest->code: Bash service"
+ (eval-test-with-home-environment
+ '((".bashrc" . "echo 'hello guix'"))
+ (make-manifest '())
+ match-home-environment-bash-service))
actual-value: #f
result: FAIL
--8<---------------cut here---------------end--------------->8---
--8<---------------cut here---------------start------------->8---
+ set -e
+ guix home --version
guix show (GNU Guix) 1.3.0.8404-ce9b9
Copyright (C) 2021 the Guix authors
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
++ guile -c '(use-modules (guix config))(display %storedir)'
+ NIX_STORE_DIR=/gnu/store
++ guile -c '(use-modules (guix config))(display %localstatedir)'
+ localstatedir=/var
+ GUIX_DAEMON_SOCKET=/var/guix/daemon-socket/socket
+ export NIX_STORE_DIR GUIX_DAEMON_SOCKET
+ guile -c '(use-modules (guix)) (exit (false-if-exception (open-connection)))'
++ dirname /gnu/store
+ STORE_PARENT=/gnu
+ export STORE_PARENT
+ test /gnu = /
++ mktemp -d
+ test_directory=/tmp/tmp.ScA50H2Z6n
+ trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT
+ cd /tmp/tmp.ScA50H2Z6n
+ HOME=/tmp/tmp.ScA50H2Z6n
+ export HOME
+ printf '# dot-bashrc test file for guix home'
+ cat
+ guix home reconfigure /tmp/tmp.ScA50H2Z6n/home.scm
guix home: error: reference to invalid output 'out' of derivation '/gnu/store/a6cwlz5yibi7w3pfm60j26inf434ard2-on-first-login.drv'
+ chmod -Rf +w /tmp/tmp.ScA50H2Z6n
+ rm -rf /tmp/tmp.ScA50H2Z6n
FAIL tests/guix-home.sh (exit status: 1)
--8<---------------cut here---------------end--------------->8---
Cheers,
simon
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#51848: `make && make check` fails
2021-11-15 16:01 ` zimoun
@ 2021-11-22 10:13 ` Andrew Tropin
0 siblings, 0 replies; 4+ messages in thread
From: Andrew Tropin @ 2021-11-22 10:13 UTC (permalink / raw)
To: zimoun, Rostislav Svoboda; +Cc: 51848, Xinglu Chen
[-- Attachment #1: Type: text/plain, Size: 2847 bytes --]
On 2021-11-15 17:01, zimoun wrote:
> Hi,
>
> On dim., 14 nov. 2021 at 15:50, Rostislav Svoboda <rostislav.svoboda@gmail.com> wrote:
>
>> FAIL: tests/home-import.scm
>> FAIL: tests/guix-home.sh
>
> I confirm the failures using Guix ce9b9e7cba.
>
>
> --8<---------------cut here---------------start------------->8---
> ;;; (fail (begin (use-modules (gnu home) (gnu packages) (gnu services) (guix gexp) (gnu home services shells)) (home-environment (packages (map specification->package (list))) (services (list (service home-bash-service-type (home-bash-configuration (aliases (quote ())) (bashrc (list (local-file "/tmp/guix-config/.bashrc" "bashrc"))))))))) #f)
> test-name: manifest->code: Bash service
> location: /home/sitour/src/guix/wk/remove-python2/tests/home-import.scm:181
> source:
> + (test-assert
> + "manifest->code: Bash service"
> + (eval-test-with-home-environment
> + '((".bashrc" . "echo 'hello guix'"))
> + (make-manifest '())
> + match-home-environment-bash-service))
> actual-value: #f
> result: FAIL
> --8<---------------cut here---------------end--------------->8---
https://issues.guix.gnu.org/51918 may be related
>
> --8<---------------cut here---------------start------------->8---
> + set -e
> + guix home --version
> guix show (GNU Guix) 1.3.0.8404-ce9b9
> Copyright (C) 2021 the Guix authors
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> ++ guile -c '(use-modules (guix config))(display %storedir)'
> + NIX_STORE_DIR=/gnu/store
> ++ guile -c '(use-modules (guix config))(display %localstatedir)'
> + localstatedir=/var
> + GUIX_DAEMON_SOCKET=/var/guix/daemon-socket/socket
> + export NIX_STORE_DIR GUIX_DAEMON_SOCKET
> + guile -c '(use-modules (guix)) (exit (false-if-exception (open-connection)))'
> ++ dirname /gnu/store
> + STORE_PARENT=/gnu
> + export STORE_PARENT
> + test /gnu = /
> ++ mktemp -d
> + test_directory=/tmp/tmp.ScA50H2Z6n
> + trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT
> + cd /tmp/tmp.ScA50H2Z6n
> + HOME=/tmp/tmp.ScA50H2Z6n
> + export HOME
> + printf '# dot-bashrc test file for guix home'
> + cat
> + guix home reconfigure /tmp/tmp.ScA50H2Z6n/home.scm
> guix home: error: reference to invalid output 'out' of derivation '/gnu/store/a6cwlz5yibi7w3pfm60j26inf434ard2-on-first-login.drv'
This one was fixed in e5d8302b2ce596a0518ea5bd79b338f68a3246eb.
https://issues.guix.gnu.org/51915
> + chmod -Rf +w /tmp/tmp.ScA50H2Z6n
> + rm -rf /tmp/tmp.ScA50H2Z6n
> FAIL tests/guix-home.sh (exit status: 1)
> --8<---------------cut here---------------end--------------->8---
>
>
> Cheers,
> simon
--
Best regards,
Andrew Tropin
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 853 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#51848: `make && make check` fails
2021-11-14 14:50 bug#51848: `make && make check` fails Rostislav Svoboda
2021-11-15 16:01 ` zimoun
@ 2022-03-26 13:52 ` Maxim Cournoyer
1 sibling, 0 replies; 4+ messages in thread
From: Maxim Cournoyer @ 2022-03-26 13:52 UTC (permalink / raw)
To: Rostislav Svoboda; +Cc: 51848-done
Hello,
Rostislav Svoboda <rostislav.svoboda@gmail.com> writes:
> Trying to compile guix (for the first time, ever!) I get:
>
> FAIL: tests/home-import.scm
> FAIL: tests/guix-home.sh
Both issues appear to have been fixed.
Closing.
Thanks for the report!
Maxim
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-03-26 14:18 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-14 14:50 bug#51848: `make && make check` fails Rostislav Svoboda
2021-11-15 16:01 ` zimoun
2021-11-22 10:13 ` Andrew Tropin
2022-03-26 13:52 ` Maxim Cournoyer
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.