Pregunta

Tenemos un proyecto de autotools que tiene una mezcla de unidad e integración de pruebas, todos los cuales se ejecutan a través de 'make check'. Esto no es ideal, ya que algunas de las pruebas de integración tomar un tiempo, y tienen todo tipo de dependencias (base de datos, etc.)

Me gustaría separar las pruebas de integración y asignarles su propia marca de destino. De esa manera, las pruebas unitarias todavía se puede ejecutar con frecuencia (a través de cheque maquillaje), y las pruebas de integración se puede ejecutar según sea necesario de manera similar.

¿Hay una manera directa (o no) para agregar un objetivo adicional de maquillaje?

Nota: probablemente debería añadir que este es un proyecto grande, por lo que la edición / el mantenimiento de todos los Makefile a mano no es deseable. Me gustaría hacerlo de la 'autotools forma' si es posible.

- ACTUALIZACIÓN 1 -

He intentado solución Jon 's, y es un paso más cerca, pero no está allí. Todavía tengo un par de problemas:

1) La recursividad - estoy bien con la modificación de la makefile.am en la raíz del árbol de construcción, así como cualquier directorio que contiene las pruebas, pero parece que no debe haber una manera de hacer esto en el que Don 't tiene que cambiar cada Makefile.am en la jerarquía. (El objetivo cheque funciona de esta manera, después de todo)

2) .PHONY - Quiero evitar mensajes sobre .PHONY siendo redefinida. Lo cual es comprensible, porque está siendo fijado por otro paquete (en concreto, doxygen). ¿Cómo hago el buen dos juegan juntos?

¿Fue útil?

Solución 2

Dado que no ha habido más respuestas, voy a responder con mi solución.

He resuelto el problema de la repetición, al eliminar la recursividad por completo. Utilizando esta página como guía, cambié todo el proyecto desde make recursivo para hacer no recursivo. entonces cloné los objetivos relacionados con la verificación de la no-recursivo (cheque-am, Registro de pruebas, etc.) en un nuevo conjunto de objetivos para las pruebas de integración. Hasta el momento, esto funciona muy bien.

Nota: es posible que se pregunte por qué no me acaba de clonar los objetivos recurrentes en su lugar. Francamente, no podía encontrarlos. O yo no sabía dónde buscar (las reglas no estaban en el Makefile generado) o algo está ocurriendo de manera implícita, y no entiendo autotools lo suficientemente bien como para seguirla.

En cuanto a la cuestión con .PHONY ser redefinido, todavía no he encontrado una solución, que no sea para excluir condicionalmente la otra definición cuando estoy haciendo las pruebas de integración.

Otros consejos

En los archivos de am, todos hacen sintaxis se pasa en el Makefile generado. Así que si quieres un nuevo objetivo que acaba de crear como lo haría en un Makefile y aparecerá en el auto genera Makefile. Ponga lo siguiente en la parte inferior de sus archivos am.

integration-tests: prerequisites....
        commands to run test

.PHONY: integration-tests
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top