Как запустить команду lein run автоматически после сохранения? - PullRequest
2 голосов
/ 01 февраля 2020

В проекте Leiningen я хочу запускать lein run каждый раз, когда сохраняю файл в своем проекте. Как я могу это сделать?

1 Ответ

2 голосов
/ 01 февраля 2020

Лучший способ - использовать плагин lein test-refre sh .

. Он будет контролировать файловую систему и перезапускать ваши юнит-тесты при каждом сохранении файла. Просто выполните модульный тест, который вызывает (myproj.core/-main) или аналогичный, и при каждом сохранении файла ваша программа будет перезапускаться.

Еще лучший способ - написать модульный тест, который запускает одну или несколько функций (возможно, включая -main) и сравнивает фактический результат с ожидаемым.

Не забудьте посмотреть метаданные :test-refresh/focus, которые позволят вам выбрать определенные c тесты для запуска, временно игнорируя другие.

Я широко использую обе функции в моей библиотеке Tupelo Clojure , которая имеет более 3500 модульных тестов. В качестве примера см. проект Clojure Template :

~/demo > git clone git@github.com:io-tupelo/clj-template.git
Cloning into 'clj-template'...
~/demo > 
~/demo > cd clj-template
~/demo/clj-template > lein test

lein test _bootstrap

-------------------------------
   Clojure 1.10.1    Java 13
-------------------------------

lein test tst.demo.core

Ran 3 tests containing 8 assertions.
0 failures, 0 errors.
~/demo/clj-template > 

и код:

(ns tst.demo.core
  (:use demo.core tupelo.core tupelo.test)
  (:require
    [tupelo.string :as ts])
  (:import [demo Calc]))

(dotest
  (is= 5 (+ 2 3))
  (isnt= 9 (+ 2 3))
  (throws? (/ 1 0)) ; verify that an illegal operation throws an exception

  (is= 3 (add2 1 2))
  (throws? (add2 1 "two"))) ; Prismatic Schema will throw since "two" is not a number

Если вы используете tupelo.test, как указано выше, вы можно просто заменить (dotest-focus ...) вместо dotest и только , которые будут выполняться конкретными тестами.

Другой пример - JUXT / bidi демо .

Наслаждайтесь!


Обновление

Если вы хотите исследовать альтернативного бегуна Leiningen, ознакомьтесь с Koacha lib .

...