es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  ,

Answer

  1. Avatar for 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 con lein run en lugar de ejecutarse por separado.

    Para solucionar esto, puedes modificar tu archivo project.clj de la siguiente manera:

    :aliases {"docker-launch" ["run" "-m" "docker" "run" "-it" "--rm" "-p" "27017:27017" "mongo:4.2"]}
    
    :profiles {:test {:prep-tasks ["docker-launch"]}}
    

    Aquí, hemos definido el alias docker-launch como antes, pero hemos eliminado los metadatos ^:test del vector prep-tasks. Esto asegura que el alias docker-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 alias docker-launch antes de ejecutar las pruebas.

Comments are closed.