nekomata / tests /test-core.lisp
SNAPKITTYWEST's picture
push from SNAPKITTYWEST/nekomata
3b70664 verified
Raw History Blame Contribute Delete
1.63 kB
(defpackage #:nekod.tests
(:use #:cl #:nekod))
(in-package #:nekod.tests)
(defun run-tests ()
(let ((passed 0) (failed 0))
(flet ((check (name result expected)
(if (equal result expected)
(progn (incf passed) (format t " PASS ~a~%" name))
(progn (incf failed) (format t " FAIL ~a: got ~s expected ~s~%" name result expected)))))
;; Test 1: container-spec creation
(let ((spec (make-container-spec :name "test" :image "alpine:latest"
:ports '((8080 . 80)) :env '((:MODE . "test")))))
(check "container-spec name" (container-spec-name spec) "test")
(check "container-spec image" (container-spec-image spec) "alpine:latest"))
;; Test 2: nekod-eval on a spec
(let ((spec (make-container-spec :name "eval-test" :image "nginx:latest")))
(check "nekod-eval returns spec" (eq (nekod-eval spec) spec) t))
;; Test 3: save/restore snapshot
(let* ((spec (make-container-spec :name "snap-test" :image "redis:latest"))
(snap (save-nekod-image "/tmp/nekod-test.snap" (list spec))))
(check "snapshot version" (nekod-snapshot-version snap) "0.1.0")
(check "snapshot has containers" (length (nekod-snapshot-containers snap)) 1))
;; Test 4: HTTP request building
(let ((req (nekod.docker:build-http-request "GET" "/containers/json")))
(check "GET request contains method" (search "GET" req) 0))
(format t "~%Results: ~a passed, ~a failed~%" passed failed)
(= failed 0))))
(run-tests)