Use a real lein task in pass-through-help tests, not funky var magic.

This commit is contained in:
Phil Hagelberg 2014-03-07 09:55:13 -08:00
parent 4a1373ab10
commit e4e65177f6
2 changed files with 19 additions and 50 deletions

View file

@ -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"])))

View file

@ -0,0 +1,3 @@
(ns leiningen.sirius)
(defn ^:pass-through-help sirius [project & args] args)