test cases.
Test claude-code and paseo binaries, dak user existence,
and home activation via dotfile (.guile).
Co-Authored-By: Claude <noreply@anthropic.com>
--- /dev/null
+;;; 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))))
--- /dev/null
+;;; 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))))
--- /dev/null
+;;; 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))))
#: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))
(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))))))