]> git.ekhem.eu.org Git - guix.git/commitdiff
[tests] Add home environment and package
authorJakub Czajka <jakub@ekhem.eu.org>
Wed, 15 Jul 2026 22:50:45 +0000 (22:50 +0000)
committerJakub Czajka <jakub@ekhem.eu.org>
Fri, 17 Jul 2026 13:47:16 +0000 (13:47 +0000)
test cases.

Test claude-code and paseo binaries, dak user existence,
and home activation via dotfile (.guile).

Co-Authored-By: Claude <noreply@anthropic.com>
tests/claude-code.scm [new file with mode: 0644]
tests/dotfiles.scm [new file with mode: 0644]
tests/paseo.scm [new file with mode: 0644]
tests/vps-base.scm

diff --git a/tests/claude-code.scm b/tests/claude-code.scm
new file mode 100644 (file)
index 0000000..8e3865b
--- /dev/null
@@ -0,0 +1,17 @@
+;;; Copyright (c) 2026 Jakub Czajka <jakub@ekhem.eu.org>
+;;; License: GPL-3.0 or later.
+;;;
+;;; Claude Code test cases.
+
+(define-module (tests claude-code)
+  #:use-module (guix gexp)
+  #:use-module (conf home claude)
+  #:export (claude-code-test-cases))
+
+(define (claude-code-test-cases marionette)
+  "Return a gexp with Claude Code test assertion."
+  #~(begin
+      (test-assert "claude: binary exists"
+                   (marionette-eval '(file-exists? (string-append #$claude-code
+                                                    "/bin/claude"))
+                                    #$marionette))))
diff --git a/tests/dotfiles.scm b/tests/dotfiles.scm
new file mode 100644 (file)
index 0000000..6163b39
--- /dev/null
@@ -0,0 +1,15 @@
+;;; Copyright (c) 2026 Jakub Czajka <jakub@ekhem.eu.org>
+;;; License: GPL-3.0 or later.
+;;;
+;;; Home directory test cases.
+
+(define-module (tests dotfiles)
+  #:use-module (guix gexp)
+  #:export (dotfiles-test-cases))
+
+(define (dotfiles-test-cases marionette)
+  "Return a gexp with home directory test assertions."
+  #~(begin
+      (test-assert "home: dak user exists"
+                   (marionette-eval '(file-exists? "/home/dak")
+                                    #$marionette))))
diff --git a/tests/paseo.scm b/tests/paseo.scm
new file mode 100644 (file)
index 0000000..5c5e0bb
--- /dev/null
@@ -0,0 +1,17 @@
+;;; Copyright (c) 2026 Jakub Czajka <jakub@ekhem.eu.org>
+;;; License: GPL-3.0 or later.
+;;;
+;;; Paseo test cases.
+
+(define-module (tests paseo)
+  #:use-module (guix gexp)
+  #:use-module (conf home paseo)
+  #:export (paseo-test-cases))
+
+(define (paseo-test-cases marionette)
+  "Return a gexp with Paseo test assertion."
+  #~(begin
+      (test-assert "paseo: binary exists"
+                   (marionette-eval '(file-exists? (string-append #$paseo
+                                                    "/bin/paseo"))
+                                    #$marionette))))
index 4d5a50a62f7237e24195cba450c6cc8285ddf849..ca78a839e19f0cd1af064a7f4639f42c1bce3e82 100644 (file)
@@ -21,6 +21,9 @@
   #:use-module (gnu packages ssh)
   #:use-module (vps-system)
   #:use-module (vps-home)
+  #:use-module (tests claude-code)
+  #:use-module (tests dotfiles)
+  #:use-module (tests paseo)
   #:use-module (guix gexp)
   #:export (%test-vps %vps-test-os run-vps-test))
 
@@ -167,12 +170,30 @@ every function in TEST-CASES.  Each element is a function
                                (test-end "vps"))))
   (gexp->derivation "vps-test" test))
 
+;;;
+;;; Home activation — validates that the home derivation from
+;;; vps-home.scm is built and activated in the VM.  Activation
+;;; is verified by checking that dotfiles are installed.
+;;; (su(1) is not available in the QEMU marionette REPL, so we
+;;; cannot test the activate script's exit code directly.)
+
+(define (home-activation-test-cases marionette-gexp)
+  "Return a gexp that verifies home activation via dotfiles."
+  #~(begin
+      (test-assert "home: .guile exists"
+                   (marionette-eval '(file-exists? "/home/dak/.guile")
+                                    #$marionette-gexp))))
+
 ;;;
 ;;; System test record — test cases are added incrementally in
 ;;; subsequent commits.
 ;;;
 
 (define %test-vps
-  (system-test (name "vps")
-               (description "VPS test suite.")
-               (value (run-vps-test '()))))
+  (let ((claude claude-code-test-cases)
+        (paseo paseo-test-cases)
+        (dots dotfiles-test-cases)
+        (home home-activation-test-cases))
+    (system-test (name "vps")
+                 (description "VPS test suite.")
+                 (value (run-vps-test (list claude paseo dots home))))))