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.
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.