%%%% Starting test gexp Group begin: gexp Test begin: test-name: "no refs" source-file: "tests/gexp.scm" source-line: 61 source-form: (test-equal "no refs" (quote (display "hello!")) (let ((exp (gexp (display "hello!")))) (and (gexp? exp) (null? (gexp-inputs exp)) (gexp->sexp* exp)))) Test end: result-kind: pass actual-value: (display "hello!") expected-value: (display "hello!") Test begin: test-name: "unquote" source-file: "tests/gexp.scm" source-line: 68 source-form: (test-equal "unquote" (quote (display (quasiquote (foo (unquote (+ 2 3)))))) (let ((exp (gexp (display (quasiquote (foo (unquote (+ 2 3)))))))) (and (gexp? exp) (null? (gexp-inputs exp)) (gexp->sexp* exp)))) Test end: result-kind: pass actual-value: (display (quasiquote (foo (unquote (+ 2 3))))) expected-value: (display (quasiquote (foo (unquote (+ 2 3))))) Test begin: test-name: "one input package" source-file: "tests/gexp.scm" source-line: 75 source-form: (test-assert "one input package" (let ((exp (gexp (display (ungexp coreutils))))) (and (gexp? exp) (match (gexp-inputs exp) (((p "out")) (eq? p coreutils))) (equal? (quasiquote (display (unquote (derivation->output-path (package-derivation %store coreutils))))) (gexp->sexp* exp))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "one input origin" source-file: "tests/gexp.scm" source-line: 85 source-form: (test-assert "one input origin" (let ((exp (gexp (display (ungexp (package-source coreutils)))))) (and (gexp? exp) (match (gexp-inputs exp) (((o "out")) (eq? o (package-source coreutils)))) (equal? (quasiquote (display (unquote (derivation->output-path (package-source-derivation %store (package-source coreutils)))))) (gexp->sexp* exp))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "same input twice" source-file: "tests/gexp.scm" source-line: 96 source-form: (test-assert "same input twice" (let ((exp (gexp (begin (display (ungexp coreutils)) (display (ungexp coreutils)))))) (and (gexp? exp) (match (gexp-inputs exp) (((p "out")) (eq? p coreutils))) (let ((e (quasiquote (display (unquote (derivation->output-path (package-derivation %store coreutils))))))) (equal? (quasiquote (begin (unquote e) (unquote e))) (gexp->sexp* exp)))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "two input packages, one derivation, one file" source-file: "tests/gexp.scm" source-line: 108 source-form: (test-assert "two input packages, one derivation, one file" (let* ((drv (build-expression->derivation %store "foo" (quote bar) #:guile-for-build (package-derivation %store %bootstrap-guile))) (txt (add-text-to-store %store "foo" "Hello, world!")) (exp (gexp (begin (display (ungexp coreutils)) (display (ungexp %bootstrap-guile)) (display (ungexp drv)) (display (ungexp txt)))))) (define (match-input thing) (match-lambda ((drv-or-pkg _ ...) (eq? thing drv-or-pkg)))) (and (gexp? exp) (= 4 (length (gexp-inputs exp))) (every (lambda (input) (find (match-input input) (gexp-inputs exp))) (list drv coreutils %bootstrap-guile txt)) (let ((e0 (quasiquote (display (unquote (derivation->output-path (package-derivation %store coreutils)))))) (e1 (quasiquote (display (unquote (derivation->output-path (package-derivation %store %bootstrap-guile)))))) (e2 (quasiquote (display (unquote (derivation->output-path drv))))) (e3 (quasiquote (display (unquote txt))))) (equal? (quasiquote (begin (unquote e0) (unquote e1) (unquote e2) (unquote e3))) (gexp->sexp* exp)))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "input list" source-file: "tests/gexp.scm" source-line: 136 source-form: (test-assert "input list" (let ((exp (gexp (display (quote (ungexp (list %bootstrap-guile coreutils)))))) (guile (derivation->output-path (package-derivation %store %bootstrap-guile))) (cu (derivation->output-path (package-derivation %store coreutils)))) (and (lset= equal? (quasiquote (((unquote %bootstrap-guile) "out") ((unquote coreutils) "out"))) (gexp-inputs exp)) (equal? (quasiquote (display (quote ((unquote guile) (unquote cu))))) (gexp->sexp* exp))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "input list splicing" source-file: "tests/gexp.scm" source-line: 149 source-form: (test-assert "input list splicing" (let* ((inputs (list (list glibc "debug") %bootstrap-guile)) (outputs (list (derivation->output-path (package-derivation %store glibc) "debug") (derivation->output-path (package-derivation %store %bootstrap-guile)))) (exp (gexp (list (ungexp-splicing (cons (+ 2 3) inputs)))))) (and (lset= equal? (quasiquote (((unquote glibc) "debug") ((unquote %bootstrap-guile) "out"))) (gexp-inputs exp)) (equal? (gexp->sexp* exp) (quasiquote (list (unquote-splicing (cons 5 outputs)))))))) Test end: result-kind: pass actual-value: #t Test begin: test-name: "gexp->file" source-file: "tests/gexp.scm" source-line: 163 source-form: (test-assert "gexp->file" (run-with-store %store (mlet* %store-monad ((exp -> (gexp (display (ungexp %bootstrap-guile)))) (guile (package-file %bootstrap-guile)) (sexp (gexp->sexp exp)) (drv (gexp->file "foo" exp)) (out -> (derivation->output-path drv)) (done (built-derivations (list drv))) (refs ((store-lift references) out))) (return (and (equal? sexp (call-with-input-file out read)) (equal? (list guile) refs)))) #:guile-for-build guile-for-build)) Test end: result-kind: pass actual-value: #t Test begin: test-name: "gexp->derivation" source-file: "tests/gexp.scm" source-line: 174 source-form: (test-assert "gexp->derivation" (run-with-store %store (mlet* %store-monad ((file (text-file "foo" "Hello, world!")) (exp -> (gexp (begin (mkdir (ungexp output)) (chdir (ungexp output)) (symlink (string-append (ungexp %bootstrap-guile) "/bin/guile") "foo") (symlink (ungexp file) (ungexp output "2nd"))))) (drv (gexp->derivation "foo" exp)) (out -> (derivation->output-path drv)) (out2 -> (derivation->output-path drv "2nd")) (done (built-derivations (list drv))) (refs ((store-lift references) out)) (refs2 ((store-lift references) out2)) (guile (package-file %bootstrap-guile "bin/guile"))) (return (and (string=? (readlink (string-append out "/foo")) guile) (string=? (readlink out2) file) (equal? refs (list (dirname (dirname guile)))) (equal? refs2 (list file))))) #:guile-for-build guile-for-build)) Test end: result-kind: pass actual-value: #t Test begin: test-name: "gexp->derivation, composed gexps" source-file: "tests/gexp.scm" source-line: 198 source-form: (test-assert "gexp->derivation, composed gexps" (run-with-store %store (mlet* %store-monad ((exp0 -> (gexp (begin (mkdir (ungexp output)) (chdir (ungexp output))))) (exp1 -> (gexp (symlink (string-append (ungexp %bootstrap-guile) "/bin/guile") "foo"))) (exp -> (gexp (begin (ungexp exp0) (ungexp exp1)))) (drv (gexp->derivation "foo" exp)) (out -> (derivation->output-path drv)) (done (built-derivations (list drv))) (guile (package-file %bootstrap-guile "bin/guile"))) (return (string=? (readlink (string-append out "/foo")) guile))) #:guile-for-build guile-for-build)) Test end: result-kind: pass actual-value: #t Test begin: test-name: "gexp->script" source-file: "tests/gexp.scm" source-line: 214 source-form: (test-assert "gexp->script" (run-with-store %store (mlet* %store-monad ((n -> (random (expt 2 50))) (exp -> (gexp (system* (string-append (ungexp %bootstrap-guile) "/bin/guile") "-c" (object->string (quote (display (expt (ungexp n) 2))))))) (drv (gexp->script "guile-thing" exp #:guile %bootstrap-guile)) (out -> (derivation->output-path drv)) (done (built-derivations (list drv)))) (let* ((pipe (open-input-pipe out)) (str (get-string-all pipe))) (return (and (zero? (close-pipe pipe)) (= (expt n 2) (string->number str)))))) #:guile-for-build guile-for-build)) Test end: result-kind: fail actual-value: #f Test begin: test-name: "sugar" source-file: "tests/gexp.scm" source-line: 231 source-form: (test-equal "sugar" (quote (gexp (foo (ungexp bar) (ungexp baz "out") (ungexp (chbouib 42)) (ungexp-splicing (list x y z))))) (quote (gexp (foo (ungexp bar) (ungexp baz "out") (ungexp (chbouib 42)) (ungexp-splicing (list x y z)))))) Test end: result-kind: pass actual-value: (gexp (foo (ungexp bar) (ungexp baz "out") (ungexp (chbouib 42)) (ungexp-splicing (list x y z)))) expected-value: (gexp (foo (ungexp bar) (ungexp baz "out") (ungexp (chbouib 42)) (ungexp-splicing (list x y z)))) Group end: gexp # of expected passes 12 # of unexpected failures 1