unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Daniel Schäfer" <git@danielschaefer.me>
To: guix-devel@gnu.org
Subject: Fwd: Running individual system tests
Date: Sat, 19 Oct 2019 12:06:25 +0200	[thread overview]
Message-ID: <7a1ea893-6ec0-5312-a013-cdc246a1e1e5@danielschaefer.me> (raw)
In-Reply-To: <e9c67f90-8c08-7019-1dbc-a4cd09704728@danielschaefer.me>

[-- Attachment #1: Type: text/plain, Size: 3585 bytes --]

Hi Guix developers,

I'm still trying to figure out, how to run a single Guix system test 
without building the entirety of Guix.
Does anybody do this? Has anybody written a Guix system test for 
something not in Guix? Maybe a personal or work-related project.

CC'ing some people who've added guix system tests.

Thanks,
Daniel

-------- Forwarded Message --------
Subject: 	Running individual system tests
Date: 	Tue, 15 Oct 2019 13:21:45 +0200
From: 	Daniel Schäfer <daniel@danielschaefer.me>
To: 	help-guix@gnu.org



Hi Guix,

Guix System has nice system tests, as described in [1] but they don't 
easily allow to run a single test.

The manual says to run `make check-system TESTS="basic mcron"` in the 
guix source tree.
That, however, (apparently) requires to be bootstrapped, configured and 
all Scheme files to be fully built.

Is there something as simple as:

$ guix build -f gnu/tests/rsync.scm
guix build: error: #<unspecified>: not something we can build

---

I hacked together a solution that works but is far from nice.
It is based off of build-aux/run-system-tests.scm and I tried to strip 
it down to the core.

$ cat run-test.scm
(use-modules (gnu tests rsync)
              (gnu tests)
              (guix store)
              (guix status)
              (guix monads)
              (guix derivations)
              (guix ui)
              (srfi srfi-1)
              (srfi srfi-34))

(define (built-derivations* drv)
   (lambda (store)
     (guard (c ((store-protocol-error? c)
                (values #f store)))
       (values (build-derivations store drv) store))))

(system-test-value %test-rsync)
   (with-store store
     (with-status-verbosity 2
       (run-with-store store
         (mlet* %store-monad ((drv (mapm %store-monad system-test-value 
(list %test-rsync)))
                              (out -> (map derivation->output-path drv)))
           (mbegin %store-monad
             (show-what-to-build* drv)
             (set-build-options* #:keep-going? #t #:keep-failed? #t
                                 #:print-build-trace #t
                                 #:print-extended-build-trace? #t
                                 #:fallback? #t)
             (built-derivations* drv)
             (display out))))))

$ guile -s run-test.scm
(/gnu/store/scifaigbvcj20lplj3mvqj3ndr9w0nlv-rsync-test)Backtrace:
            8 (apply-smob/1 #<catch-closure 7353e0>)
In ice-9/boot-9.scm:
     705:2  7 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
     619:8  6 (_ #(#(#<directory (guile-user) 7cd140>)))
In ice-9/boot-9.scm:
    2312:4  5 (save-module-excursion _)
   3831:12  4 (_)
In /home/zoid/guix/gnu/tests/run-test.scm:
      19:4  3 (_)
In guix/status.scm:
     810:4  2 (call-with-status-report _ _)
In guix/store.scm:
   1737:24  1 (run-with-store _ _ #:guile-for-build _ #:system _ # _)
In unknown file:
            0 (_ #<store-connection 256.99 3b8dd20>)

ERROR: Wrong type to apply: #<unspecified>


It shows the derivation output path before the backtrace and thus I can 
inspect the log.
Can I do this in a nicer way?
It would be very helpful for out-of-tree system tests.

Thanks

- Daniel

[1] https://guix.gnu.org/blog/2016/guixsd-system-tests/



[-- Attachment #2: Type: text/html, Size: 5704 bytes --]

       reply	other threads:[~2019-10-19 10:06 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <e9c67f90-8c08-7019-1dbc-a4cd09704728@danielschaefer.me>
2019-10-19 10:06 ` Daniel Schäfer [this message]
2019-10-19 11:27   ` Fwd: Running individual system tests Marius Bakke
2019-10-19 17:35   ` Ricardo Wurmus
2019-10-21  6:43     ` Daniel Schäfer
2019-10-23 12:03       ` Daniel Schäfer
2019-10-23 13:04         ` Danny Milosavljevic
2019-10-23 16:02         ` Fwd: " Ricardo Wurmus
2019-10-25 20:28   ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7a1ea893-6ec0-5312-a013-cdc246a1e1e5@danielschaefer.me \
    --to=git@danielschaefer.me \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).