內容

名稱

Test2::API::Instance - Test2::API 在幕後使用的物件

說明

此物件封裝了 Test2 追蹤的共用全域狀態。此套件的單一全域實例由 Test2::API 套件儲存 (並隱藏)。

沒有理由直接使用此套件。此套件的文件是為了完整性。此套件可能會變更,或隨時完全消失。直接使用或猴子修補此套件在任何方式或形式上都不受支援。

語法

use Test2::API::Instance;

my $obj = Test2::API::Instance->new;
$pid = $obj->pid

此實例的 PID。

$obj->tid

此實例的執行緒 ID。

$obj->reset()

將物件重設為預設值。

$obj->load()

將內部狀態設為已載入,並執行並儲存載入後呼叫回函。

$bool = $obj->loaded

檢查狀態是否設為已載入。

$arrayref = $obj->post_load_callbacks

取得載入後呼叫回函。

$obj->add_post_load_callback(sub { ... })

新增載入後呼叫回函。如果已呼叫 load(),則呼叫回函會立即執行。如果未呼叫 load(),則呼叫回函會儲存並在稍後呼叫 load() 時執行。

$hashref = $obj->contexts()

取得所有使用中脈絡的雜湊參考,其鍵為 hub id。

$arrayref = $obj->context_acquire_callbacks

取得所有脈絡取得呼叫回函。

$arrayref = $obj->context_init_callbacks

取得所有脈絡初始化呼叫回函。

$arrayref = $obj->context_release_callbacks

取得所有脈絡釋放呼叫回函。

$arrayref = $obj->pre_subtest_callbacks

取得所有子測試前呼叫回函。

$obj->add_context_init_callback(sub { ... })

新增脈絡初始化呼叫回函。每次建立脈絡時,都會呼叫子常式。子常式會將新建立的脈絡作為其唯一引數。

$obj->add_context_release_callback(sub { ... })

新增脈絡釋放呼叫回函。每次釋放脈絡時,都會呼叫子常式。子常式會將已釋放的脈絡作為其唯一引數。這些呼叫回函不應在脈絡上呼叫 release。

$obj->add_pre_subtest_callback(sub { ... })

新增一個子測試前呼叫回函。每次執行子測試時都會呼叫子函式。子函式會取得子測試名稱、代碼參考和任何參數。

$obj->set_exit()

這預計會在 END { ... } 區塊中呼叫。這將查看測試狀態並設定 $?。這也會呼叫任何結束呼叫回函,並等待子程序/執行緒。

$obj->set_ipc_pending($val)

告訴其他程序和執行緒有一個待處理事件。$val 應為其他執行緒/程序不會產生的唯一值。

注意:這也會讓目前程序看到一個待處理事件。

$pending = $obj->get_ipc_pending()

如果無法得知,這會傳回 -1。

如果沒有待處理事件,這會傳回 0。

如果有的待處理事件,這會傳回 1。

$timeout = $obj->ipc_timeout;
$obj->set_ipc_timeout($timeout);

在中止子程序和執行緒之前等待的時間長度。

$drivers = $obj->ipc_drivers

取得 IPC 驅動程式的清單。

$obj->add_ipc_driver($DRIVER_CLASS)

將一個 IPC 驅動程式新增到清單中。最近新增的 IPC 驅動程式會在初始化期間成為全域性的。如果在初始化發生後新增驅動程式,將會產生警告。

"IPC driver $driver loaded too late to be used as the global ipc driver"
$bool = $obj->ipc_polling

檢查是否已啟用輪詢。

$obj->enable_ipc_polling

開啟輪詢。這會在每次建立內容時從其他程序和執行緒中刪除事件。

$obj->disable_ipc_polling

關閉 IPC 輪詢。

$bool = $obj->no_wait
$bool = $obj->set_no_wait($bool)

取得/設定 no_wait。此選項用於關閉離開時的程序/執行緒等待。

$arrayref = $obj->exit_callbacks

取得離開回呼。

$obj->add_exit_callback(sub { ... })

新增離開回呼。此回呼會由 set_exit() 呼叫。

$bool = $obj->finalized

檢查物件是否已完成。完成會在物件上呼叫 ipc()stack()format() 時發生。一旦完成,這些欄位將被視為不可變更(未在此強制執行,由 Test2 強制執行)。

$ipc = $obj->ipc

取得唯一的真實 IPC 執行個體。

$obj->ipc_disable

關閉 IPC

$bool = $obj->ipc_disabled

檢查 IPC 是否已停用

$stack = $obj->stack

取得唯一的真實 hub 堆疊。

$formatter = $obj->formatter

取得全域格式化器。預設為 'Test2::Formatter::TAP' 套件。這可以是任何實作 write() 方法的套件。也可以是已實例化的物件。

$bool = $obj->formatter_set()

檢查是否已設定格式化器。

$obj->add_formatter($class)
$obj->add_formatter($obj)

新增格式化器。最近新增的格式化器會在初始化期間成為全域格式化器。如果在初始化之後新增格式化器,將會產生警告

"Formatter $formatter loaded too late to be used as the global formatter"
$obj->set_add_uuid_via(sub { ... })
$sub = $obj->add_uuid_via()

這允許您提供 UUID 產生器。如果提供,UUID 將附加到所有事件、hub 和內容。這對於儲存、追蹤和連結這些物件很有用。

您提供的子程式應始終傳回唯一的識別碼。大多數情況下會需要正確的 UUID 字串,但 Test2::API 中沒有任何內容會強制執行這一點。

子程式將收到正好 1 個引數,即標記為「內容」、「hub」或「事件」的項目類型。未來可能會標記其他項目,這種情況下會傳入新的字串。這些純粹是提供資訊,您可以(通常也應該)忽略它們。

來源

Test2 的原始碼存放庫可在 http://github.com/Test-More/test-more/ 找到。

維護人員

Chad Granum <exodist@cpan.org>

作者

Chad Granum <exodist@cpan.org>

版權

版權所有 2020 Chad Granum <exodist@cpan.org>。

這個程式是免費軟體;您可以在與 Perl 相同的條款下重新散布或修改它。

請參閱 http://dev.perl.org/licenses/