Question

Nous avons un projet autotools qui a un mélange de tests unitaires et d'intégration, qui tous fonctionnent par «faire le chèque. Ce n'est pas idéal, comme certains des tests d'intégration prendre un certain temps, et ont toutes sortes de dépendances (base de données, etc.)

Je voudrais séparer les tests d'intégration et les affecter leur objectif de faire. De cette façon, les tests unitaires peut encore être exécuté souvent (par chèque de marque) et les tests d'intégration peut être exécuté selon les besoins de la même manière.

Y at-il un moyen simple (ou autre) pour ajouter une cible make supplémentaire?

NOTE: Je devrais sans doute ajouter que cela est un grand projet, de sorte que l'édition / maintenir chaque makefile à la main n'est pas souhaitable. Je voudrais faire le « autotools chemin » si possible.

- MISE À JOUR 1 -

Je l'ai essayé la solution de Jon , et il est un pas de plus, mais pas tout à fait. J'ai encore quelques problèmes:

1) Recursion - Je suis OK avec la modification de la makefile.am dans la racine de l'arbre de construction, ainsi que tout répertoire contenant les tests, mais il semble qu'il devrait y avoir une façon de faire où je don « t doivent changer tous les Makefile.am dans la hiérarchie. (La cible de contrôle fonctionne de cette façon, après tout)

2) .PHONY - Je continue de recevoir des messages sur .PHONY redéfinie. Ce qui est compréhensible, parce qu'il est d'être fixé par un autre paquet (en particulier, doxygen). Comment puis-je faire les deux jeux bien ensemble?

Était-ce utile?

La solution 2

Comme il n'y a pas eu plus de réponses, je vais répondre à ma solution.

Je résolu la question de la récursivité en éliminant la récursion tout à fait. En utilisant cette page comme guide, je suis passé l'ensemble du projet de make récursif à faire non récursive. Je puis cloné les objectifs liés à enregistrement non récursives (chèque, chèque-am, check-tests, etc.) dans une nouvelle série d'objectifs pour les tests d'intégration. Jusqu'à présent, cela fonctionne très bien.

Remarque: vous demandez peut-être pourquoi je ne viens pas cloner les cibles récursives à la place. Très franchement, je ne pouvais pas les trouver. Soit je ne savais pas où regarder (les règles ne sont pas dans le Makefile) ou quelque chose se passe implicitement, et je ne comprends pas assez bien autotools de le suivre.

En ce qui concerne la question avec .PHONY étant redéfini, je n'ai pas encore trouvé une solution, autre que d'exclure conditionnellement l'autre définition quand je fais les tests d'intégration.

Autres conseils

Dans vos fichiers am, font tous la syntaxe est passée dans le Makefile. Donc, si vous voulez une nouvelle cible juste créer comme vous le feriez dans un Makefile et il apparaîtra dans le Makefile généré automatiquement. Mettez ce qui suit au bas de vos fichiers am.

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

.PHONY: integration-tests
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top