Test2::Util - Test2 和朋友使用的工具。
Test2 和朋友使用的工具集合。
所有匯出都是選用的。您必須指定要匯入的子程式。
評估程式碼區塊,傳回成功或失敗,以及錯誤訊息。此程式碼會保護 $@ 和 $!,它們會在執行結束時還原。此程式碼也會暫時封鎖 $SIG{DIE} 處理常式。
類似於 try,但它不會捕捉例外。此處的想法是保護 $@ 和 $! 不被變更。只要執行成功,$@ 和 $! 就會還原到執行前的狀態。如果執行失敗,$! 仍會還原,但 $@ 會包含引發的例外。
如果此系統能夠進行真實或偽執行緒 fork,則為 True。
如果系統可以真正 fork,則為 True。對於 fork 是模擬的系統,這將為 false。
如果此系統能夠使用執行緒,則為 True。
如果啟用執行緒,則傳回 true,如果未啟用,則傳回 false。
如果啟用了執行緒,這將傳回目前的執行緒 ID,否則傳回 0。
將套件名稱轉換為檔案名稱。
取得 IPC 分隔符號。目前這始終是字串 '~'
。
產生一個獨特 ID (不是 UUID)。這通常會是程序 ID、執行緒 ID、時間和一個遞增整數,全部使用 ipc_separator()
連結起來。
這些 ID 對於大多數目的而言都夠獨特。要產生相同的 ID,您必須有 2 個具有相同 PID 的程序在相同時間產生 ID,且遞增整數的目前狀態相同。這是跨多部機器發生的合理情況,但在一部機器上發生的機率很低。
如果一個程序產生一個 ID,呼叫 exec,然後在 exec 後再次執行,且所有這些動作在不到一秒內完成,則可能會無法產生獨特 ID。如果系統程序 ID 在不到一秒內循環,讓 2 個使用這個產生器的不同程式在不到一秒內使用相同的 PID 執行,也可能會發生這種情況。這兩種情況發生的機率都很低。如果您需要通用獨特 ID,或在這些條件下仍然獨特的 ID,請參閱 Data::UUID。
重新命名一個檔案,這會以一種方式包裝 rename()
,讓它在您嘗試重新命名最近變更的檔案時,在跨平台時更可靠。
取消連結一個檔案,這會以一種方式包裝 unlink()
,讓它在您嘗試取消連結最近變更的檔案時,在跨平台時更可靠。
使用多個遮罩訊號完成一個動作,它們會在最後取消遮罩,讓任何被攔截的訊號都能被處理。
這主要用於您需要讓多個動作成為原子動作(無論如何,針對某些訊號)時。
被攔截的訊號
Perl 5.10.0 在使用較新的 gcc 版本編譯時會發生錯誤。此錯誤會在每次啟動新執行緒時導致區段錯誤。Test2 會嘗試偵測此錯誤,並在偵測到時指出系統無法分岔。
Devel::Cover 不支援執行緒。如果在第一次執行檢查之前載入 Devel::Cover,CAN_THREAD 會傳回 false。
Test2 的原始碼儲存庫可以在 http://github.com/Test-More/test-more/ 找到。
版權所有 2020 Chad Granum <exodist@cpan.org>。
此程式為自由軟體;您可以在與 Perl 相同的條款下重新散布或修改它。
請參閱 http://dev.perl.org/licenses/