Varias pruebas, en particular las pruebas de programas cliente
bajo src/bin, utilizan las herramientas TAP de Perl y se ejecutan
utilizando el programa de prueba de Perl prove. Puedes pasar
opciones de línea de comandos a prove estableciendo
la variable de make PROVE_FLAGS, por ejemplo:
make -C src/bin check PROVE_FLAGS='--timer'
Consulta la página de manual de prove para más información.
La variable de make PROVE_TESTS
se puede utilizar para definir una lista separada por espacios en blanco de rutas relativas
al Makefile que invoca a prove
para ejecutar el subconjunto de pruebas especificado en lugar del valor por defecto
t/*.pl. Por ejemplo:
make check PROVE_TESTS='t/001_test1.pl t/003_test3.pl'
Las pruebas TAP requieren el módulo Perl IPC::Run.
Este módulo está disponible en
CPAN
o como un paquete del sistema operativo.
También requieren que PostgreSQL esté
configurado con la opción --enable-tap-tests.
En términos generales, las pruebas TAP probarán los ejecutables en un
árbol de instalación previamente instalado si dices make
installcheck, o compilarán un nuevo árbol de instalación local a partir de
las fuentes actuales si dices make check. En cualquier
caso, inicializarán una instancia local (directorio de datos) y
ejecutarán transitoriamente un servidor en ella. Algunas de estas pruebas ejecutan más de un
servidor. Por lo tanto, estas pruebas pueden ser bastante intensivas en recursos.
Es importante tener en cuenta que las pruebas TAP iniciarán servidores de prueba
incluso cuando digas make installcheck; esto es diferente de
la infraestructura de pruebas tradicional que no es TAP, la cual espera utilizar un
servidor de prueba ya en ejecución en ese caso. Algunos subdirectorios de PostgreSQL
contienen tanto pruebas de estilo tradicional como de estilo TAP,
lo que significa que make installcheck producirá una mezcla de
resultados de servidores temporales y del servidor de prueba ya en ejecución.
Los directorios de datos se nombran de acuerdo con el nombre del archivo de prueba y se
conservarán si una prueba falla. Si la variable de entorno
PG_TEST_NOCLEAN está establecida, los directorios de datos se
conservarán independientemente del estado de la prueba. Por ejemplo, para conservar el directorio de
datos independientemente de los resultados de las pruebas al ejecutar las
pruebas de pg_dump:
PG_TEST_NOCLEAN=1 make -C src/bin/pg_dump check
Esta variable de entorno también evita que se eliminen los directorios temporales de la prueba.
Muchas operaciones en las suites de pruebas utilizan un tiempo de espera (timeout) de 180 segundos, lo que en
servidores lentos puede llevar a tiempos de espera provocados por la carga. Establecer la variable de entorno
PG_TEST_TIMEOUT_DEFAULT en un número mayor cambiará
el valor predeterminado para evitar esto.