Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

126 lines (109 sloc) 5.237 kb


  • midje.repl namespace created (does not work for Clojure 1.2.X)
  • Now reads ~/.midje.clj and .midje.clj for configuration. Configuration keys: :print-level, :visible-deprecation, :visible-future, :check-after-creation, :partial-prerequisites,
  • Doc strings that explain the repl, midje, major topics.

  • In failures, maps and sets are printed in sort order, which allows easier comparison of actual to expected results.

  • The has collection predicate now works with collection and chatty checkers.
  • The :check-only-at-load-time metadata was added.


  • Added load-facts


  • Facts are stashed and can be rechecked.
  • Added code to warn (once) of deprecated features.
  • roughly returns false for non-numbers instead of throwing an exception.
  • against-background is only called once per fact (via Harri Salokorpi)
  • junit-report can be used with Midje (via Paudi Moriarty)




  • Fix mysterious type conversion error in some cases when midje has to try really hard to guess the line number.




  • Background prerequisites are now scoped to facts. That works better with let-bindings. (Issue 26)


  • Can defer individual checks in a fact with the =future=> arrow.
  • Negating arrows in facts (=not=>)
  • Folded prerequisites are much more competent
  • Some improvement in error reporting.
  • The #'roughly checker can be used for inexact numerical comparisons.
  • #'irrelevant is a synonym for #anything
  • Line numbers are better reported for failures of very stripped-down forms (like (fact 1 => odd?)
  • A prerequisite like (f 1) =streams=> [1 2 3] produces the next value each time it's called.
  • Issue warning when bare function is used in a prerequisite. Behavior will change in 1.2.
  • Several ways to make checkers that can be used in prerequisites.


  • Ben Mabey fix: eagerly preserve record types
  • Extended-= and collection checkers have semantics for mixing maps and records.


  • Allow, where unambiguous, collection checkers to have multiple element arguments:

    (f) => (just 1 2 3 ) ; same as.. (f) => (just [1 2 3])

  • Unexpected exceptions are displayed with a trimmed stack trace FAIL at (t_collection.clj:427) Expected: 33 Actual: java.lang.Error: Oops! midje.checkers.t_collection$go.invoke(t_collection.clj:425) midje.checkers.t_collection$eval4728$fn__4729.invoke(t_collection.clj:427) midje.unprocessed$expect_STAR_$fn__2586$fn__2587.invoke(unprocessed.clj:69) midje.unprocessed$expect_STAR_$fn__2586.invoke(unprocessed.clj:67) midje.util.thread_safe_var_nesting$with_altered_roots_STAR_.invoke(thread_safe_var_nesting.clj:33) midje.unprocessed$expect_STAR_.invoke(unprocessed.clj:66) midje.checkers.t_collection$eval4728.invoke(t_collection.clj:426) user$eval19.invoke(NO_SOURCE_FILE:1)

  • lein midje runs clojure.test deftests and integrates the results into the summary.

  • cake midje does the same for Cake users.

Jump to Line
Something went wrong with that request. Please try again.