由於某些測試本質上會產生依賴於環境的結果,因此我們提供了指定替代的「預期」結果檔案的方法。每個迴歸測試都可以有多個比較檔案,顯示不同平台上的可能結果。有兩種獨立的機制可以決定每個測試使用哪個比較檔案。
第一種機制允許為特定平台選擇比較檔案。有一個對應檔案 src/test/regress/resultmap
,定義了每個平台要使用哪個比較檔案。要消除特定平台的虛假測試「失敗」,首先選擇或建立一個變體結果檔案,然後將一行添加到 resultmap
檔案中。
對應檔案中的每一行都具有以下形式:
testname:output:platformpattern=comparisonfilename
測試名稱只是特定迴歸測試模組的名稱。 輸出值表示要檢查哪個輸出檔案。 對於標準迴歸測試,這始終是 out
。 該值對應於輸出檔案的檔案副檔名。 平台模式是 Unix 工具 expr
風格的模式(也就是說,一個在開頭具有隱含 ^
定位的正規表示式)。 它與 config.guess
印出的平台名稱進行比對。 比較檔案名稱是替代結果比較檔案的基本名稱。
例如:某些系統缺少可用的 strtof
函式,對於這些系統,我們的解決方法會在 float4
迴歸測試中造成捨入誤差。 因此,我們提供了一個變體比較檔案 float4-misrounded-input.out
,其中包含在這些系統上預期的結果。 為了消除 Cygwin 平台上的虛假「失敗」訊息,resultmap
包含:
float4:out:.*-.*-cygwin.*=float4-misrounded-input.out
這將在 config.guess
的輸出與 .*-.*-cygwin.*
比對的任何機器上觸發。 resultmap
中的其他行選擇適用於其他平台的變體比較檔案。
變體比較檔案的第二種選擇機制更自動化:它僅使用所提供的多個比較檔案中「最佳比對」。 迴歸測試驅動程式指令碼會同時考量測試的標準比較檔案
和名為 testname
.out
的變體檔案(其中 testname
_digit
.outdigit
是任何單個數字 0
-9
)。 如果任何此類檔案是完全比對,則測試被視為通過; 否則,會使用產生最短差異的檔案來建立失敗報告。(如果 resultmap
包含特定測試的條目,則基本 testname
是 resultmap
中給定的替代名稱。)
例如,對於 char
測試,比較檔案 char.out
包含 C
和 POSIX
語言環境中預期的結果,而檔案 char_1.out
包含在許多其他語言環境中顯示的排序結果。
最佳比對機制是為了應對依賴於語言環境的結果而設計的,但它可以用於無法僅從平台名稱輕鬆預測測試結果的任何情況。 這種機制的一個限制是測試驅動程式無法判斷哪個變體實際上對於目前環境是「正確」的; 它只會選擇似乎效果最好的變體。 因此,僅將此機制用於您願意在所有上下文中都視為同樣有效的變體結果是最安全的。
如果您在文件中發現任何不正確、與您使用特定功能時的體驗不符,或需要進一步澄清的地方,請使用此表單回報文件問題。