Use a real lein task in pass-through-help tests, not funky var magic.
This commit is contained in:
parent
4a1373ab10
commit
e4e65177f6
2 changed files with 19 additions and 50 deletions
|
@ -2,22 +2,6 @@
|
|||
(:use [clojure.test]
|
||||
[leiningen.core.main]))
|
||||
|
||||
(defmacro with-test-meta [meta & body]
|
||||
`(let [req-res# leiningen.core.utils/require-resolve
|
||||
~'project (assoc-in ~'project
|
||||
[:aliases ~'alias-1]
|
||||
(with-meta ~'alias ~meta))]
|
||||
(with-local-vars [~'sirius (fn [])]
|
||||
(alter-meta! ~'sirius merge ~meta)
|
||||
(with-redefs [leiningen.core.utils/require-resolve
|
||||
(fn
|
||||
([sym#] (req-res# sym#))
|
||||
([name-spc# tname#]
|
||||
(if (= ~'task-name tname#)
|
||||
~'sirius
|
||||
(req-res# name-spc# tname#))))]
|
||||
~@body))))
|
||||
|
||||
(deftest test-task-args-help-pass-through
|
||||
(let [task-name "sirius"
|
||||
alias [task-name]
|
||||
|
@ -27,41 +11,23 @@
|
|||
project {:aliases {alias-1 alias
|
||||
alias-2 task-name}}]
|
||||
|
||||
(testing "with metas that have non-true pass-through-help"
|
||||
(doseq [a-meta (cons {}
|
||||
(for [val [1 false nil "truthy"]]
|
||||
{:pass-through-help val}))]
|
||||
(with-test-meta a-meta
|
||||
(are [res arg] (= res (task-args arg project))
|
||||
help-res ["help" task-name]
|
||||
help-res [task-name "-h"]
|
||||
help-res [task-name "-?"]
|
||||
help-res [task-name "--help"]
|
||||
["help" ["dog"]] [alias-1 "--help"]
|
||||
["help" ["uncle"]] [alias-2 "--help"]
|
||||
[alias []] [alias-1]
|
||||
[task-name []] [alias-2]
|
||||
[task-name []] [task-name]))))
|
||||
|
||||
(testing "with :pass-through-help meta"
|
||||
(testing "pass-through-help is true"
|
||||
(with-test-meta {:pass-through-help true}
|
||||
(testing "on a var"
|
||||
(are [res arg] (= res (task-args arg project))
|
||||
help-res ["help" task-name]
|
||||
[task-name ["-h"]] [task-name "-h"]
|
||||
[task-name ["-?"]] [task-name "-?"]
|
||||
[task-name ["--help"]] [task-name "--help"]
|
||||
[task-name []] [task-name]))
|
||||
(testing "on an alias"
|
||||
(are [res arg] (= res (task-args arg project))
|
||||
["help" [alias-1]] ["help" alias-1]
|
||||
["help" [alias-2]] ["help" alias-2]
|
||||
[task-name ["-h"]] [alias-2 "-h"]
|
||||
[[task-name] ["-?"]] [alias-1 "-?"]
|
||||
[task-name ["--help"]] [alias-2 "--help"]
|
||||
[[task-name] []] [alias-1]
|
||||
[task-name []] [alias-2])))))))
|
||||
(testing "on a var"
|
||||
(are [res arg] (= res (task-args arg project))
|
||||
help-res ["help" task-name]
|
||||
[task-name ["-h"]] [task-name "-h"]
|
||||
[task-name ["-?"]] [task-name "-?"]
|
||||
[task-name ["--help"]] [task-name "--help"]
|
||||
[task-name []] [task-name]))
|
||||
(testing "on an alias"
|
||||
(are [res arg] (= res (task-args arg project))
|
||||
["help" [alias-1]] ["help" alias-1]
|
||||
["help" [alias-2]] ["help" alias-2]
|
||||
[task-name ["-h"]] [alias-2 "-h"]
|
||||
[[task-name] ["-?"]] [alias-1 "-?"]
|
||||
[task-name ["--help"]] [alias-2 "--help"]
|
||||
[[task-name] []] [alias-1]
|
||||
[task-name []] [alias-2])))))
|
||||
|
||||
(deftest test-matching-arity
|
||||
(is (not (matching-arity? (resolve-task "bluuugh") ["bogus" "arg" "s"])))
|
||||
|
|
3
leiningen-core/test/leiningen/sirius.clj
Normal file
3
leiningen-core/test/leiningen/sirius.clj
Normal file
|
@ -0,0 +1,3 @@
|
|||
(ns leiningen.sirius)
|
||||
|
||||
(defn ^:pass-through-help sirius [project & args] args)
|
Loading…
Reference in a new issue