内容

名称

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()

获取所有活动上下文,以中心 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 { ... })

添加上下文释放回调。每次释放上下文时都会调用子例程。子例程将释放的上下文作为其唯一参数。这些回调不应该在上下文中调用释放。

$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

获取唯一真正的集线器堆栈。

$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 将附加到所有事件、集线器和上下文。这对于存储、跟踪和链接这些对象很有用。

您提供的子程序应始终返回唯一的标识符。大多数东西都期望一个正确的 UUID 字符串,但是 Test2::API 中没有任何东西强制执行这一点。

子程序将接收正好 1 个参数,被标记为“context”、“hub”或“event”的类型。将来可能会标记其他内容,在这种情况下,将传入新的字符串。这些纯粹是信息性的,您可以(通常应该)忽略它们。

SOURCE

Test2 的源代码存储库可以在 http://github.com/Test-More/test-more/ 找到。

MAINTAINERS

Chad Granum <[email protected]>

AUTHORS

Chad Granum <[email protected]>

COPYRIGHT

版权所有 2020 Chad Granum <[email protected]>。

本程序是自由软件;您可以在 Perl 本身相同的条款下重新发布和/或修改它。

参见 https://dev.perl5.cn/licenses/