Welcome! Please see the About page for a little more info on how this works.

0 votes
in Test by

When looking at (log) output from tests written with clojure.test, I would like to be able to identify the output associated with each test. A mechanism to expose the current test var within an :each fixture would enable this.

One mechanism might be to bind a test-var var with the current test var before calling the each-fixture-fn in clojure.test/test-all-vars.

Proposed: The proposed patch (clj840-20161122.diff) allows 'each' fixtures to access the var associated with the currently executing test by using * }. As a result of this change, 'each' fixtures are able to access the metadata associated with the current test var, including the name.

The patch achieves the above by changing the order in which functions are wrapped when a test and its associated 'each' fixtures are run. Before this patch, 'each' fixtures were combined into a single higher-order function, which was then given a thunk containing an invocation of the {{test-var}} function to execute as its body. After this patch, the {{test-var}} function is now responsible for joining and executing 'each' fixtures but, importantly, it does so within the scope of the binding expression that adds the current test var to * }. {{test-var}} now invokes the joined fixtures function, rather than the joined fixtures function being given a thunk that invokes {{test-var}}.

Patch: clj840-20161122.diff

17 Answers

0 votes

Comment made by: joelittlejohn

Thanks for taking the time to think about that todo list, Alex. Much appreciated. I'll investigate these things.

0 votes
Reference: https://clojure.atlassian.net/browse/CLJ-840 (reported by hugoduncan)