PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 16.4 » Administration du serveur » Tests de régression » Tests TAP

33.4. Tests TAP #

Différents tests, en particulier les tests des programmes clients sous src/bin, utilisent les outils TAP de Perl et sont exécutés en utilisant le programme de tests Perl appelé prove. Les programmes de test clients situés dans src/bin utilisent les outils Perl TAP et sont exécutés par prove. Il est possible de passer des options en ligne de commande à prove en positionnant la variable make PROVE_FLAGS, par exemple :

make -C src/bin check PROVE_FLAGS='--timer'
      

Voir la page de manuel de prove pour plus d'information.

La variable PROVE_TESTS de la commande make peut être utilisée pour définir une liste de chemins relatifs séparés par des espaces blancs, vers le Makefile appelant prove pour lancer le sous-ensemble spécifié de tests à la place de la valeur par défaut t/*.pl. Par exemple :

make check PROVE_TESTS='t/001_test1.pl t/003_test3.pl'
      

Les tests TAP nécessitent le module IPC::Run. Ce module est disponible depuis CPAN ou un paquet du système d'exploitation. Ils requièrent aussi que PostgreSQL soit configuré avec l'option --enable-tap-tests.

En général, les tests TAP testeront les exécutables dans une arborescence d'installation préalable si vous exécutez make installcheck, ou construirons une nouvelle arborescence d'installation locale à partir des sources courants si vous dites make check. Dans tous les cas, ils initialiseront une instance locale (répertoire de données) et exécuteront temporairement un serveur dessus. Certains de ces tests s'exécutent avec plus d'un serveur. De ce fait, ces tests peuvent être très consommateurs en ressource.

Il est important de réaliser que les tests TAP démarreront les serveurs de test même quand vous utilisez make installcheck ; ceci est contraire à l'infrastructure traditionnelle de tests (donc non TAP) qui s'attend à utiliser un serveur de tests déjà en cours d'exécution. Certains sous-répertoires de PostgreSQL contiennent à la fois des tests dans le style traditionnel et d'autres dans le style TAP, ceci signifiant que make installcheck produira un mix de résultats provenant de serveurs temporaires et d'un serveur de tests déjà en cours d'exécution.

33.4.1. Variables d'environnement #

Les répertoires de données sont nommés en accord avec le nom du fichier de test. Si la variable d'environnement PG_TEST_NOCLEAN est configuré, les répertoires de données seront conservés quelque soit le statut du test. Par exemple, pour conserver le répertoire de données quelque soit les résultats du test lors de l'exécution des tests de pg_dump :

   PG_TEST_NOCLEAN=1 make -C src/bin/pg_dump check
   

Cette variable d'environnement empêche aussi la suppression des répertoires temporaires de tests.

Beaucoup d'operations des suites de tests utilise une limite de temps à 180 secondes, ce qui pourrait amener des arrêts sur les serveurs lents. Configurer la variable d'environnement PG_TEST_TIMEOUT_DEFAULT à une valeur plus haute évitera cela.