各種測試,尤其是 src/bin
下的客戶端程式測試,使用 Perl TAP 工具,並使用 Perl 測試程式 prove
執行。你可以透過設定 make
變數 PROVE_FLAGS
來向 prove
傳遞命令列選項,例如
make -C src/bin check PROVE_FLAGS='--timer'
有關更多資訊,請參閱 prove
的手冊頁。
可以使用 make
變數 PROVE_TESTS
來定義一個以空格分隔的路徑列表,這些路徑相對於呼叫 prove
的 Makefile
,以執行指定的測試子集,而不是預設的 t/*.pl
。例如
make check PROVE_TESTS='t/001_test1.pl t/003_test3.pl'
TAP 測試需要 Perl 模組 IPC::Run
。該模組可從 CPAN 或作業系統軟體包中獲得。它們還需要 PostgreSQL 使用選項 --enable-tap-tests
進行配置。
總的來說,如果你執行 make installcheck
,TAP 測試將測試先前安裝的安裝樹中的可執行檔案;如果你執行 make check
,TAP 測試將從當前源構建一個新的本地安裝樹。無論哪種情況,它們都會初始化一個本地例項(資料目錄)並在其中臨時執行一個伺服器。其中一些測試會執行多個伺服器。因此,這些測試可能相當消耗資源。
需要認識到的是,即使你執行 make installcheck
,TAP 測試也會啟動測試伺服器;這與傳統的非 TAP 測試基礎設施不同,後者在這種情況下期望使用一個已在執行的測試伺服器。一些 PostgreSQL 子目錄同時包含傳統風格和 TAP 風格的測試,這意味著 make installcheck
將產生臨時伺服器和已在執行的測試伺服器的混合結果。
資料目錄的命名根據測試檔名,並且在測試失敗時將被保留。如果設定了環境變數 PG_TEST_NOCLEAN
,無論測試狀態如何,資料目錄都將被保留。例如,在執行 pg_dump 測試時,無論測試結果如何都保留資料目錄
PG_TEST_NOCLEAN=1 make -C src/bin/pg_dump check
此環境變數還阻止移除測試的臨時目錄。
測試套件中的許多操作使用 180 秒的超時,這在慢速主機上可能導致由負載引起的超時。將環境變數 PG_TEST_TIMEOUT_DEFAULT
設定為更高的數字將更改預設值以避免此問題。
如果您在文件中發現任何不正確、與您在使用特定功能時的經驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。