lein-midje icon indicating copy to clipboard operation
lein-midje copied to clipboard

:autotest does not rerun tests in external dependencies

Open ilmoraunio opened this issue 8 years ago • 1 comments

Description

lein midje :autotest will not rerun tests in external dependencies after modifying .clj files under src/ folder.

Steps to reproduce bug (example project)

  1. Clone training-day repository git clone https://github.com/iloveponies/training-day.git
  2. Go to project directory and run lein midje :autotest. 6 checks should fail.
  3. Edit square fn in src/training_day.clj to return (* x x) instead of ":(".
  4. Midje should return "No facts were checked. Is that what you wanted?"

Actual expectation

lein midje :autotest should really be returning "3 checks failed. (But 3 succeeded.)" in step 4, but it doesn't seem to reload the external dependencies where the tests are located.

The test file training_day_test.clj contains only a reference to a namespace containing all of the tests:

(ns training-day-test
  (:use iloveponies.tests.training-day))

This is the only test file in this project.

Related to #48. Also related issues from iloveponies' repositories:

  • https://github.com/iloveponies/training-day/issues/434
  • https://github.com/iloveponies/120-hour-epic-sax-marathon/issues/31

ilmoraunio avatar Apr 11 '17 06:04 ilmoraunio

A way to bypass the problem is to require the tests in a separate function call and require the namespace-under-test under ns:

(ns training-day-test
  (:require [training-day :refer :all]))

(require 'iloveponies.tests.training-day :reload)

For me it's still unclear, if it's a bug in midje or a feature of clojure.

ilmoraunio avatar Apr 11 '17 12:04 ilmoraunio