Recientemente comencé a usar git, y también comencé a probar la unidad (usando el módulo unittest
de Python). Me gustaría ejecutar mis pruebas cada vez que me comprometa, y solo cometeré si pasan.Confirmar en git solo si pasan las pruebas
Supongo que necesito usar pre-commit
en /hooks
, y he logrado que ejecute las pruebas, pero parece que no puedo encontrar una manera de detener la confirmación si fallan las pruebas. Estoy ejecutando las pruebas con make test
, que a su vez está ejecutando python3.1 foo.py --test
. Parece que no obtengo una condición de salida diferente si las pruebas pasan o fallan, pero es posible que esté buscando en el lugar equivocado.
Editar: ¿Es esto algo poco común que quiero hacer aquí? Yo hubiera pensado que era un requisito común ...
Edit2: Sólo en caso de las personas no se molestan en leer los comentarios, el problema era que unittest.TextTestRunner
no sale con que no sea cero condición, ya sea el conjunto de pruebas es exitoso o no. Para atraparlo, lo hice:
result = runner.run(allTests)
if not result.wasSuccessful():
sys.exit(1)
Preguntas recientes sobre SO llegado hasta la parte superior de las consultas de Google con bastante rapidez; y luego caer también rápidamente en el ranking. No es raro hacer una pregunta y 5 minutos después obtenerla como el éxito principal de Google; pero en una semana, puede ser más difícil encontrarlo. –
@Brian Ah, es suficiente. No me di cuenta de que Google funcionaba así. – Skilldrick
¿Su comando 'python3.1 foo.py --test' devuelve un estado de salida distinto de cero? ¿'Make' devuelve un estado de salida distinto de cero si lo ejecuta manualmente? ¿Y cuál es el contenido de su gancho 'pre-commit'? –