Я бы хотел изменить cake test
, чтобы он работал с другим значением для *stack-trace-depth*
.
Встроенное определение просто:
(deftask test #{compile}
"Run project tests."
"Specify which tests to run as arguments like: namespace, namespace/function, or :tag"
(run-project-tests))
В идеале я хотел бы указать значение с аргументом командной строки --depth=n
, что-то на этот счет:
(binding [*stack-trace-depth* (if (*opts* :depth)
(read-string (*opts* :depth)))]
(run-project-tests))
Какой код мне нужно сделатьэта работа?
Основано на ответах: Помещение следующего в tasks.clj
(undeftask test)
(deftask test #{compile}
(.bindRoot #'*stack-trace-depth* 5)
(println "Defining task: *stack-trace-depth* is" *stack-trace-depth* "in" (Thread/currentThread))
(run-project-tests))
дает следующий вывод:
Загрузка test/cake_test/core.clj
:
Loading tests: *stack-trace-depth* is nil in #<Thread[thread-13,5,main]>
$ cake test
Defining task: *stack-trace-depth* is 5 in #<Thread[Thread-18,5,main]>
In test: *stack-trace-depth* is nil in #<Thread[Thread-16,5,main]>
Testing cake-testing.core
FAIL in (test-stack-trace-depth) (core.clj:8)
expected: (= *stack-trace-depth* 5)
actual: (not (= nil 5))
Ran 1 tests containing 1 assertions.
1 failures, 0 errors.
----
Finished in 0.011865 seconds.
(проверенный код на Gist .)