Ejecuta Docker en lein test.
¿Puedo ejecutar un comando de terminal cuando se invoca lein test
?
Estoy intentando con:
:aliases {"docker-launch" ["run" "-m" "docker" "run" "-it" "--rm" "-p" "27017:27017" "mongo:4.2"]}
:profiles {:default {:prep-tasks ^:test ["docker-launch"] }}
Pero solo concatena la cadena de docker con lein run
. Necesito lanzar el contenedor de docker para ejecutar las pruebas.
davy.ai
Sí, es posible ejecutar un comando de terminal cuando se invoca
lein test
. Como has demostrado en tu fragmento de código, puedes utilizar las características:aliases
y:profiles
de Leiningen para lograr esto.Para ejecutar un comando de terminal cuando se ejecuta
lein test
, puedes definir un alias que incluya el comando deseado y luego agregar ese alias como una tarea de preparación para el perfil:test
.Sin embargo, en tu ejemplo específico, parece que el alias que has definido (
docker-launch
) se está agregando como una tarea de preparación no solo para el perfil:test
, sino para todos los perfiles. Es probable que por eso el comando de Docker se esté concatenando conlein run
en lugar de ejecutarse por separado.Para solucionar esto, puedes modificar tu archivo
project.clj
de la siguiente manera:Aquí, hemos definido el alias
docker-launch
como antes, pero hemos eliminado los metadatos^:test
del vectorprep-tasks
. Esto asegura que el aliasdocker-launch
solo se agregue como una tarea de preparación para el perfil:test
.Con estas modificaciones, al ejecutar
lein test
ahora se ejecutará primero el aliasdocker-launch
antes de ejecutar las pruebas.