96
|
1
|
(defpackage :cli/tests |
|
2
|
(:use :cl :std :rt :cli)) |
|
3
|
|
|
4
|
(in-package :cli/tests) |
109
|
5
|
(defsuite :cli) |
96
|
6
|
(in-suite :cli) |
|
7
|
|
109
|
8
|
|
|
9
|
;; TODO: needs to be compiled outside scope of test - contender for |
|
10
|
;; fixture API |
|
11
|
(defprompt tpfoo "testing: ") |
|
12
|
|
96
|
13
|
(deftest cli-prompt () |
109
|
14
|
"Test CLI prompts" |
|
15
|
|
96
|
16
|
(defvar tcoll nil) |
|
17
|
(defvar thist nil) |
109
|
18
|
(setf *standard-input* (make-string-input-stream |
|
19
|
(format nil "~A~%~A~%~%" "foobar" "foobar"))) |
96
|
20
|
;; prompts |
109
|
21
|
(is (string= (tpfoo-prompt) "foobar")) |
|
22
|
(is (string= "foobar" |
|
23
|
(cli:completing-read "nothing: " tcoll :history thist :default "foobar")))) |
96
|
24
|
|
|
25
|
(defparameter *opts* (cli:make-opts (:name foo :global t :description "bar") |
|
26
|
(:name bar :description "foo"))) |
|
27
|
|
|
28
|
(defparameter *cmd1* (make-cli :cmd :name "holla" :opts *opts* :description "cmd1 description")) |
|
29
|
(defparameter *cmd2* (make-cli :cmd :name "ayo" :cmds #(*cmd1*) :opts *opts* :description "cmd1 description")) |
|
30
|
(defparameter *cmds* (cli:make-cmds (:name "baz" :description "baz" :opts *opts*))) |
|
31
|
|
|
32
|
(defparameter *cli* (make-cli t :opts *opts* :cmds *cmds* :description "test cli")) |
|
33
|
|
|
34
|
(deftest cli () |
|
35
|
"test MACS.CLI OOS." |
|
36
|
(let ((cli *cli*)) |
|
37
|
(is (eq (make-shorty "test") #\t)) |
|
38
|
(is (equalp (proc-args cli '("-f" "baz" "--bar" "fax")) ;; not eql |
|
39
|
(make-cli-ast |
|
40
|
(list (make-cli-node 'opt (find-short-opt cli #\f)) |
|
41
|
(make-cli-node 'cmd (find-cmd cli "baz")) |
|
42
|
(make-cli-node 'opt (find-opt cli "bar")) |
|
43
|
(make-cli-node 'arg "fax"))))) |
|
44
|
(is (parse-args cli '("--bar" "baz" "-f" "yaks"))) |
|
45
|
(is (stringp |
|
46
|
(with-output-to-string (s) |
|
47
|
(print-version cli s) |
|
48
|
(print-usage cli s) |
|
49
|
(print-help cli s)))) |
|
50
|
(is (string= "foobar" (parse-str-opt "foobar"))))) |