各種測試,特別是 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 或作業系統套件取得。 它們還需要使用選項 --enable-tap-tests
配置 PostgreSQL。
廣義上講,如果您說 make installcheck
,TAP 測試將測試先前安裝的安裝樹中的可執行檔,如果您說 make check
,則會從目前的原始碼建構新的本地安裝樹。 無論哪種情況,它們都會初始化一個本地實例(資料目錄),並暫時在其中執行伺服器。 其中一些測試會執行多個伺服器。 因此,這些測試可能會相當消耗資源。
重要的是要了解,即使您說 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
設定為較高的數字將變更預設值,以避免這種情況。
如果您在文件中發現任何不正確、與特定功能的經驗不符或需要進一步澄清的地方,請使用此表單來報告文件問題。