À partir d'un fichier de test Perl, comment puis-je vérifier le contenu d'un fichier?

StackOverflow https://stackoverflow.com/questions/2543325

  •  23-09-2019
  •  | 
  •  

Question

Je veux tester un script que je l'ai écrit en Perl et vérifier précisément ce que la sortie il écrit dans un fichier. Je l'ai écrit il y a quelque temps et ne veux pas le modifier dans la mesure de le transformer en un module mais je voudrais tester la régression avant d'ajouter quelques petits changements fonctionnels.

Jusqu'à présent, j'ai

use Test::Command tests => 10;

exit_is_num($cmd, 0);
....

Mais la commande produit des fichiers et je veux vérifier ces fichiers sont les mêmes que je pense (que ce soit égal ou correspondant à certains regexp). Toutes les suggestions

Autres conseils

OK, je vais aller avec la force brute approche DIY (mais il est possible, il y a déjà un certain module de test avec l'API de vérification de fichier - Je viens jamais tombé sur une aussi flexible / générique que ce que nous avions besoin et nous écrit et jamais ressenti le besoin impérieux de rechercher plus profondément :).

Je vais vous décrire une configuration de test assez générique, vous voudrez peut-être / ont besoin que des aspects de tests de fichiers très spécifiques de celui-ci.

Ce que nous faisons dans ce cas est littéralement ce que vos spécifications fonctionnelles ci-dessus les Etats, dans le cadre du cadre global de test:

  • Avoir une bibliothèque de tests avec deux méthodes (entre autres) - test_file_identical() et test_grep_file() . Si vous avez besoin d'aide pour écrire ces deux, s'il vous plaît déposer un commentaire et je vais offrir quelques conseils (nous utilisons des comparateurs différents, y compris une combinaison de -e, des comparaisons de divers attributs de stat, la comparaison des chaînes de contenu de fichier testé par rapport fichier de référence obtenu par File::Slurp et de faire grep du fichier, ligne par ligne ou via le contenu slurped pour les petits fichiers, y compris la comparaison des résultats de grep massé dans un fichier de référence.

  • Demandez à vos tests de cas organisés en sous-répertoires (ou tarballs), un par test, et chaque test se compose de 2 répertoires -. Les fichiers d'entrée et de sortie des fichiers attendus

  • Avoir la boucle de script du moteur d'essai sur des cas de test (qui pour nous sont des méta-décrit soit par une structure de données Perl ou mieux encore, un fichier XML pour les analystes métier peuvent jouer avec eux si nécessaire).

  • Si un test indique que le test doit correspondre (exactement ou via grep), le moteur de test détecte les fichiers appropriés (soit des noms codés en dur, ou par modèle de nom spécifié en cas de test), appliquer ces fichiers les méthodes d'essai mentionnés dans le premier point

scroll top