Skip to content

Conversation

vemv
Copy link
Collaborator

@vemv vemv commented Mar 27, 2021

Closes #354
Closes #311

Accomplishes a number of things: cleaner test suite running, a more parallel CI matrix (with one job per Clojure version), and a cleaner experience for developing Eastwood (namely: being able to fire up a repl, run tests from the repl, etc without having Lein internals possibly interfering).

Importantly, it makes :eval-in dependent on an env var (sadly it cannot be set depending on a Lein profile). This makes dogfooding Eastwood possible, while also not coupling the choice of Clojure version to Lein's (otherwise either test-all or dogfooding would break).

Commit summary

  • CircleCI: use Lein 2.9.5
  • Make dogfooding pass
    • the dogfooding had been broken for at least some months - which the cleaned-up project.clj setup revealed
  • Make the test suite pass without the implicit dev profile
    • And particularly, without the leiningen-core dependency which makes it plausible that the test suite could be passing for fragile reasons.
  • Extract :warn-on-reflection profile
    • This way, one can opt to launch a repl process without *warn-on-reflection*, which can be noisy, in face of arbitrary deps outside our control.
  • Move leiningen.eastwood to its own source path
    • This way one can use tools.namespace (refresh) without needing the leiningen-core dependency to be present (which tends to be a bad practice in non-plugins)
  • project.clj :eastwood: remove :only-modified true
    • Because the Eastwood implementation can always change, caching linting results can easily cache past implementations' output, leading to false negatives.
  • Make the matrix fully parallel
    • Now the matrix is 2-dimensional (JVM + clojure version), which results in a faster feedback loop and cleaner output (vs. different test suites being rendered as a single CI job)

vemv added 7 commits March 27, 2021 20:46
And particularly, without the `leiningen-core` dependency which makes it plausible that the test suite could be passing for fragile reasons.
This way, one can opt to launch a repl process without `*warn-on-reflection*`, which can be noisy, in face of arbitrary deps outside our control.
This way one can use tools.namespace `(refresh)` without needing the leiningen-core dependency to be present (which tends to be a bad practice in non-plugins)
Because the Eastwood implementation can always change, caching linting results can easily cache past implementations' output, leading to false negatives.
@slipset slipset merged commit ee7ebc4 into jonase:master Mar 27, 2021
@vemv vemv deleted the matrix branch March 28, 2021 00:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Failing test on master if :eval-in-leiningen false
2 participants