查看源代码 Common Test 发行说明
Common_Test 1.27.5
修复的错误和故障
修复了一个错误,该错误导致 HTML 日志中测试用例的执行时间总和有时计算错误,并且表格没有完全打印。
内部 ID:OTP-19284 辅助 ID:ERIERL-1093, PR-8909
Common_Test 1.27.4
修复的错误和故障
通过此更改,cth_surefire 钩子模块处理跳过组的组路径缩减。 这修复了在跳过的组之后执行的组的组路径不正确的错误。
内部 ID:OTP-19365 辅助 ID:ERIERL-1157, PR-9080
改进和新功能
通过此更改,可以在 cth_conn_log 选项列表中指定前缀选项。 该选项允许指定在原始日志输出中添加多少附加信息。
Common_Test 1.27.3
修复的错误和故障
通过此更改,jquery 和 tablesorter 许可证已添加到 COPYRIGHT 文件中。 此外,tablesorter 更新到 2.32 版本。
内部 ID:OTP-19265 辅助 ID:PR-8876
Common_Test 1.27.2
修复的错误和故障
通过此更改,HTML 报告包含 jQuery 3.7.1 版本。
内部 ID:OTP-19252 辅助 ID:PR-8858
Common_Test 1.27.1
修复的错误和故障
指定组和测试用例的空列表的组不再导致执行崩溃。
Common_Test 文档和类型规范已进行润色。
内部 ID:OTP-19148 辅助 ID:PR-8516
现在,
erl
、erlc
、dialyzer
以及 Erlang/OTP 中包含的所有其他程序都提供了手册页。内部 ID:OTP-19201 辅助 ID:PR-8740
Common_Test 1.27
改进和新功能
对
ct:capture_start/0
和ct:capture_stop/0
的调用现在是同步的,以确保捕获所有输出。内部 ID:OTP-18658 辅助 ID:PR-7380
现在可以在每个配置函数之后反转执行多个钩子的顺序。 请参阅 CTH 执行顺序。
如果浏览器首选,默认 CSS 现在将包括基本的暗模式处理。
内部 ID:OTP-18761 辅助 ID:PR-7428
-callback
属性已添加到ct_suite
和ct_hooks
。内部 ID:OTP-18781 辅助 ID:PR-7701
内置的 cth_log_redirect 钩子现在可以配置为将终端中的默认记录器报告替换为 HTML 日志。
内部 ID:OTP-18875 辅助 ID:PR-7891
增强了
ct_property_test
框架的错误处理。内部 ID:OTP-18881 辅助 ID:PR-7824
增强了测试用例文档,使其明确如何使测试用例失败。
内部 ID:OTP-18892 辅助 ID:PR-7869
测试源代码中失败的行现在已着色,以便更容易在屏幕上找到。
内部 ID:OTP-18898 辅助 ID:PR-7917
函数规范和类型已添加到所有公共 API 函数中。
内部 ID:OTP-18913
文档已迁移为使用 Markdown 和 ExDoc。
内部 ID:OTP-18955 辅助 ID:PR-8026
套件执行经过时间现在包含在索引页中。
Common_Test 1.26.2.3
修复的错误和故障
通过此更改,cth_surefire 钩子模块处理跳过组的组路径缩减。 这修复了在跳过的组之后执行的组的组路径不正确的错误。
内部 ID:OTP-19365 辅助 ID:ERIERL-1157, PR-9080
Common_Test 1.26.2.2
改进和新功能
通过此更改,可以在 cth_conn_log 选项列表中指定前缀选项。 该选项允许指定在原始日志输出中添加多少附加信息。
内部 ID:OTP-19293 辅助 ID:ERIERL-1139, PR-8924, PR-8931
Common_Test 1.26.2.1
修复的错误和故障
通过此更改,HTML 报告包含 jQuery 3.7.1 版本。
内部 ID:OTP-19252 辅助 ID:PR-8858
通过此更改,jquery 和 tablesorter 许可证已添加到 COPYRIGHT 文件中。 此外,tablesorter 更新到 2.32 版本。
内部 ID:OTP-19265 辅助 ID:PR-8876
修复了一个错误,该错误导致 HTML 日志中测试用例的执行时间总和有时计算错误,并且表格没有完全打印。
内部 ID:OTP-19284 辅助 ID:ERIERL-1093, PR-8909
Common_Test 1.26.2
修复的错误和故障
通过此更改,common_test 测试用例日志文件中的最后一列已修改为现在显示表格行中每个时间的总和,以及运行上述函数所花费的时钟时间“经过时间”。 “经过时间”与之前总时间相同。
内部 ID:OTP-18960
Common_Test 1.26.1
修复的错误和故障
修复了 CT 如何查找用于兼容性测试的 Erlang/OTP 版本。 此功能仅用于测试 Erlang/OTP。
内部 ID:OTP-18932
Common_Test 1.26
修复的错误和故障
通过此更改,当执行具有定义错误的组的套件时,common_test 会返回错误。
* 潜在的不兼容 *
内部 ID:OTP-18728 辅助 ID:PR-7487, PR-7674
通过此更改,样式表选项将应用于所有 HTML 报告页面。
内部 ID:OTP-18760
将所有 <tt> html 标记更新为 <code>。
内部 ID:OTP-18799 辅助 ID:PR-7695
改进和新功能
此更改修复了文档,因此不再建议使用历史上已弃用的 ?config 宏。
内部 ID:OTP-18858 辅助 ID:PR-7825
Common_Test 1.25.1
修复的错误和故障
通过此更改,ct_hooks 手册参考了用户指南中的 CTH 执行顺序部分。
内部 ID:OTP-14480 辅助 ID:ERIERL-43, OTP-11894, PR-7455
通过此更改,在测试用例时间陷阱或链接进程崩溃的情况下,来自 pre_end_per_testcase 钩子的配置数据将传递到 post_end_per_testcase 回调。
内部 ID:OTP-18579 辅助 ID:GH-7119
通过此更改,删除了 ct_run 中对不支持的 vts 工具的剩余引用(主要与文档和 ct_run 帮助消息相关)。
内部 ID:OTP-18615 辅助 ID:PR-7234
通过此更改,ct_telnet 中的提示搜索功能可以处理 Unicode 输入。
内部 ID:OTP-18664 辅助 ID:ERIERL-959
扩展了有关如何使用
standard_io
、standard_error
和user
I/O 设备的文档。添加了类型
io:standard_io/0
,io:standard:error/0
和io:user/0
。内部 ID:OTP-18676 辅助 ID:PR-7473 GH-7459
Common_Test 1.25
修复的错误和故障
此更改改进了 Common Test 文档(CT 钩子示例代码)并添加了带有钩子代码的 Emacs 骨架。
内部 ID:OTP-18377 辅助 ID:PR-6437
改进和新特性
更新了 common_test,使其能够以更健壮的方式获取旧版本,同时忽略当前版本。
自有 ID: OTP-18259 辅助 ID: PR-5924
- 将 XML
ct
模块文档重写为 Erlang 类型,使 Dialyzer 能够捕获更精确的错误自有 ID: OTP-18340
弃用
dbg:stop_clear/0
,因为它只是dbg:stop/0
的函数别名自有 ID: OTP-18478 辅助 ID: GH-6903
Common_Test 1.24.0.5
修复的错误和故障
通过此更改,cth_surefire 钩子模块处理跳过组的组路径缩减。 这修复了在跳过的组之后执行的组的组路径不正确的错误。
内部 ID:OTP-19365 辅助 ID:ERIERL-1157, PR-9080
Common_Test 1.24.0.4
修复的错误和故障
通过此更改,HTML 报告包含 jQuery 3.7.1 版本。
内部 ID:OTP-19252 辅助 ID:PR-8858
通过此更改,jquery 和 tablesorter 许可证已添加到 COPYRIGHT 文件中。 此外,tablesorter 更新到 2.32 版本。
内部 ID:OTP-19265 辅助 ID:PR-8876
修复了一个错误,该错误导致 HTML 日志中测试用例的执行时间总和有时计算错误,并且表格没有完全打印。
内部 ID:OTP-19284 辅助 ID:ERIERL-1093, PR-8909
Common_Test 1.24.0.3
修复的错误和故障
通过此更改,common_test 测试用例日志文件中的最后一列已修改为现在显示表格行中每个时间的总和,以及运行上述函数所花费的时钟时间“经过时间”。 “经过时间”与之前总时间相同。
内部 ID:OTP-18960
Common_Test 1.24.0.2
修复的错误和故障
修复了 CT 如何查找用于兼容性测试的 Erlang/OTP 版本。 此功能仅用于测试 Erlang/OTP。
内部 ID:OTP-18932
Common_Test 1.24.0.1
修复的错误和故障
通过此更改,ct_telnet 中的提示搜索功能可以处理 Unicode 输入。
内部 ID:OTP-18664 辅助 ID:ERIERL-959
Common_Test 1.24
改进和新特性
将未记录的宏
CT_PEER/3
重命名为CT_PEER_REL/3
。自有 ID: OTP-18460
Common_Test 1.23.3
修复的错误和故障
将 cth_log_redirect 中 gen_server 调用的超时时间更改为无限
自有 ID: OTP-18363 辅助 ID: ERIERL-879
Common_Test 1.23.2
修复的错误和故障
修复当编译服务器处于活动状态且当前 Erlang 安装路径中包含非 latin1 字符时,在旧版本上启动对等节点的问题。
自有 ID: OTP-18255 辅助 ID: PR-6314
Common_Test 1.23.1
修复的错误和故障
修复 cth_surefire 以处理当套件未使用
debug_info
编译时的情况。此错误自 Erlang/OTP 25.0 起就存在。自有 ID: OTP-18208 辅助 ID: ERIERL-852 PR-6229
改进和新特性
Common Test 现在保留抛出的堆栈跟踪。
自有 ID: OTP-18138 辅助 ID: GH-5719, PR-6029
Common_Test 1.23
修复的错误和故障
修复在运行并行测试用例并与一个或多个 ct 钩子一起运行时,会导致钩子锁进程崩溃并在 ct 日志中产生打印输出的错误。
自有 ID: OTP-17881 辅助 ID: PR-5581
改进和新特性
configure
脚本的输入已适配autoconf
2.71。自有 ID: OTP-17414 辅助 ID: PR-4967
删除未使用的和未记录的跟踪器节点功能。
自有 ID: OTP-17676 辅助 ID: PR-5021
新的模块
peer
取代了slave
模块。slave
模块现在已弃用,将在 OTP 27 中删除。peer
包含用于启动 Erlang 节点的扩展且更健壮的 API。自有 ID: OTP-17720 辅助 ID: PR-5162
cth_surefire ct 钩子已更新,以在 xml 输出中包含执行的测试用例的文件和行号。
对于具有许多测试用例的测试运行,该钩子的性能也得到了极大的提高。
自有 ID: OTP-17882 辅助 ID: PR-5581
Common_Test 1.22.1.3
修复的错误和故障
通过此更改,common_test 测试用例日志文件中的最后一列已修改为现在显示表格行中每个时间的总和,以及运行上述函数所花费的时钟时间“经过时间”。 “经过时间”与之前总时间相同。
内部 ID:OTP-18960
Common_Test 1.22.1.2
修复的错误和故障
修复了 CT 如何查找用于兼容性测试的 Erlang/OTP 版本。 此功能仅用于测试 Erlang/OTP。
内部 ID:OTP-18932
Common_Test 1.22.1.1
修复的错误和故障
将 cth_log_redirect 中 gen_server 调用的超时时间更改为无限
自有 ID: OTP-18363 辅助 ID: ERIERL-879
Common_Test 1.22.1
修复的错误和故障
OTP 内部测试修复。
自有 ID: OTP-17888
Common_Test 1.22
改进和新特性
在此更改之前,组处理语法不明确,并且组路径不支持测试规范。
自有 ID: OTP-17664 辅助 ID: GH-5088, PR-5242
在此更改之前,无法链接到 Common Test 日志中的特定标头条目。更改在 HTML 测试日志中添加了右对齐的锚点图标。
自有 ID: OTP-17790 辅助 ID: PR-5375
Common_Test 1.21
改进和新特性
允许浮点数作为 multiply_timetraps 参数。
自有 ID: OTP-17413 辅助 ID: PR-4767
删除对旧版 API 宏和函数的使用。
自有 ID: OTP-17632 辅助 ID: PR-5022
Common_Test 1.20.5
修复的错误和故障
在调用 ct_netconfc:create_subscription/* 之前接收到的传入 NETCONF 通知导致连接进程因 badarg 而失败。现在以与其他意外消息相同的方式记录意外通知。
自有 ID: OTP-17506
改进和新特性
向 ct_netconfc 添加“receiver”选项
允许在会话创建时指定传入 NETCONF 通知的目标。以前,create_subscription/* 的调用者成为目标,但 RFC 5277 create-subscription 不再是唯一可以订购 NETCONF 通知的方式。
自有 ID: OTP-17509
Common_Test 1.20.4
修复的错误和故障
提交生成的
configure
脚本。自有 ID: OTP-17420 辅助 ID: OTP-17398, GH-4821
Common_Test 1.20.3
修复的错误和故障
当与
spec
选项一起使用时,选项release_shell
可能会崩溃。自有 ID: OTP-16940 辅助 ID: ERL-1335
改进和新特性
已删除实验性的 HiPE 应用程序,以及其他应用程序中所有相关的功能。
* 潜在的不兼容 *
自有 ID: OTP-16963
修复了在以下划线为前缀的变量上匹配代码的警告。
自有 ID: OTP-17385 辅助 ID: OTP-17123
Common_Test 1.20.2.3
修复的错误和故障
OTP 内部测试修复。
自有 ID: OTP-17888
Common_Test 1.20.2.2
修复的错误和故障
在调用 ct_netconfc:create_subscription/* 之前接收到的传入 NETCONF 通知导致连接进程因 badarg 而失败。现在以与其他意外消息相同的方式记录意外通知。
自有 ID: OTP-17506
改进和新特性
向 ct_netconfc 添加“receiver”选项
允许在会话创建时指定传入 NETCONF 通知的目标。以前,create_subscription/* 的调用者成为目标,但 RFC 5277 create-subscription 不再是唯一可以订购 NETCONF 通知的方式。
自有 ID: OTP-17509
Common_Test 1.20.2.1
修复的错误和故障
提交生成的
configure
脚本。自有 ID: OTP-17420 辅助 ID: OTP-17398, GH-4821
Common_Test 1.20.2
修复的错误和故障
在此更改之前,如果跳过子组,则配置会在测试组之间泄漏 (GH-3480)。
自有 ID: OTP-17347 辅助 ID: GH-3480,ERL-1439
Common_Test 1.20.1
修复的错误和故障
当调用 ct_netconfc:open/* 时,竞争条件可能导致返回功能失调的句柄,从而导致在其上调用其他 api 函数时出现错误,并且无法与有问题的服务器建立新连接。在模块 ct_ssh 和 ct_telnet 中的 open/_ 中也可能出现类似的症状。
当在模块 ct_netconfc 和 ct_ssh 中调用 call/* 时,在超时后,common_test 进程的内部消息可能会留在调用者的消息队列中。由于错误消息,模块 ct_telnet 使用的内部进程可能会泄漏内存。
如果与服务器的 TCP 连接丢失,则调用 ct_telnet:open/* 和 ct_telnet:get_data/1 可能会无限期地挂起。
自有 ID: OTP-17328 辅助 ID: ERIERL-631
Common_Test 1.20
改进和新特性
各种地址清理器支持。
自有 ID: OTP-16959 辅助 ID: PR-2965
Common_Test 1.19.1
改进和新特性
为测试套件添加行为
自有 ID: OTP-17070
Common_Test 1.19
改进和新特性
当用户不希望 ct_property_test 编译属性时,添加了函数
ct_property_test:init_tool/1
。init_tool/1 可用于设置 property_test_tool 配置值。自有 ID: OTP-16029 辅助 ID: PR-2145
内置的 Common Test 钩子
cth_log_redirect
已更新为使用系统default
Logger 处理程序的配置,而不是其自身的配置。请参阅 Common Test 用户指南中关于内置钩子的部分。自有 ID: OTP-16273
旧的 Crypto API 中已弃用函数的调用已被其替代项的调用替换。
自有 ID: OTP-16346
Common_Test 1.18.2.2
修复的错误和故障
OTP 内部测试修复。
自有 ID: OTP-17888
Common_Test 1.18.2.1
修复的错误和故障
提交生成的
configure
脚本。自有 ID: OTP-17420 辅助 ID: OTP-17398, GH-4821
Common_Test 1.18.2
改进和新特性
记录 incl_apps cover 选项
自有 ID: OTP-16039 辅助 ID: ERL-795
ct_property_test
现在有一个用于状态测试结果的报告函数。自有 ID: OTP-16340
不要向用户隐藏错误原因
自有 ID: OTP-16364 辅助 ID: PR-2480
Common_Test 1.18.1
改进和新特性
改进了 ct_property_test 的日志记录。
自有 ID: OTP-16287
Common_Test 1.18
修复的错误和故障
如果一个 ct 钩子安装在测试套件的
suite/0
函数中,那么该钩子的terminate/1
函数将被多次调用,而其init/2
函数却不会首先被调用。现在已经更正了这个问题。自有 ID: OTP-15863 辅助 ID: ERIERL-370
如果
init_per_testcase
失败,则会跳过测试本身。根据文档,应该可以在钩子函数中将结果更改为失败。在这种情况下,唯一可用的钩子函数是post_init_per_testcase
,但是更改该处的返回值不会影响测试用例的结果。现在已经更正了这个问题。自有 ID: OTP-15869 辅助 ID: ERIERL-350
改进和新特性
添加了对 NETCONF 1.1 (RFC 6241) 的 ct_netconfc 支持。可以在 hello 中发送 1.1 基本功能,并且当客户端和服务器都声明支持 1.1 时,会应用 RFC 6242 分块框架。
自有 ID: OTP-15789
更正了传递给 ct_release_test 回调模块的通用测试不透明数据结构中函数 upgrade_init/2、upgrade_upgraded/2 和 upgrade_downgraded/2 中的 lib_dir 路径。当调试时,不正确的路径可能会导致混淆,尽管它不会导致 common_test 方面的任何不正确行为,因为它目前未使用。
自有 ID: OTP-15934
Common_Test 1.17.3
修复的错误和故障
所有不正确的(即全部)使用 "can not" 的情况都已更正为 "cannot",包括源代码注释、文档、示例等等。
自有 ID: OTP-14282 辅助 ID: PR-1891
改进和新特性
使用
ssh
而不是rsh
作为默认远程 shell。自有 ID: OTP-15633 辅助 ID: PR-1787
Common_Test 1.17.2.1
修复的错误和故障
如果一个 ct 钩子安装在测试套件的
suite/0
函数中,那么该钩子的terminate/1
函数将被多次调用,而其init/2
函数却不会首先被调用。现在已经更正了这个问题。自有 ID: OTP-15863 辅助 ID: ERIERL-370
如果
init_per_testcase
失败,则会跳过测试本身。根据文档,应该可以在钩子函数中将结果更改为失败。在这种情况下,唯一可用的钩子函数是post_init_per_testcase
,但是更改该处的返回值不会影响测试用例的结果。现在已经更正了这个问题。自有 ID: OTP-15869 辅助 ID: ERIERL-350
Common_Test 1.17.2
修复的错误和故障
当钩子函数失败时,测试结果通常与钩子关联的函数失败时相同。例如,如果
post_init_per_testcase
失败,则结果是跳过测试用例,就像init_per_testcase
失败时一样。但是,对于 timetrap 超时或其他钩子函数运行的进程被终止的错误情况,之前并非如此。现在已更正,因此无论钩子函数如何失败,错误处理都应相同。* 潜在的不兼容 *
自有 ID: OTP-15717 辅助 ID: ERIERL-334
在某些罕见情况下,当两个 common_test 节点使用同一个日志目录时,可能会发生时序问题,导致 common_test 崩溃,因为其日志缓存文件意外为空。现在已经更正了这个问题。
自有 ID: OTP-15758 辅助 ID: ERIERL-342
改进和新特性
引入了两个新的 common_test 钩子函数
post_groups/2
,在Suite:groups/0
之后调用post_all/3
,在Suite:all/0
之后调用这些函数允许修改
groups/0
和all/0
函数的返回值。现在也允许在
all/0
的返回值中使用一个新项{testcase,TestCase,RepeatProperties}
。这可用于将单个测试用例重复特定次数,或直到它失败或成功一次为止。自有 ID: OTP-14746 辅助 ID: ERIERL-143
Common_Test 1.17.1
改进和新特性
OTP 内部测试改进。
自有 ID: OTP-15716
Common_Test 1.17
修复的错误和故障
如果输入参数
KeyOrFile
为{key,string()}
,则一个 bug 导致ct:encrypt_config_file/3
和ct:decrypt_config_file/3
失败并出现badmatch
。现在已经更正了这个问题。自有 ID: OTP-15540
通过从
post_end_per_testcase
钩子函数返回{fail,Reason}
,无法修改在end_per_testcase
中因 timetrap 超时而失败的测试用例的状态。现在已经更正了这个问题。自有 ID: OTP-15584 辅助 ID: ERIERL-282
改进和新特性
为
ct_telnet:cmd/3
和ct_telnet:send/3
添加了newline
选项的新变体,它允许指定一个字符串作为命令的新行指示符附加。默认情况下,该值为 "\n",但在某些情况下,需要为 "\r\n",此选项允许这样做。先前,作为参数传递给
ct_telnet:expect/2,3
的错误正则表达式会导致崩溃,看起来像是 common_test 的内部错误。现在给出了更好的错误指示,但测试用例仍然会失败。自有 ID: OTP-15229 辅助 ID: ERIERL-203
由于 yang RFC 允许
edit-config
元素中存在多个 config 数据的顶级元素,因此ct_netconfc:edit_config/3,4,5
现在可以接受 XML 元素列表。自有 ID: OTP-15298
Common_Test 1.16.1
修复的错误和故障
Logger 处理程序 cth_log_redirect 先前在调用 logger 格式化程序之前调用了 report 回调 (report_cb)。在某些情况下,这会失败,因为 cth_log_redirect 无法处理带有两个参数的报告回调。现在已经更正了这个问题,因此只有格式化程序会调用 report 回调。
自有 ID: OTP-15307
Common_Test 1.16
改进和新特性
使用编译器选项
nowarn_export_all
在自动编译测试套件时禁用export_all
警告。自有 ID: OTP-14810
使用 uri_string 模块而不是 http_uri。
自有 ID: OTP-14902
Common_Test 1.15.4.4
改进和新特性
改进了 ct_property_test 的日志记录。
自有 ID: OTP-16287
Common_Test 1.15.4.3
修复的错误和故障
如果一个 ct 钩子安装在测试套件的
suite/0
函数中,那么该钩子的terminate/1
函数将被多次调用,而其init/2
函数却不会首先被调用。现在已经更正了这个问题。自有 ID: OTP-15863 辅助 ID: ERIERL-370
如果
init_per_testcase
失败,则会跳过测试本身。根据文档,应该可以在钩子函数中将结果更改为失败。在这种情况下,唯一可用的钩子函数是post_init_per_testcase
,但是更改该处的返回值不会影响测试用例的结果。现在已经更正了这个问题。自有 ID: OTP-15869 辅助 ID: ERIERL-350
Common_Test 1.15.4.2
修复的错误和故障
当钩子函数失败时,测试结果通常与钩子关联的函数失败时相同。例如,如果
post_init_per_testcase
失败,则结果是跳过测试用例,就像init_per_testcase
失败时一样。但是,对于 timetrap 超时或其他钩子函数运行的进程被终止的错误情况,之前并非如此。现在已更正,因此无论钩子函数如何失败,错误处理都应相同。* 潜在的不兼容 *
自有 ID: OTP-15717 辅助 ID: ERIERL-334
在某些罕见情况下,当两个 common_test 节点使用同一个日志目录时,可能会发生时序问题,导致 common_test 崩溃,因为其日志缓存文件意外为空。现在已经更正了这个问题。
自有 ID: OTP-15758 辅助 ID: ERIERL-342
改进和新特性
引入了两个新的 common_test 钩子函数
post_groups/2
,在Suite:groups/0
之后调用post_all/3
,在Suite:all/0
之后调用这些函数允许修改
groups/0
和all/0
函数的返回值。现在也允许在
all/0
的返回值中使用一个新项{testcase,TestCase,RepeatProperties}
。这可用于将单个测试用例重复特定次数,或直到它失败或成功一次为止。自有 ID: OTP-14746 辅助 ID: ERIERL-143
OTP 内部测试改进。
自有 ID: OTP-15716
Common_Test 1.15.4.1
修复的错误和故障
通过从
post_end_per_testcase
钩子函数返回{fail,Reason}
,无法修改在end_per_testcase
中因 timetrap 超时而失败的测试用例的状态。现在已经更正了这个问题。自有 ID: OTP-15584 辅助 ID: ERIERL-282
Common_Test 1.15.4.0.1
修复的错误和故障
通过从
post_end_per_testcase
钩子函数返回{fail,Reason}
,无法修改在end_per_testcase
中因 timetrap 超时而失败的测试用例的状态。现在已经更正了这个问题。自有 ID: OTP-15584 辅助 ID: ERIERL-282
Common_Test 1.15.4
修复的错误和故障
修复了在测试规范中 'skip_groups' 与 '所有套件' 选项结合使用时的问题。
自有 ID: OTP-14953
Common_Test 1.15.3
改进和新特性
新函数
ct:remaining_test_procs/0
返回调用时仍在运行的测试进程和组领导进程的标识。自有 ID: OTP-13832
现在,每个测试索引页面的页脚都会显示一个“最新测试结果”链接,该链接会跳转到最近生成的测试索引。这对于快速比较不同测试运行的结果,而无需遍历日志文件树非常有用。
自有 ID:OTP-14281
Common_Test 1.15.2
改进和新功能
通用 Unicode 改进。
自有 ID:OTP-14462
Common_Test 1.15.1
修复的错误和故障
在 OTP-20.0 中,c、make 和 ct_make 的行为被更改,使得在某些情况下,beam 文件默认会写入到源文件所在的目录。现在已改回旧的行为,因此 beam 文件默认写入当前目录。
自有 ID:OTP-14489 辅助 ID:ERL-438
Common_Test 1.15
修复的错误和故障
已更正用户 HTML 样式表的文档中的错误。
自有 ID:OTP-14332 辅助 ID:seq13299
内部代码更改:对
catch
的调用后跟对erlang:get_stacktrace/0
的调用已重写为使用try
而不是catch
,以使代码具有前瞻性。自有 ID:OTP-14400
改进和新功能
ct_slave
模块现在以与传递给-sname
的节点名称相同的方式处理节点名称。这意味着ct_slave:start('[email protected]').
现在可以工作了。自有 ID:OTP-13806
添加了新选项
keep_logs
。如果将此选项的值设置为整数 N,则 common_test 将删除当前日志目录中的所有 ct_run.* 目录,除了最新的 N 个。自有 ID:OTP-14179
现有的
ct_netconfc:open/1,2
会打开一个 SSH 连接,该连接具有一个 SSH 通道,实现一个 Netconf 会话。为了允许在同一 SSH 连接上测试多个会话,以下函数被添加到ct_netconfc
:*
connect/1,2
- 建立 SSH 连接 *disconnect/1
- 关闭给定的 SSH 连接 *session/1,2,3
- 在给定连接上打开一个 ssh 通道,并发送 'hello' 以启动 Netconf 会话自有 ID:OTP-14284
由于原子包含任意 Unicode 字符,进行了其他更新。
自有 ID:OTP-14285
添加了函数 ct_ssh:shell/2,3。
自有 ID:OTP-14415 辅助 ID:seq13315
Common_Test 1.14
修复的错误和故障
在 common_test 钩子处理中完成了以下更正和改进:
一个额外的参数
Suite
被添加为以下每个钩子回调函数的第一个参数:pre_init_per_group
post_init_per_group
pre_end_per_group
post_end_per_group
pre_init_per_testcase
post_init_per_testcase
pre_end_per_testcase
post_end_per_testcase
on_tc_fail
on_tc_skip
为了向后兼容,如果新函数没有从钩子回调模块导出,
common_test
将回退到旧接口并调用该函数,而不使用Suite
参数。如果存在
init_per_suite
或end_per_suite
中的一个,但不存在另一个,则将在测试日志中将不存在的函数报告为失败,原因是undef
。init/end_per_group
也是如此。根据用户指南,这始终是一项要求,但现在common_test
在报告中更加明确。如果从测试套件导出了
init_per_suite
,但没有导出end_per_suite
,则会使用Suite=ct_framework
而不是正确的套件名称调用pre/post_end_per_suite
。现在已更正。如果从套件导出了
end_per_group
,但没有导出init_per_group
,则永远不会调用end_per_group
。现在已更正。在调用
pre_init_per_*
之前跳过的测试会对相应的post_init_per_*
进行错误的调用。例如,如果由于suite/0
失败而跳过测试,即使没有调用pre_init_per_suite
和init_per_suite
,也会调用post_init_per_suite
。 现在已更正,因此除非首先调用了相应的pre_*
回调,否则永远不会调用post_*
回调。在
init_per_testcase
之前或之中跳过的测试会错误地调用pre_end_per_testcase
和post_end_per_testcase
。现在已更正,因此在未调用end_per_testcase
时,不会调用pre/post_end_per_testcase
。如果退出信号导致测试用例进程在运行
init_per_testcase
时死亡,则该用例先前被报告为失败,原因是{skip,...}
。现在已更正,因此该用例将被标记为跳过。如果存在信号导致测试用例进程在运行
end_per_testcase
时死亡,则该用例先前被标记为失败。现在已更正,因此测试用例的状态不会更改,只会向注释字段添加警告。如果由于选项
{force_stop,skip_rest}
或由于失败的序列而跳过测试用例,则不会发送tc_start
事件,而只发送tc_done
。现在已更正,因此会发送这两个事件。在配置函数中跳过或失败时,配置函数本身会在钩子回调
on_tc_skip
或on_tc_fail
中获取{auto_skipped,Reason}
、{skipped,Reason}
或{failed,Reason}
。 因此跳过的其他测试用例只会收到on_tc_skip
中的Reason
。现在已更正,因此即使导致跳过/失败的配置函数也只会在钩子回调中收到Reason
。
自有 ID:OTP-10599 辅助 ID:kunagi-344 [255]
如果通过测试规范中的
skip_cases
语句跳过测试用例,则cth_surefire
会错误地在 xml 报告中将上一个测试用例标记为跳过。 实际跳过的测试用例根本不会出现在 xml 报告中。现在已更正。自有 ID:OTP-14129 辅助 ID:seq13244
multiply_timetraps
和scale_timetraps
选项不适用于测试规范,现在已更正。自有 ID:OTP-14210
改进和新功能
添加了 ct_testspec:get_tests/1。 rebar3 使用此函数获取从 testspec 运行测试时必须编译的所有目录,而不是在 rebar3 中实现 testspec 解析。
自有 ID:OTP-14132
Common_Test 1.13
修复的错误和故障
在测试运行期间向屏幕打印的一些类型(包括
ct:print/1,2,3,4
)使用了本地user
进程作为 IO 设备,并且当例如通过远程节点上的 shell 运行测试时,这些打印输出将不可见。 引入了默认的 Common Test 组领导者进程来解决此问题。 如果可用,此进程会将打印输出路由到启动进程的组领导者,否则路由到user
。自有 ID:OTP-13973 辅助 ID:ERL-279
一些充当测试用例的 I/O 组领导者的 Common Test 进程在测试运行结束时不会按预期终止。此错误已得到纠正。
自有 ID:OTP-14026 辅助 ID:ERL-287
记录详细程度的功能记录不正确。测试运行的默认详细程度级别例如不是 50 (
?STD_VERBOSITY
),而是 100 (?MAX_VERBOSITY
)。 此外,一些示例存在错误和缺陷。用户指南中相应的章节 (5.18) 已更新。自有 ID:OTP-14044 辅助 ID:seq13223
改进和新功能
添加了一项功能,允许用户指定要记录打印输出的标题。标题在
ct:pal/3,4,5
、ct:print/3,4,5
或ct:log/3,4,5
的Opts
列表参数中指定为{heading,string()}
。如果省略 heading 选项,则会使用类别名称或"User"
作为标题。自有 ID:OTP-14043 辅助 ID:seq13226
Common_Test 1.12.3
修复的错误和故障
如果 telnet 服务器在终止行之前暂停传输一行文本,则
ct_telnet:expect/3
函数将在测试用例 HTML 日志中将该行打印两次。 此问题已修复。自有 ID:OTP-13730 辅助 ID:seq13135
添加了函数
ct:set_verbosity/2
和ct:get_verbosity/1
,以便测试用例、CT 钩子或测试框架函数可以修改和读取日志的详细程度级别。自有 ID:OTP-13841
如果 Erlang 源文件包含
-warning()
指令,则make
(tools) 和ct_make
(common_test) 会崩溃。自有 ID: OTP-13855
Common_Test 1.12.2
修复的 Bug 和故障
以下模块在 common_test.app.src 中缺失:ct_groups、ct_property_test、ct_release_test、ct_webtool、ct_webtool_sup、test_server_gl。现已添加这些模块。
自有 ID: OTP-13475
Common Test 打印的接收到的错误报告的时间戳不正确。
自有 ID: OTP-13615 辅助 ID: seq13124
Common_Test 1.12.1
修复的 Bug 和故障
对于 Common Test telnet 客户端打开的套接字,
nodelay
选项以前默认启用(true
)。这似乎导致某些系统上的 telnet 服务器出现通信问题,因此不再使用该选项。其值可以在 telnet 连接设置中指定。有关详细信息,请参见ct_telnet
的手册页。请注意,unix_telnet
中的接口函数connect
已更新,并添加了一个额外的参数,现在是unix_telnet:connect/7
。自有 ID: OTP-13462 辅助 ID: seq13077
修复 cth_surefire 中的错误:当 pre_init_per_suite 钩子在到达 cth_surefire:pre_init_per_suite 之前失败时,cth_surefire 会生成不正确的 XML。
自有 ID: OTP-13513
ct:get_timetrap_info/0
函数已更新,以返回有关 timetrap 缩放的更多信息。自有 ID: OTP-13535
已修复 Common Test 错误地转义样式表 HTML 标签的问题。
自有 ID: OTP-13536
引入了
ct_run
启动标志-no_esc_chars
和ct:run_test/1
启动选项{esc_chars,Bool}
,以便禁用字符的自动转义。Common Test 1.12 中引入了使用io:format/1,2
和ct:pal/1,2,3,4
打印的特殊 HTML 字符的自动转义。新的标志/选项可用于禁用此功能以实现向后兼容性。(该选项在测试规范中也受支持)。自有 ID: OTP-13537
Common_Test 1.12
修复的 Bug 和故障
此更新修复了 html 日志文件中通用打印输出未转义特殊字符的问题。使用
io:format/2
和ct:pal/2
进行的打印输出现在会自动转义特殊字符。Common Test 将不会尝试转义使用ct:log/2
打印的字符,因为假设用户可能希望使用此函数打印 html 标记的数据。已添加一个新函数ct:log/5
,它提供字符的可选转义。后一个函数还可用于将文本打印到日志中,而无需标头和 CSS 类包装(类似于io:format/2
)。自有 ID: OTP-13003 辅助 ID: seq13005
提交 4cf832f1ad163f5b25dd8a6f2d314c169c23c82f 错误地删除了 netconf 连接的打开和关闭日志记录。现已纠正。
自有 ID: OTP-13386
使用
test_server:start_node/3
启动的节点写入其 erl_crash.dump 的目录已更改。崩溃转储以前写入 test_server.beam 的目录,但在更高版本的 Microsoft Windows 中,该目录不再可写(即使对于管理员也是如此)。现在改用框架(common_test)日志目录。自有 ID: OTP-13388
改进和新功能
此更新使可以在一个测试规范项中指定同一组或测试用例的多个实例,以便重复执行。示例:
{groups, "./", my_SUITE, [my_group, my_group], {cases, all}}
或{cases, "./", my_SUITE, [my_tc, my_tc, my_tc]}
。自有 ID: OTP-13241 辅助 ID: seq12979
已添加两个新的 CT 钩子函数:
post_init_per_testcase/4
和pre_end_per_testcase/3
。使用这些钩子函数,可以在测试用例执行之前和之后立即执行任意操作(包括修改测试执行、测试状态和结果)。自有 ID: OTP-13242 辅助 ID: seq12991
ct_netconfc
早期对用户可以设置的 SSH 选项非常严格。现在已更改,现在允许任何 SSH 选项。netconf 客户端会将任何它无法识别的选项传递给 SSH。自有 ID: OTP-13338 辅助 ID: seq13053,seq13069
Common_Test 1.11.2
修复的 Bug 和故障
如果 ssh 包包含多个 netconf 结束标记,则在 ct_netconfc:handle_data 中永远不会检测到第二个结束标记。相反,它会包含在给 xmerl 解析器的 XML 数据中,从而导致解析失败。该问题由 OTP-13007 引入,现已纠正。
自有 ID: OTP-13323
Common_Test 1.11.1
修复的 Bug 和故障
当来自 netconf 服务器的数据被拆分为多个 ssh 包时,netconf 客户端的性能非常差。现在已改进。
自有 ID: OTP-13007
在 ct_netconfc 中,如果计时器在服务器发送 rpc-reply “同时”过期,则当客户端从其“挂起”列表中删除计时器引用时,超时消息可能已在客户端的消息队列中。这导致客户端崩溃,因为在处理超时消息时不再能找到计时器引用。现在,通过在取消计时器时始终从消息队列中刷新超时消息来解决此问题。
自有 ID: OTP-13008
错误日志记录器处理程序 ct_conn_log_h 不遵守 'silent' 选项,并尝试打印到未定义的文件描述符。已对此进行更正。
自有 ID: OTP-13035
如果用户在测试套件编译失败后让测试继续运行,则 Common Test 未按预期设置退出状态以指示失败。已对此进行更正。此外,'abort_if_missing_suites' 选项现在使 Common Test 中止测试运行,而无需询问用户编译是否失败,即使存在对 stdin/stdout 的访问权限也是如此。
自有 ID: OTP-13173 辅助 ID: seq12978
如果 Common Test 'create_priv_dir' 启动选项设置为 'auto_per_tc',则配置函数的 priv 目录的名称可能会与测试用例的 priv 目录的名称冲突,这将导致 Test Server 失败。此错误已得到纠正。
自有 ID: OTP-13181
Common_Test 1.11
修复的 Bug 和故障
由于测试套件编译错误而中止的测试状态已从 'auto_skipped' 更改为 'failed'。这会影响文本日志文件、事件处理和 CT 钩子回调。编译失败的日志记录也得到了改进,尤其是在多个测试套件编译失败的情况下。
自有 ID: OTP-10816
测试服务器源代码解析器 (erl2html2) 无法处理 epp_dodger 返回的语法树中的宏元组。此错误已得到纠正。
自有 ID: OTP-12740
可在 .spec 文件中指定 ssh_port 的新选项:[{node_start, [{ssh_port, 9999}]}].
以及指定其他 ssh 选项(如公钥文件的路径):[{node_start, [{ssh_opts, [{user_dir, "/home/shrek/e2/"}]}]}].
自有 ID: OTP-12809
改进和新功能
以前无法向使用 ct_netconfc:edit_config/3,4 发送的编辑配置请求添加可选参数(如 default-operation),您必须使用 ct_netconfc:send_rpc/2,3。为了简单和完整起见,现在向 edit_config 函数添加了一个新的可选参数 OptParams。
自有 ID: OTP-10446 辅助 ID: kunagi-266 [177]
当使用 ts 接口运行 OTP 测试时,现在可以为每个 OTP 应用程序指定所谓的测试类别。测试类别由 CT 测试规范表示,并定义现有测试套件、组和用例的任意子集。测试类别的示例包括 'smoke'(冒烟测试)和 'bench'(基准测试)。(有关详细信息,请调用 ts:help())。此外,还实现了在测试期间从当前测试规范读取项的函数 ct:get_testspec_terms/0 和 ct:get_testspec_terms/1。
自有 ID: OTP-11962
已删除过时的脚本和 make 文件操作,并且 Common Test 用户指南中的安装章节已更新。
自有 ID: OTP-12421
'keep_alive' 间隔已减少到 8 秒,这比 ct_telnet:expect/3 的默认 'idle_timeout' 值短 2 秒。这样,telnet 服务器会在操作超时之前接收到 NOP 消息(可能会触发操作)。此外,为了降低通信超时的风险,默认情况下已为所有 telnet 连接启用 TCP 选项 'nodelay'。
自有 ID: OTP-12678 辅助 ID: seq12818
当执行 ct_run 程序时没有任何标志时,"-dir ." 现在用作默认启动标志。类似地,如果使用空列表调用 ct:run_test/1,则会使用选项 {dir,"."}。此外,帮助文本 (ct_run -help) 以及 Common Test 用户指南中的运行测试章节已更新。
自有 ID: OTP-12684 辅助 ID: seq12865
Common_Test 1.10.1
修复的 Bug 和故障
已更正 Common Test 记录器进程中的一个故障,该故障导致应用程序在长名称节点上运行时崩溃。
自有 ID: OTP-12643
ct_telnet:expect/3 中引入了 'wait_for_prompt' 选项,该选项强制函数在收到提示字符串之前不返回,即使已经找到其他预期模式也是如此。
自有 ID: OTP-12688 辅助 ID: seq12818
如果测试用例中的最后一个表达式导致计时器超时,堆栈跟踪将被忽略,并且不会打印到测试用例日志文件中。发生这种情况的原因是,由于尾调用消除,在这种情况下堆栈跟踪中没有 {Suite,TestCase,Line} 信息。Common Test 已被修改以处理这种情况,通过在正确的位置插入一个 {Suite,TestCase,last_expr} 元组,并按预期打印堆栈跟踪。
自有 ID: OTP-12697 辅助 ID: seq12848
修复了 ct_netconfc 中的一个缓冲区问题,该问题可能导致某些消息被永久缓冲。
自有 ID: OTP-12698 辅助 ID: seq12844
Common Test 中的 VTS 模式已被修改为使用 Webtool 应用程序的私有版本 (ct_webtool)。
自有 ID: OTP-12704 辅助 ID: OTP-10922
在
ct_netconfc:hello/3
中添加了添加用户功能的功能。自有 ID: OTP-12707 辅助 ID: seq12846
Common_Test 1.10
修复的错误和故障
新的测试运行后,测试概述文件 index.html 并非总是能正确更新。这是因为 Common Test 日志缓存机制中的一个错误,该错误现已得到纠正。
自有 ID: OTP-11400
当一个成功的测试用例返回时,根据文档,Common Test 应该向事件处理程序发送一个 tc_done 事件,并且数据字段中的 Result = ok。但是,Common Test 将 Result 设置为测试用例的返回值。Common Test 现在已修改为符合文档要求。
* 潜在的不兼容 *
自有 ID: OTP-12279 辅助 ID: seq12737, OTP-12531
即使 total_timeout 已设置为较低的值(即较短的时间),ct_telnet:expect/3 调用也无法在 idle_timeout 之前中止。此问题已修复。
自有 ID: OTP-12335
来自配置函数和测试用例的未记录返回值 {skipped,Reason} 处理方式不一致。例如,测试用例向 CT Hook 函数报告为“skipped”,但向事件处理程序报告为“successful”。现在,上述返回值与 {skip,Reason} 的处理方式一致,并且也已记录在案。
* 潜在的不兼容 *
自有 ID: OTP-12359 辅助 ID: seq12760
Erlang 源代码到 HTML 生成器有时会失败,因为 epp:parse_erl_form/1 无法找到并展开包含的头文件中的必需宏。该问题已通过确保 common_test 始终将完整的包含路径传递给 epp 来解决。此外,还纠正了一个可能因语法树格式错误而导致 erl_syntax:revert/1 失败的错误。
自有 ID: OTP-12419
在 ct_run 帮助文本中添加了缺少的 group 选项。
自有 ID: OTP-12433 辅助 ID: seq12788
通过 hook 函数 on_tc_fail/2 和 on_tc_skip/2 使用 ct:log/2/3 或 ct:pal/2/3 进行的打印输出(非常出乎意料地)最终出现在“unexpected i/o”日志文件中,而不是在测试用例日志文件中。此行为已更改,因此现在,来自这些 hook 函数的所有打印输出(包括 stdio 打印输出)都将路由到测试用例日志文件。
自有 ID: OTP-12468
ct_netconfc:action/3 现在 - 如果返回类型为 void - 将接受 {ok,[simple_xml()]} 形式的 RPC 回复,并在这种情况下仅返回原子 ok。
自有 ID: OTP-12491 辅助 ID: seq12797
OTP-11971 错误地更改了 cover 规范文件中指定的 incl_dirs 的相对路径的处理方式。现在已纠正,因此这些路径应相对于 cover 规范文件本身存储的目录。
自有 ID: OTP-12498 辅助 ID: OTP-11971
一些测试用例已更新为使用 ct:sleep/1 而不是 timer:sleep/1。原因在于,睡眠时间需要缩放以补偿缓慢的执行(例如,在 cover 运行时)。
自有 ID: OTP-12574
改进和新功能
Common Test 现在导出一个函数 ct:get_event_mgr_ref/0,该函数返回 Common Test 事件管理器的名称。这使得在测试运行时(使用 gen_event API)可以将事件处理程序插入事件管理器中。
自有 ID: OTP-12506 辅助 ID: seq12802
当测试用例(或配置函数)因来自链接进程的退出信号而失败时,Common Test 之前仅将进程终止的原因传递给 CT 后 hook 函数和事件处理程序(在 tc_done 事件中)。现在已更改为传递元组 {'EXIT',ReasonForProcessTermination}。这使得在 CT 后 hook 函数中更容易区分这种类型的失败与其他类型的错误以及成功测试用例的返回值。
* 潜在的不兼容 *
自有 ID: OTP-12531 辅助 ID: OTP-12279
ct_telnet:get_data/1 中引入了一个新功能,该功能可以在接收缓冲区中保留不完整的字符串(尚未以换行符终止的字符串)的情况下自动轮询 telnet 连接。轮询由两个新的 telnet 配置值控制,这些值记录在 ct_telnet 参考手册中。轮询机制默认情况下禁用(使 get_data/1 函数向后兼容)。
自有 ID: OTP-12627
Common_Test 1.9
修复的错误和故障
Test Server(和 Common Test)中的源代码到 HTML 代码生成器无法在 HTML 代码中为具有不可展开宏的函数生成锚点,从而导致此类函数的 HTML 链接错误。此修复使代码生成器忽略无法展开的宏(即不预处理它们),以便始终生成正确的锚点。
自有 ID: OTP-11766 辅助 ID: seq12556
OTP-11971 错误地更改了 cover 规范文件中指定的相对路径(导入/导出文件)的处理方式。现在已纠正,因此这些路径应相对于 cover 规范文件本身存储的目录。
自有 ID: OTP-12031
Common Test 有时会在尝试将大量 SASL 报告打印到文件系统较慢的计算机上的日志时崩溃。此问题(由于 ct_logs 中的 IO 消息缓冲错误)已修复。
自有 ID: OTP-12159
common_test telnet 客户端 ct_telnet 及其相关工具的一些测试用例不稳定。其中一些是由 unix_telnet 回调在发送密码后发送额外的换行符引起的。这导致服务器发回额外的提示,从而混淆了测试。不再发送额外的换行符。
此外,改进了 telnet 客户端的调试打印和日志记录,并对一些测试用例进行了稍微修改,以稳定测试。
自有 ID: OTP-12329
ct_netconfc 未预料到来自 ssh_connection:subsystem/4 的返回值 {error,timeout}。这已得到纠正。
自有 ID: OTP-12334
改进和新功能
在
ct_telnet
中向所有发送数据(命令字符串)到 telnet 服务器的函数添加了一个新选项{newline,boolean()}
。默认情况下,ct_telnet
会向所有命令字符串添加换行符,并且通过将新选项设置为false
,可以关闭此行为。自有 ID: OTP-12252 辅助 ID: seq12730
在构建时将
autoconf
辅助工具分发到应用程序,而不是在存储库中提交多个相同的副本。自有 ID: OTP-12348
Common_Test 1.8.2
修复的错误和故障
由于 test_server 和 common_test 之间的接口已更改,Ticket OTP-11971 引入了对 test_server-3.7.1 的运行时依赖性。错误的是,common_test.app 文件未根据此内容进行更新。现在已纠正。
自有 ID: OTP-12037
改进和新功能
警告:这是实验性的,可能会在没有事先警告的情况下消失或更改。
common_test 中添加了对从 common_test 套件运行 Quickcheck 和 PropEr 测试的实验性支持。有关新模块
ct_property_testing
,请参阅参考手册。实验性属性测试在
lib/{inet,ssh}/test/property_test
下添加。它们可以直接运行,也可以从 commont_test 套件inet/ftp_property_test_SUITE.erl
和ssh/test/ssh_property_test_SUITE.erl
运行。有关详细信息,请参阅
test
目录中的代码和手册页。(感谢 Tuncer Ayaz 添加 Triq 的补丁)
自有 ID: OTP-12119
Common_Test 1.8.1
修复的错误和故障
长 telnet 消息中的子字符串有时会被错误地反转。此错误已得到纠正。
自有 ID: OTP-11871 辅助 ID: seq12581
Common Test 中的 basic_html 日志记录模式(为了与旧浏览器兼容)生成了具有不平衡标记的 HTML 代码。此问题已修复。
自有 ID: OTP-11917 辅助 ID: seq12598
使用 common_test 运行代码覆盖率分析的机制已得到改进。之前,如果测试运行包含多个测试,则会为每个测试启动和停止覆盖率。这将提供从测试套件结果页面上的“Coverage log”链接获得的“中间”覆盖率日志。为了在所有测试中累积覆盖率数据,必须在 cover 规范文件中使用“export”选项。这没有很好地记录,并且该功能非常令人困惑。
当测试运行包含多个测试时,在 cover 规范文件中使用“nodes”选项会失败,因为指定的节点将仅包含在第一次测试的覆盖率分析中。
重复编译和分析相同的模块也非常耗时。
为了克服这些问题,ct 现在每个测试运行仅覆盖编译和分析模块一次,即每个 cover 规范文件一次。该日志文件可通过顶层索引页上的新按钮获得。测试套件结果页面上的旧“Coverage log”链接仍然存在,但它们都指向包含累积结果的同一日志。
自有 ID: OTP-11971
如果多个测试同时在不同的 Erlang 节点上运行,将其日志写入同一目录,那么 all_runs.html 日志文件中通常会出现不完整的结果(全部为零)。此问题是由 Common Test 日志缓存机制中的错误引起的,该错误已修复。
自有 ID: OTP-11988 辅助 ID: seq12611
Common_Test 1.8
修复的错误和故障
如果测试用例进程在执行 init_per_testcase/2 时收到来自链接进程的退出,则 Common Test 会错误地处理生成的错误。该问题已解决,并且 Common Test 现在可以正确报告此类错误,并提供正确的错误原因和退出位置。
自有 ID: OTP-11643
使用两个或多个相同测试用例的实例并行运行测试用例组会导致日志文件名相同,并且一个测试用例实例会覆盖另一个测试用例实例的日志文件。此问题已解决。
自有ID:OTP-11644
以下应用程序的应用程序升级(appup)文件已更正:
asn1、common_test、compiler、crypto、debugger、dialyzer、edoc、eldap、erl_docgen、et、eunit、gs、hipe、inets、observer、odbc、os_mon、otp_mibs、parsetools、percept、public_key、reltool、runtime_tools、ssh、syntax_tools、test_server、tools、typer、webtool、wx、xmerl
一个新的用于测试 appup 文件的测试工具已添加到 test_server 中。现在,OTP 中的大多数应用程序都使用它。
(感谢 Tobias Schlager)
自有ID:OTP-11744
如果之前的钩子返回
{skip,Reason}
或{fail,Reason}
而不是Config
列表,则cth_surefire
钩子会在pre_init_per_suite/3
中崩溃。此错误已得到纠正,并且cth_surefire
现在将简单地传播接收到的InitData
值。自有ID:OTP-11811
ct_netconfc:get/2,3
、ct_netconfc:get_config/3,4
、ct_netconfc:action/2,3
、ct_netconfc:send_rpc/2,3
和ct_netconfc:send/2,3
的返回值规范已更正。自有ID:OTP-11834 辅助ID:seq12574
改进和新功能
ct_telnet 现在可以记录 telnet 会话期间发生的所有通信。以前,仅记录有关 ct_telnet 操作和命令的信息,以及从服务器显式请求的数据。
此外,基于错误日志事件处理程序和专用 Common Test 钩子
cth_conn_log
的日志记录机制现在可以将单个连接的数据打印到单独的日志文件中。有关更多信息和示例,请参阅ct_telnet
参考手册。重要提示:一个新的参数
ConnName
已添加到unix_telnet:connect/5
回调函数中。这迫使使用私有 ct_telnet 回调模块的用户根据unix_telnet:connect/6
更新其代码。有关详细信息,请参阅unix_telnet
参考手册和源代码模块。自有ID:OTP-11440 辅助ID:seq12457
为
ct_telnet:expect/3
函数引入了一个新的超时选项。使用{total_timeout,Time}
,可以为整个 expect 操作设置时间限制。在Time
毫秒后,expect/3
返回{error,timeout}
。如果未指定total_timeout
,则使用的默认值为无穷大(即无时间限制)。有关更多信息,请参阅ct_telnet
参考手册。自有ID:OTP-11689
为了允许使用 edoc,一些函数规范已更正或移动,并且一些 edoc 注释已更正。(感谢 Pierre Fenoll)
自有ID:OTP-11702
测试用例组名称信息已添加到随
tc_user_skip
和tc_auto_skip
事件消息发送的数据中,以及在调用 CT 钩子函数on_tc_skip/3
和on_tc_fail/3
中传递的数据中。此修改仅影响函数名称元素/参数。如果相关测试用例不属于测试用例组,则此值仍为原子。否则,将传递一个元组{FuncName,GroupName}
({atom(),atom()}
)。请注意,此更改可能(取决于用于匹配的模式)需要修改用户事件处理程序和钩子模块。有关详细信息,请参阅 Common Test 用户指南中的事件处理章节以及
ct_hooks
的参考手册。另请注意,测试服务器框架回调函数
report/2
已被修改。此更改仅影响使用测试服务器而不是 Common Test 的测试框架的用户。有关详细信息,请参阅test_server_ctrl
参考手册。* 潜在的不兼容 *
自有ID:OTP-11732 辅助ID:seq12541
如果 Common Test 无法提示用户在编译一个或多个测试套件失败时中止或继续测试运行,则可以使用新的选项
{abort_if_missing_suites,Bool}
来指定它是应继续进行测试运行还是停止执行。Bool
的默认值为false
(即即使套件丢失也继续)。自有ID:OTP-11769
已知错误和问题
common_test:修复 Dialyzer 报告的问题。
自有ID:OTP-11525
Common_Test 1.7.4
修复的错误和故障
现在会正确检查组和测试用例信息函数的返回值,并且如果返回值无效,则会自动跳过相关的测试用例。
自有ID:OTP-10631 辅助ID:kunagi-345 [256]
Common Test 处理跳过测试用例的方式已更新。在以前的版本中,从配置函数(例如 init_per_suite 或 init_per_group)返回
{skip,Reason}
会导致所有受影响的测试用例以auto_skipped
状态跳过。这是不合适的,因为此状态应该用于通知 Common Test 主动跳过某些内容(例如,如果 init_per_group 失败,则跳过测试用例组)。因此,在此版本的 Common Test 中,每当用户通过配置函数或测试规范术语跳过套件、组或单个测试用例时,受影响的测试用例都会获得user_skipped
状态。此更新意味着一些更改,可能会以各种方式影响 Common Test 用户
- 测试结果和统计信息将受到影响,这对于运行回归测试并将结果与之前的测试运行进行比较非常重要。
- 读取或解析文本日志文件
suite.log
的用户会注意到,自动跳过的函数现在报告为auto_skipped
,而不是之前的skipped
。 - 当 info 函数(例如 suite/0 或 group/1)中的
require
失败时,所有受影响的配置函数和测试用例都标记为auto_skipped
。 - 如果 Common Test 检测到测试套件中存在错误(例如,无效的 all/0 函数),则所有受影响的配置函数和测试用例都标记为
auto_skipped
。 - 如果启用了
force_stop
的重复测试运行会话达到截止时间,则所有剩余的测试用例都标记为auto_skipped
,而不是之前的user_skipped
。 - Common Test 在测试运行期间生成的事件消息已受到此更新的影响。有关详细信息,请参阅 OTP-11524。
自有ID:OTP-11305 辅助ID:OTP-11524
从 pre_end_per_group/3 用户钩子函数返回 {skip, Reason} 会导致 Common Test cth_log_redirect 钩子中出现退出。此问题已解决。
自有ID:OTP-11409 辅助ID:seq12446
当 netconf 服务器未响应关闭会话请求时,调用 ct_netconfc:close_session/2 将永远挂起,等待 netconf 客户端终止。此问题已得到纠正。如果关闭会话请求超时,客户端现在将始终终止(并断开连接)。
自有ID:OTP-11478
改进和新功能
修复 cth_log_redirect.erl 以实现 gen_event 行为。感谢 Roberto Aloi。
自有ID:OTP-11401
CT 钩子回调函数
on_tc_skip/3
的第一个参数已修改。当为init_per_group
或end_per_group
调用此函数时,第一个参数的值现在为{init_per_group,GroupName}
或{end_per_group,GroupName}
。自有ID:OTP-11523
对 Common Test 在测试执行期间发送的事件消息进行了以下修改
- 对于
tc_auto_skip
事件,Func
元素的值已从end_per_group
更改为{end_per_group,GroupName}
。 - 当
require
在 info 函数(例如 suite/0 或 group/1)中失败时,现在会将初始化配置函数报告为auto_skipped
而不是skipped
,并在tc_done
事件中报告。 - 当
require
由于已在使用中的配置名称而在 info 函数中失败时,tc_done
事件现在使用标记为failed
的元组(大小为 2)报告错误,而不是skipped
。
请参阅 Common Test 用户指南中的事件处理章节以获取参考。
自有ID:OTP-11524 辅助ID:OTP-11305
- 对于
Common_Test 1.7.3
修复的错误和故障
添加了 ct_netconfc:send 和 ct_netconfc:send_rpc 的文档。
自有ID:OTP-11132
ct_netconfc:create_subscription 仅允许在“filter”元素内使用一个 XML 元素。根据 RFC5277,应该允许在过滤器内添加任意数量的元素,因此现在已对其进行更正。
自有ID:OTP-11166
Common Test 钩子 cth_log_redirect 安装的错误处理程序未响应 init:stop/1/2。此问题已得到纠正。
自有ID:OTP-11175 辅助ID:seq12356
当 Common Test 未运行时,调用 ct:pal/2 或 ct:print/2 会导致退出。此问题已更改,现在只需将字符串打印到标准输出即可。
自有ID:OTP-11176
修复了 cth_log_redirect 钩子调用 ct_logs 中未定义函数的问题。
自有ID:OTP-11238
当使用“repeat”选项运行测试时,Common Test 实用程序进程在测试运行后并非总是能足够快地终止,从而导致下一次运行的启动失败。现在使用监视器来确保每次测试运行后实用程序进程终止。
自有ID:OTP-11244 辅助ID:seq12396
测试服务器安装了一个错误处理程序 (test_server_h),只是为了能够在收到错误或进度报告时将当前测试用例的名称写入标准输出。此功能没有用处,已被删除。内置的 Common Test 钩子 cth_log_redirect 已得到改进,现在也可以使用套件、组和/或测试用例名称标记日志中的所有错误和进度报告。
自有ID:OTP-11263 辅助ID:seq12251
改进和新功能
引入了一个新的日志“测试前和测试后 I/O 日志”,它可以在测试运行之前和之后捕获错误和进度报告,以及使用 ct:log/2 和 ct:pal/2 进行的打印。(同时对日志记录系统进行了一些小的改进)。可以在 Common Test Framework 日志页面上找到指向新日志的链接。Common Test 用户指南已更新,其中包含有关新日志的信息,以及关于如何通过 CT 钩子 init 和 terminate 函数将外部应用程序与 Common Test 同步的新部分。
自有ID:OTP-11272
Common_Test 1.7.2
修复的错误和故障
Common Test 中通用连接处理的设计缺陷导致无法实现将多个连接名称(即配置变量别名)映射到单个连接进程 ID 的连接处理程序。此问题已得到解决。
自有 ID:OTP-10126 辅助 ID:kunagi-178 [89]
如果 telnet 连接挂起,则调用 ct_telnet:close/1 将在 5 秒后超时,并且连接进程将被强制终止。在某些情况下,连接不会被注销,并且尝试使用相同名称打开新连接会导致 common_test 尝试重用同一连接,因为它认为该连接仍然存活。此问题已得到纠正 - 被终止的连接现在始终会被注销。
自有 ID:OTP-10648 辅助 ID:seq12212
通过为顶级 HTML 索引日志(logdir 目录中的 all_runs.html 和 index.html)添加缓存,提高了测试性能。这解决了启动时间缓慢以及测试执行时间随着存储在 logdir 中的 ct_run 目录数量增加而增加的问题。缓存的索引条目在测试执行期间存储在 RAM 中,并在测试运行结束时保存到 logdir 中的文件中(以便加快启动时间)。
自有 ID:OTP-10855
测试规范功能的测试已得到改进,并且发现并纠正了一些小错误。
自有 ID:OTP-10857
某些 HTML 页脚中指向顶级索引文件的链接已消失。此错误已得到纠正。此外,还解决了套件概览日志文件未正确关闭的问题。
自有 ID:OTP-11046
如果套件中未实现 end_per_testcase(即使它是可选函数),则 Common Test 在出现 timetrap 错误时会在日志中打印警告。此打印输出已删除。
自有 ID:OTP-11052
改进和新功能
如果无法确定某个日志打印输出属于哪个测试用例,则以前会使用 common test 框架日志。现在,此类打印输出将发送到 test_server 中的 unexpected_io.log.html,以便只有一个地方可以查找“丢失的”打印输出。
自有 ID:OTP-10494 辅助 ID:kunagi-319 [230]
使 cover 在从 beam 中查找源代码时更加智能。
特别是,如果当前启发式方法失败,则使用 module_info 中的源路径进行搜索。
自有 ID:OTP-10902
添加 ct_slave:start/2 的变体,该变体在本地主机上使用指定的选项启动节点。
自有 ID:OTP-10920
集成来自 Andreas Schultz 的椭圆曲线贡献
为了能够在 SSL/TLS 中支持椭圆曲线密码套件,已向 public_key 和 crypto 添加了处理椭圆曲线基础结构的功能。
这还导致了 crypto API 的重写,以获得一致性并消除不必要的开销。所有使用 crypto 的 OTP 应用程序都已更新为使用新的 API。
影响:椭圆曲线密码术 (ECC) 提供与其它公钥算法相当的安全性,但密钥大小更小。较小的密钥大小可以节省功耗、内存、带宽和计算成本,这使得 ECC 对于受限环境特别有吸引力。
自有 ID:OTP-11009
不再需要用于生成 PDF 文件的 Postscript 文件已删除。
自有 ID:OTP-11016
在测试用例日志(对于失败的测试用例)中添加了从红色错误打印输出到日志末尾完整错误描述的链接。这样做的原因是红色字段中的错误描述有时会被截断为 50 个字符,以使日志尽可能短且易于阅读。
自有 ID:OTP-11044 辅助 ID:seq12304
向 ct_telnet:expect/3 添加了一个新选项 'no_prompt_check'。如果使用此选项,ct_telnet 将不会等待提示符或换行符,然后再尝试匹配给定的模式。
自有 ID:OTP-11095
Common_Test 1.7.1
已修复的错误和故障
如果在终止阶段,安装在 CT Master 事件管理器中的事件处理程序响应时间过长,则 CT Master 会因 5 秒后超时而崩溃。这会导致系统处于不良状态。此问题已通过 30 分钟的超时值解决,如果 CT Master 在该时间后超时,它现在会终止事件管理器并正常关闭。
自有 ID:OTP-10634 辅助 ID:kunagi-347 [258]
使用 Common Test 安装的事件处理程序中的任何 ct 打印输出函数进行打印都会导致死锁。此问题已得到解决。
自有 ID:OTP-10826 辅助 ID:seq12250
使用 force_stop 标志/选项中断测试运行会导致 Common Test 崩溃。此问题已得到解决。
自有 ID:OTP-10832
改进和新功能
删除已弃用的 run_test 程序,请改用 ct_run。
* 潜在的不兼容 *
自有 ID:OTP-9052
已知错误和问题
测试用例执行时间随着测试运行的大小而增加。
自有 ID:OTP-10855
Common_Test 1.7
已修复的错误和故障
现在会将
test_server
检测到的严重错误(例如,如果无法创建日志文件目录)报告给common_test
,并在common_test
日志中记录。自有 ID:OTP-9769 辅助 ID:kunagi-202 [113]
之前未记录的跨覆盖功能(用于累积多个测试的覆盖率数据)现已修复并记录在案。
自有 ID:OTP-9870 辅助 ID:kunagi-206 [117]
如果繁忙的测试用例生成了大量错误消息,cth_log_redirect:post_end_per_testcase 将在等待错误记录器完成处理所有错误报告时因超时而崩溃。默认计时器为 5 秒。现在已将其延长至 5 分钟。
自有 ID:OTP-10040 辅助 ID:kunagi-173 [84]
当测试用例因 timetrap 超时而失败时,该用例的
Config
数据会在随后调用end_per_testcase/2
时丢失,在调用 CT Hook 函数post_end_per_testcase/4
时也会丢失。此问题已得到解决,并且在 timetrap 超时失败后,Config
数据现在可以正确传递给上述函数。自有 ID:OTP-10070 辅助 ID:kunagi-175 [86]
从 ct_snmp 中删除了对 snmp 中已弃用和已删除的函数的某些调用。
自有 ID:OTP-10088 辅助 ID:kunagi-176 [87]
在 test_server 中,同一进程将监督当前正在运行的测试用例,并充当测试用例的组长(和 IO 服务器)。此外,当运行并行测试用例时,会生成新的临时监督/组长进程,而充当串行测试用例组长的进程将不处于活动状态。这会导致一些问题
* 由 init_per_suite 启动的进程将继承 init_per_suite 进程的组长(并且当并行测试用例运行时,该组长不会处理 IO 请求)。如果稍后并行测试用例导致此类进程使用(例如)io:format/2 进行打印,则调用将挂起。
* 同样,如果进程是从并行测试用例生成的,它将继承该并行测试用例的临时组长。如果该生成的进程稍后(当并行测试组完成时)尝试打印某些内容,则其组长将死亡,并且会出现
badarg
异常。这些问题已通过将组长与监督测试用例的进程分开来解决,并且保持并行测试用例的临时组长进程处于活动状态,直到系统中没有其他进程将其用作组长为止。
此外,还引入了一个新的
unexpected_io.log
日志文件(可从每个测试套件的摘要页面访问)。所有意外 IO 都将打印到其中(例如,IO 到已完成的并行测试用例的组长)。自有 ID:OTP-10101 辅助 ID:OTP-10125
ct_snmp:
中的一些错误修复- ct_snmp 现在将在设置 snmp 应用程序代理配置的“variables”参数时使用“agent_vsns”配置变量的值。之前必须单独完成此操作,即必须指定两次支持的版本。
- Snmp 应用程序无法写入 notify.conf,因为 ct_snmp 将通知类型作为字符串而不是原子给出。此问题已得到纠正。
自有 ID:OTP-10432
ct_snmp
中的一些错误修复- 函数
register_users/2
、register_agents/2
和register_usm_users/2
以及相应的unregister_*/1
函数不可执行。这些已得到纠正/重写。 - 已删除函数
update_usm_users/2
,并添加了注销函数。现在可以使用 unregister_usm_users 然后 register_usm_users 来完成更新。 - 添加了函数
unregister_*/2
,以便可以注销特定的用户/代理/usm 用户。 - 为完整起见,添加了函数
unload_mibs/1
。 - 覆盖配置文件不起作用,因为这些文件被写入 priv_dir 而不是配置目录 (priv_dir/conf) 中。此问题已得到纠正。
register_usm_users/2
的参数文档有误。此问题已得到纠正。
自有 ID:OTP-10434 辅助 ID:kunagi-264 [175]
- 函数
Common Test 中错误的导出规范已更正为
ct_netconfc:hook_options/0
和inet:hostname/0
自有 ID:OTP-10601
common_test 中的 netconf 客户端在接收数据后未调整窗口。因此,客户端在一段时间后停止接收数据。此问题已得到纠正。
自有 ID:OTP-10646
改进和新功能
现在,测试规范可以包含其他测试规范。包含的规范可以与源规范(以及所有其他连接的规范)连接,从而产生一次单独的测试运行,或者可以在单独的测试运行中执行。此外,还引入了一个启动标志/选项
join_specs
,与spec
选项结合使用。通过join_specs
,可以告知 Common Test 连接多个测试规范,或单独运行它们。如果没有join_specs
,则默认行为是后者。请注意,与早期版本的 Common Test 相比,这是一个变化,在早期版本中,规范只能连接。更多信息可以在用户指南的“运行测试”章节中找到(请参阅“测试规范”部分)。* 潜在的不兼容 *
自有 ID: OTP-9881 辅助 ID: kunagi-350 [261]
ct_slave:start/3
函数现在支持{env,[{Var,Value}]}
选项,用于扩展从属节点的运行环境。自有 ID: OTP-10469 辅助 ID: kunagi-317 [228]
已修正一些超出 PDF 页面宽度的示例。
自有 ID: OTP-10665
更新 common test 模块以处理 Unicode。
- 所有 HTML 文件都使用 UTF-8 编码,但使用 erl2html2:convert 生成的测试套件 HTML 版本除外,该版本的编码将与原始测试套件 (.erl) 文件相同。
- 使用 test_server_ctrl:uri_encode/1 对 HTML 文件中的链接目标进行编码。
- 在适当的时候,对 ~s 使用 Unicode 修饰符 't'。
- 使用 unicode:characters_to_list 和 unicode:characters_to_binary 在二进制和字符串之间进行转换,而不是 binary_to_list 和 list_to_binary。
自有 ID: OTP-10783
已知错误和问题
当 groups/0 崩溃时,CT 会丢弃错误原因。
自有ID:OTP-10631 辅助ID:kunagi-345 [256]
ct_master 节点上的事件处理程序导致挂起。
自有 ID:OTP-10634 辅助 ID:kunagi-347 [258]
CT 在 timetrap 超时后无法打开 telnet 连接。
自有 ID:OTP-10648 辅助 ID:seq12212
Common_Test 1.6.3.1
已知错误和问题
在 cth_surefire 钩子中完成了以下更正/更改
- 之前,在“testsuites”元素下总会有一个“properties”元素。即使其中没有“property”元素,它也会存在。现在已更改为,如果没有要显示的“property”元素,则也不会有“properties”元素。
- XML 文件现在(除非另有指定)将存储在顶级日志目录中。之前,默认目录是 erlang 节点的当前工作目录,该目录通常但不总是顶级日志目录。
- “testsuite”元素中的“hostname”属性以前永远不会有正确的值。这已得到纠正。
- “testsuite”元素中的“errors”属性以前会显示失败的测试用例数量。这已更改,现在将始终为 0,而“failures”属性将显示失败的测试用例数量。
- 在“testsuite”元素中添加了一个新的属性“skipped”。这将显示跳过的测试用例数量。这些以前会被包含在失败的测试用例数量中。
- “testsuite”元素中的“tests”属性显示的测试总数以前会包括 init/end_per_suite 和 init/end_per_group。现在已不再如此。“tests”属性现在只会计算“真实”的测试用例。
- 之前,自动跳过的测试用例在“log”属性中没有值。现在已纠正。
- 在“testsuite”元素中添加了一个新的属性“log”。
- 为此钩子添加了一个名为“url_base”的新选项。如果使用此选项,则将在“testcase”和“testsuite”元素中添加一个名为“url”的新属性。
自有 ID: OTP-10589
Common_Test 1.6.3
修复的错误和故障
ct:run_test/1 选项“config”仅适用于单个配置文件,而不适用于文件列表。这已修复。
自有 ID: OTP-10495
ct_netconfc:close_session 有时会返回 {error,closed},因为 ssh 连接在客户端收到 rpc-reply 之前已关闭(来自服务器端)。这是正常的,无法避免。已对其进行更正,以便在这种情况下返回“ok”。其他错误情况仍会给出 {error,Reason}。
自有 ID: OTP-10510 辅助 ID: kunagi-320 [231]
ct_netconfc:close_session 有时会返回 {error,closed} 或(如果连接已命名){error,{process_down,Pid,normal}},因为 ssh 连接在客户端收到 rpc-reply 之前已关闭(来自服务器端)。这是正常的,无法避免。已对其进行更正,以便在这种情况下返回“ok”。
自有 ID: OTP-10570
修复了当具有相同配置的相同名称的 ct:require 会返回 name_in_use 的错误。
自有 ID: OTP-10572
改进和新功能
已实现新的测试用例组搜索功能,使 Common Test 自动搜索组定义树(groups/0 的返回值),并为与规范匹配的嵌套组的所有路径创建测试。它还允许指定子组的唯一路径,以避免执行不需要的测试。每当通过 ct_run 程序、ct:run_test/1 API 函数或测试规范启动测试运行时,都可以使用此新功能。“运行测试”章节中的“测试用例组执行”部分提供了详细信息。
自有 ID: OTP-10466 辅助 ID: kunagi-276 [187]
已知错误和问题
如果测试用例失败,则恢复配置数据。
自有 ID:OTP-10070 辅助 ID:kunagi-175 [86]
test_server 中的 IO 服务器错误。
自有 ID: OTP-10125 辅助 ID: OTP-10101, kunagi-177 [88]
common_test 中的错误连接处理。
自有 ID:OTP-10126 辅助 ID:kunagi-178 [89]
Common_Test 1.6.2.1
修复的错误和故障
交互模式 (ct_run -shell) 无法正确启动。此错误已修复。
自有 ID: OTP-10414
Common_Test 1.6.2
修复的错误和故障
如果 CT 钩子函数导致崩溃,在某些情况下可能会导致 Common Test 由于非法 IO 操作而终止。此错误已得到纠正。
自有 ID: OTP-10050 辅助 ID: seq12039
Common Test 文档声明,timetrap 在执行 CT 钩子函数期间永远不会处于活动状态。这仅适用于后置钩子函数,不适用于前置钩子函数。CT 钩子的代码已修改为按照文档的方式运行。
自有 ID: OTP-10069
如果 CT 钩子函数调用了 exit/1 或 throw/1 BIF(可能是间接调用,例如,作为 gen_server:call/3 中超时的结果),Common Test 将会挂起。此问题已修复。
自有 ID: OTP-10072 辅助 ID: seq12053
文档已更新,其中包含有关如何处理返回 fail/skip 的钩子的链式调用的信息。
自有 ID: OTP-10077 辅助 ID: seq12048
当 ct_hooks 调用多个钩子的 id/1 函数时,它会反转钩子的顺序,并以错误的顺序调用后续的 init/2 调用。这已修复。
自有 ID: OTP-10135
surefire 钩子现在可以正确处理自动跳过的初始化和测试函数。
自有 ID: OTP-10158
如果调用时正在运行并行测试用例组,则 ct:get_status/0 函数无法报告状态。这已修复,并且该函数的返回值已更新。请参阅 ct 参考手册了解详细信息。
自有 ID: OTP-10172
改进和新功能
对“静默连接”的支持已更新为包括 ssh。此外,已将 silent_connections 术语添加到测试规范术语集中。
自有 ID: OTP-9625 辅助 ID: seq11918
现在,在使用 require 和 ct:get_config 时,可以指定任意大的元组作为 requires 配置数据。有关允许使用哪些键的详细信息,请参阅 ct:get_config 和 ct:require 参考手册页。
此更改在
ct:require/2
接口中引入了向后不兼容性。以前,执行ct:require(a_name,{key,subkey})
时,a_name 将与 key 关联。现在已更改为a_name
与subkey
关联。此更改还会影响在套件/组/测试用例信息函数中使用require
。* 潜在的不兼容 *
自有 ID: OTP-9626 辅助 ID: seq11920
ct_run 程序现在会在结束之前设置 OS 进程的退出状态。值 0 表示测试结果成功,1 表示有一个或多个失败或自动跳过的测试用例,2 表示测试执行失败。
自有 ID: OTP-9865 辅助 ID: OTP-10087
现在可以通过单击标题元素对 HTML 表格进行排序。要重置排序的表格,只需刷新浏览器窗口即可。此功能要求浏览器支持 javascript,并且启用了 javascript 执行。如果使用“ct_run -basic_html”标志,则生成的 HTML 代码中不会包含任何 javascript 代码。
自有 ID: OTP-9896 辅助 ID: seq12034, OTP-9835
一个名为 ct_netconfc 的 netconf 客户端被添加到 common_test 中。它支持通过 SSH 进行基本的 netconf 功能。为了测试成功和失败的情况,它被有意地编写为允许非标准行为。
自身 ID: OTP-10025
引入了测试规范术语 {define,Constant,Value},它使得在任意测试规范术语中,可以用值(term())替换常量名(atom())。'define' 使(现在已弃用的)'alias' 术语过时。更多详细信息,包括示例,可以在 Common Test 用户指南的“测试规范”章节中找到。
自身 ID: OTP-10049
添加了日志输出的详细程度级别。这使得可以为不同类别的日志输出以及一般输出(例如标准 IO)指定首选的详细程度,从而可以控制哪些字符串被打印以及哪些字符串被忽略。引入了新版本的 Common Test 日志记录函数 ct:log、ct:pal 和 ct:print,并添加了一个新的重要性参数。重要性值在运行时与详细程度级别进行比较。更多信息可以在 Common Test 用户指南中关于日志记录的章节中找到。
自身 ID: OTP-10067 辅助 ID: seq12050
ct:run_test/1 和 ct:run_testspec/1 的返回值已从无信息的 'ok'(与测试结果无关)更改为值 {Ok,Failed,{UserSkipped,AutoSkipped}}(均为整数),它表示最终的测试用例结果,或者值 {error,Reason},它通知致命的测试执行失败。请参阅 ct 的参考手册了解详细信息。
自身 ID: OTP-10087 辅助 ID: OTP-9865
测试规范语法已更新,包括新的和缺失的术语,例如 'define'、'verbosity'、'auto_compile'、'stylesheet'、'silent_connections'、'basic_html' 和 'release_shell'。有关详细信息,请参阅 Common Test 用户指南中的“测试规范”章节。
自身 ID: OTP-10089 辅助 ID: OTP-10049
现在可以通过调用 ct:break/1/2 函数来暂停测试用例的执行。通过调用 ct:continue/0/1 恢复执行。中断/继续也适用于并行执行的测试用例。有关详细信息,请参阅 ct 参考手册。
自身 ID: OTP-10127
现在可以从测试用例发送用户定义的事件,这些事件将被安装的事件处理程序捕获。
自身 ID: OTP-10157
为 ct:run_test/1 添加了一个新的启动选项 release_shell,它使 Common Test 在测试套件编译阶段完成后释放 shell 进程。有关详细信息,请参阅用户指南中的“运行测试”章节。
自身 ID: OTP-10248 辅助 ID: OTP-10127
Common_Test 1.6.1
修复的 Bug 和故障
Common Test 在执行测试之前将测试套件目录添加到代码路径中。这些目录也应该在测试运行结束时从代码路径中删除,但在本次修复之前,并没有执行此操作。
自身 ID: OTP-9595
现在在 index.html 文件(即测试运行的概述文件)中,为测试运行期间的每个重复测试创建一个条目。以前并非如此。请注意,在顶层(logdir)索引文件中,仅列出最后一个测试结果。例如,给定测试规范:[{merge_tests,false},{dirs,"test1"},{dirs,"test1"}]。在测试运行的索引文件(在 Logdir/ct_run.Node.Date.Time 下)中,列出了所有测试。在顶层索引文件(在 Logdir 下)中,仅列出最后一个测试(必须通过 all_runs.html 文件找到以前的结果)。
自身 ID: OTP-9634 辅助 ID: seq11924
在测试用例超时或中止后,end_per_testcase 函数在新专用的进程上执行。此进程的组长应设置为测试用例的 IO 服务器,但之前没有正确设置。此错误的结果是,测试用例日志中从未打印过关于 end_per_testcase 失败或超时的警告。此外,诸如 test_server:stop_node/1 等尝试与 IO 服务器同步的帮助函数会挂起。该故障已得到纠正。
自身 ID: OTP-9666
如果调用时没有测试正在运行,则 ct:get_status/0 函数会导致调用进程接收 'DOWN' 消息。此错误已修复。
自身 ID: OTP-9830 辅助 ID: seq11975
如果 Common Test 在新的测试用例开始时,同时将 error_handler 输出转发到 Test Server,则可能会发生死锁情况。此错误已修复。
自身 ID: OTP-9894
按照预期,现在在“make install”期间,会在安装 bin 目录(默认为 /usr/local/bin)中创建一个指向 ct_run 程序的链接。
自身 ID: OTP-9898
使用 ct:run_test/1 的 repeat、duration 或 until 选项会导致无限循环。此问题已修复。
自身 ID: OTP-9899
两个或多个并行执行的测试用例同时使用 ct:pal/2/3 或 ct:print/2/3 打印到屏幕时,可能会写入彼此的“槽”,从而造成混合字符串的混乱。为了避免这种情况,现在每次打印输出调用只发送一条 IO 消息。
自身 ID: OTP-9900 辅助 ID: OTP-9904
当测试用例由于 timetrap 超时而被终止时,当前位置(套件、用例和行)没有正确打印在日志文件中。此问题已得到纠正。
自身 ID: OTP-9930 辅助 ID: seq12002
当调用 ct:fail/1 或 ct_fail/2 时,日志文件中打印的退出位置错误。
自身 ID: OTP-9933 辅助 ID: seq12002
Test Server 和 Common Test 在每次测试运行时都会添加新的错误处理程序,并且无法删除以前添加的错误处理程序。在 Test Server 的情况下,只有当 SASL 未在测试节点上运行时才会发生这种情况。此问题已修复。
自身 ID: OTP-9941 辅助 ID: seq12009
如果测试用例进程由于来自链接进程的退出信号而终止,则 Test Server 无法向框架报告套件和用例的正确名称。此问题已得到纠正。
自身 ID: OTP-9958 辅助 ID: OTP-9855
当使用 ct_run 启动测试并使用 -pa 或 -pz(在 -erl_args 之前)将目录添加到代码路径时,Common Test 会删除代码路径中任何与要添加的目录具有相同基本名称(参见 filename:basename/1)的现有目录。此问题已修复。
自身 ID: OTP-9964
如果将两个或多个具有相同基本名称(参见 filename:basename/1)的目录传递给使用 ct_run -pa 的 Common Test,则只会实际添加一个目录。
自身 ID: OTP-9975 辅助 ID: seq12019
组信息功能所需的配置数据在调用 post_end_per_group 之前被删除,这使得钩子函数无法读取和使用相关数据。此问题已修复。
自身 ID: OTP-9989
测试规范中禁用内置钩子被忽略了,现在已经修复。
自身 ID: OTP-10009
更正了 common_test、driver、erl_driver 和 windows 安装说明文档中的各种印刷错误。(感谢 Tuncer Ayaz)
自身 ID: OTP-10037
改进和新功能
引入了一个新的可选功能,使 Common Test 能够生成对于每个测试用例或配置函数都唯一的 priv_dir 目录名称。选项/标志的名称是 'create_priv_dir',它可以设置为值 'auto_per_run'(这是默认的现有行为)或 'auto_per_tc' 或 'manual_per_tc'。如果使用 'auto_per_tc',则 Test Server 会为每个测试用例自动创建一个专用的 priv_dir(在许多和/或重复用例的情况下,这可能会非常昂贵)。如果使用 'manual_per_tc',则用户需要通过调用新函数 ct:make_priv_dir/0 显式创建 priv_dir。
自身 ID: OTP-9659 辅助 ID: seq11930
已将测试用例组名称的列添加到套件概述 HTML 日志文件中。
自身 ID: OTP-9730 辅助 ID: seq11952
现在可以使用 post_end_per_testcase CT 钩子函数在概述日志文件中为测试用例打印注释,即使测试用例被 timetrap 或未知退出信号杀死,或者 end_per_testcase 函数超时也是如此。
自身 ID: OTP-9855 辅助 ID: seq11979
现在始终为所有配置函数调用 pre- 和 post CT 钩子函数,即使对于测试套件中未实现的配置函数也是如此。
自身 ID: OTP-9880 辅助 ID: seq11993
Common Test 现在会在测试用例失败时立即在测试用例日志文件中打印错误信息(带有时间戳)。这使得更容易看到故障实际发生的时间,并有助于在日志中找到相关的跟踪和调试输出。
自身 ID: OTP-9904 辅助 ID: seq11985, OTP-9900
Test Server 已被修改为在接收到错误记录器事件时检查 SASL errlog_type 参数,以便它不会打印用户已禁用的类型报告。
自身 ID: OTP-9955 辅助 ID: seq12013
测试规范术语 'skip_groups' 已在 Common Test v1.6 中实现。然而,它从未被记录在案,现在已经进行了处理。请参阅用户指南中的“测试规范”章节以获取信息。
自身 ID: OTP-9972
Common Test Master 已更新为使用 CSS 样式表用于 html 日志文件。
自身 ID: OTP-9973
如果测试套件中未实现 init_per_group/2 和 end_per_group/2 函数,则当执行组时,Common Test 会调用其自己的本地 init 和 end 函数,以前命名为 ct_init_per_group/2 和 ct_end_per_group/2。这些函数已分别重命名为 init_per_group/2 和 end_per_group/2。请注意,这可能会影响任何通过旧名称识别事件的用户事件处理程序。
* 潜在的不兼容 *
自身 ID: OTP-9986 辅助 ID: OTP-9992
通过指定用户定义的函数 ({M,F,A} 或 fun) 作为 timetrap 值,无论是通过 info 函数还是通过调用 ct:timetrap/1,现在可以设置在用户函数返回时触发的 timetrap。
自身 ID: OTP-9988 辅助 ID: OTP-9501, seq11894
如果可选配置函数 init_per_suite/1 和 end_per_suite/1 未在测试套件中实现,则会调用这些函数的本地 Common Test 版本,并将显示在概述日志文件中。由 pre- 或 post_init_per_suite 和 pre- 或 post_end_per_suite 钩子函数进行的任何打印输出都会保存在这些函数的日志文件中。
自身 ID: OTP-9992
已向 Common Test 添加一个钩子,用于输出 surefire XML,以便与 Jenkins 等 CI 工具一起使用。要启用该钩子,请将 '-ct_hooks cth_surefire' 传递给 ct_run。有关更多详细信息,请参阅 CTH 文档。
自身 ID: OTP-9995
Common_Test 1.6
改进和新功能
在 Common Test 用户指南中添加了“入门”章节。
自身 ID:OTP-9156
Common Test 中实现了测试用例组信息功能。在执行测试用例组之前,现在会调用
TestSuite:group(GroupName)
。该函数返回测试属性列表,例如指定时间限制值、要求配置数据等(类似于测试套件和测试用例信息函数)。group(GroupName)
设置的属性的作用域是组GroupName
的所有测试用例和子组。自身 ID:OTP-9235
Common Test 钩子现在是最终支持的版本。Common Test 钩子允许您将多个测试套件通用的初始化行为抽象到一个地方,并扩展套件的行为而无需更改套件本身。有关更多信息,请参阅 Common Test 用户指南。
自身 ID:OTP-9449
添加了一个新的内置 Common Test 钩子,用于捕获 error_logger 和 SASL 事件并将其打印在测试用例日志中。要禁用此钩子(以及任何其他内置钩子),请将 'enable_builtin_hooks false' 传递给 Common Test。
自身 ID:OTP-9543
Common Test 现在还会为
init/end_per_suite/1
和init/end_per_group/2
配置函数调用信息函数。这些函数可以用来设置时间限制,并要求仅与相关配置函数相关的外部配置数据(而不影响为套件中的组和测试用例设置的属性)。init/end_per_suite(Config)
的信息函数是init/end_per_suite()
,init/end_per_group(GroupName,Config)
的信息函数是init/end_per_group(GroupName)
。信息函数不能与init/end_per_testcase(TestCase, Config)
一起使用,因为这些配置函数在测试用例进程上执行,并将使用与测试用例相同的属性(即由测试用例信息函数TestCase()
设置的属性)。自身 ID:OTP-9569
现在可以在执行期间读取测试用例日志文件的完整名称。一种方法是在测试用例
Config
列表中查找键tc_logfile
的值(这意味着它也可以被 pre- 或 post Common Test 钩子函数读取)。数据也会随事件#event{name=tc_logfile,data={{Suite,Func},LogFileName}}
发送,并且可以被任何已安装的事件处理程序读取。自身 ID:OTP-9676 辅助 ID:seq11941
通过使用 CSS 文件,改进了 Common Test 和 Test Server 生成的 HTML 日志文件的外观(并且使其更易于自定义)。
自身 ID:OTP-9706
添加了函数 ct:fail(Format, Args) 和 ct:comment(Format, Args),以便更容易地打印格式化的错误和注释字符串(用户无需显式调用 io_lib:format/2)。
自身 ID:OTP-9709 辅助 ID:seq11951
清理钩子(即 end_per 钩子)的 ct 钩子执行顺序已反转。
* 潜在的不兼容 *
自身 ID:OTP-9774 辅助 ID:seq11913
可以在测试用例执行期间捕获到 stdout 的打印输出。这对于例如读取和解析来自 SUT 的 tty 打印输出(如果需要,例如,确定测试结果)很有用。捕获会话使用
ct:capture_start/0
启动,并使用ct:capture_stop/0
停止。缓冲的字符串列表可以使用ct:capture_get/0/1
读取并清除。可以从捕获的字符串列表中过滤掉使用ct:log/2/3
和ct:pal/2/3
打印的输出。这是通过使用要排除的日志类别列表调用capture_get/1
完成的。自身 ID:OTP-9775
已扩展在 all/0 列表中指定测试用例组的语法,以包含组和子组的执行属性。all/0 中为组指定的属性会覆盖组声明(在 groups/0 中)中指定的属性。此扩展的主要目的是使在不必声明相关组的副本的情况下,可以使用不同的属性运行同一组测试。此外,相同的语法可用于测试规范,以便在执行时更改组的属性,而无需编辑测试套件。请参阅用户指南了解详细信息和示例。
自身 ID:OTP-9809 辅助 ID:OTP-9235
已知错误和问题
修复了由于异常中的行号而导致的 CT/TS 中的问题。
自身 ID:OTP-9203
Common_Test 1.5.5
已修复的错误和故障
更正了测试套件概述 HTML 日志文件中注释着色的错误。因此,引入了一个新的框架回调函数 format_comment/1。
自身 ID:OTP-9237
为测试用例组自动生成的 init 和 end 配置函数导致测试用例的执行顺序不正确。此问题已得到更正。
自身 ID:OTP-9369
如果使用 'logdir' 标志/选项指定了多个目录,则 Common Test 会崩溃。此问题已修复,现在会正确报告错误。
自身 ID:OTP-9370
如果使用错误的参数调用 ct:log/2,可能会导致 Common Test IO 处理进程崩溃。此故障已得到更正。
自身 ID:OTP-9371 辅助 ID:OTP-8933
修复了一个错误,该错误导致 Test Server 使用不正确的模块名称作为第一个参数调用 end_tc/3 框架函数。
自身 ID:OTP-9379 辅助 ID:seq11863
如果在 lib 模块中的函数(即直接或间接从测试用例调用的函数)执行期间发生时间限制超时,则 end_tc/3 框架回调函数中的 Suite 参数将不正确地包含测试套件的名称,而是 lib 模块的名称。(只有在 lib 模块编译时包含 ct.hrl 时才会发生这种情况)。此错误已得到解决。
自身 ID:OTP-9398
更正了 VTS 模式。它现在将报告错误(例如,关于不正确的配置文件),而不是崩溃或挂起。此外,删除了测试目录名称必须具有 "_test" 后缀的要求。此外,还针对文件浏览器(在许多 Web 浏览器中)只会返回基本文件名而不是完整目录路径的限制实施了解决方法(这使得无法在主测试目录以外的目录中拥有配置文件)。
自身 ID:OTP-9429
添加 proplist() 类型
最近我在向 API 添加规范时发现没有定义规范的 proplist() 类型。(感谢 Ryan Zezeski)
自身 ID:OTP-9499
现在可以使用 'step' 标志/选项为包含测试用例组的测试套件运行调试器。以前这样做会导致 Common Test 崩溃。如果指定了 'step config',则现在还会自动在 init_per_group 和 end_per_group 上设置断点。请注意,断点始终会自动在测试用例函数上设置,对于分组的用例也是如此。
自身 ID:OTP-9518 辅助 ID:OTP-8933
测试索引页面在每个测试套件开始时没有刷新,这使得无法通过刷新浏览器窗口来跟踪测试执行(没有链接可跟踪)。此问题已修复。
自身 ID:OTP-9520 辅助 ID:OTP-8933
如果测试套件以没有定义 init_per_group/2 和 end_per_group/2 函数的测试用例组开始,则 init_per_suite/1 最初不会执行,并且测试运行的日志记录将失败。此错误已修复。
自身 ID:OTP-9584
顶级索引页面中的“缺失的套件”链接不正确,已修复。
自身 ID:OTP-9592
改进和新功能
对错误的处理和报告进行了各种更正和更新,以进行改进。
自身 ID:OTP-8933
dir 和 suite start 选项现在可以组合使用。例如,在目录 my_tests 中执行 my_SUITE 可以指定为 "ct_run -suite my_tests/my_SUITE" 或 "ct_run -dir my_tests -suite my_SUITE"。此外,规范:ct:run_test([{suite,["./my_SUITE"]},{testcase,t1}]) 现在被解释为 ct:run_test([{suite,"./my_SUITE"},{testcase,t1}]),即仅执行测试套件 my_SUITE 中的测试用例 t1,而不是所有用例。
自身 ID:OTP-9155
引入了一个新选项 'logopts',以便可以修改 Common Test(或 Test Server)中日志记录行为的某些方面。例如,每当进行 io 打印输出时,test_server 都会在输出字符串的末尾添加换行符 (\n)。这可能并不总是首选操作,因此可以通过 "ct_run ... -logopts no_nl"(或 ct:run_test([..., {logopts,[no_nl]}]))禁用此操作。引入了一个新的框架回调函数 get_logopts/0(有关详细信息,请参阅 ct_framework 模块)。
自身 ID:OTP-9372 辅助 ID:OTP-9396
引入了一个新选项 'logopts',以便可以修改 Common Test(或 Test Server)中日志记录行为的某些方面。例如,如果在测试运行期间不应生成测试套件源代码的 HTML 版本(因此在日志文件系统中不可用),则可以通过 "ct_run ... -logopts no_src"(或 ct:run_test([..., {logopts,[no_src]}]))禁用此功能。引入了一个新的框架回调函数 get_logopts/0(有关详细信息,请参阅 ct_framework 模块)。
自身 ID:OTP-9396 辅助 ID:seq11869, OTP-9372
CT 钩子现在可以分配优先级。CTH 的优先级确定它相对于其他 CTH 何时执行。优先级最低的 CTH 将首先执行,优先级相同的 CTH 将按照安装顺序执行。
自身 ID:OTP-9445
现在可以使用元组 {M,F,A} 或 fun 作为套件信息函数或测试用例信息函数中的时间限制规范。该函数必须返回一个有效的超时值,如 common_test 手册页和用户指南中所述。
自身 ID:OTP-9501 辅助 ID:seq11894
添加了一个新的内置 Common Test 钩子,用于捕获 error_logger 和 SASL 事件并将其打印在测试用例日志中。要禁用此钩子(以及任何其他内置钩子),请将 'enable_builtin_hooks false' 传递给 Common Test。
自身 ID:OTP-9543
Common Test 现在可以具有内置钩子,这些钩子在运行任何测试时默认启动。要禁用内置钩子,请将 'enable_builtin_hooks false' 传递给 Common Test。有关更多详细信息,请参阅 Common Test 钩子文档。
自身 ID:OTP-9564
Common_Test 1.5.4
已修复的错误和故障
以前无法将时间限制值 'infinity' 与 ct:timetrap/1 一起使用。此问题已修复。
自身 ID:OTP-9159
Common Test VTS 模式已更新,能够报告包含测试用例组的套件的测试结果(以前会崩溃)。
自身 ID:OTP-9195
Common Test 现在在测试运行中每个单独测试的开始时刷新最顶层的 index.html 页面,以便可以通过跟踪其概述页面的链接来跟踪正在进行的测试进度。
自身 ID:OTP-9210 辅助 ID:OTP-9054
修复了一个错误,该错误导致在调用 ct:timetrap/1 时无法取消先前的时间限制。
自身 ID:OTP-9233 辅助 ID:OTP-9159
修复了一个错误,该错误会导致在 suite/0 中添加 cth 时,如果超出范围,则无法删除 cth,并在 pre_init_per_suite 中崩溃。
自身 ID:OTP-9264
改进和新功能
现在可以从 init_per_testcase/2 返回元组 {fail,Reason}。结果是,关联的测试用例被记录为失败,而无需执行。
自身 ID:OTP-9160 辅助 ID:seq11502
Common Test 现在接受,但忽略空的测试用例组规范。
自身 ID:OTP-9161
Common_Test 1.5.3
修复的 Bug 和故障
添加了一个测试规范选项,允许按原样执行测试,而不是合并同一“级别”上的测试。请参阅测试规范文档中的 merge_tests 指令。
自有 ID:OTP-9026 辅助 ID:seq11768
改进和新功能
Common Test Hooks (CTH) 的 Alpha 版本发布。CTH 允许 common test 的用户以比以前更优雅和灵活的方式从测试套件中抽象出常见行为。请注意,此功能的添加可能会在 common_test 和 test_server 之间的接口的未文档化行为中引入细微更改。
* 潜在的不兼容 *
自有 ID:OTP-8851
Common_Test 1.5.2
修复的 Bug 和故障
更新了 ct:get_status 文档以描述 no_tests_running 返回值。
自有 ID:OTP-8895 辅助 ID:seq11701
修复了测试 common test 并行组功能的测试套件中的竞争条件测试失败。
自有 ID:OTP-8921
当在远程节点上使用时,测试规范的 include 指令现在可以工作。
自有 ID:OTP-8935 辅助 ID:seq11731
改进和新功能
ct:parse_table 现在可以处理多行 sql 行
自有 ID:OTP-8907 辅助 ID:seq11702
run_test 可执行文件已重命名为不太通用的 ct_run,以便更好地与其他应用程序一起使用。 run_test 将保留到 R16B,届时它将被删除。
自有 ID:OTP-8936
Common_Test 1.5.1
修复的 Bug 和故障
在作为序列一部分的组中,从 end_per_group 返回 {return_group_result,failed},不会导致跳过后续的用例(或组)。这已得到修复。
自有 ID:OTP-8753 辅助 ID:seq11644
ct:install 现在按照文档描述的方式工作。
自有 ID:OTP-8818 辅助 ID:seq-11666
改进和新功能
Common Test 已更新为处理测试用例组(和组中的测试用例)的启动选项和测试规范术语。此外,还添加了一个名为“label”的选项,该选项将测试运行与一个名称相关联,Common Test 会在概述 HTML 日志中打印该名称。
自有 ID:OTP-8725 辅助 ID:OTP-8727
Andrey Pampukha 已添加到 AUTHORS 文件中。感谢 Andrey 在配置数据处理、大规模测试改进以及其他有用的更新和修复方面的工作。
自有 ID:OTP-8803
用户指南中的配置数据章节已更新。
自有 ID:OTP-8804
毫秒现在包含在 Common Test 日志条目的时间戳中。(感谢 Tomas Johansson。)
自有 ID:OTP-8808
Common_Test 1.5
修复的 Bug 和故障
在 Common Test 中使用监视器的进程调用不会清除剩余的 DOWN 消息的收件箱。这已得到修复。
自有 ID:OTP-8621 辅助 ID:seq11560
改进和新功能
现在用户可以提供处理测试配置数据的特定回调模块,以便可以访问任意形式的数据(例如,通过读取文件或与配置服务器进程通信)。Common Test 中引入了两个默认回调模块:ct_config_plain 和 ct_config_xml。前者用于处理传统的 Common Test 配置文件(以键值元组形式),后者用于处理 XML 表示形式的配置数据。
自有 ID:OTP-8485
现在可以执行不一定在本地文件系统上可用的测试套件,而是在测试节点上预先加载的测试套件(例如,从远程节点作为二进制文件发送并通过 RPC 加载)。要求是已设置 no_auto_compile(或 {auto_compile,false})参数。
自有 ID:OTP-8490 辅助 ID:seq11500
即使测试用例已显式终止 (使用 abort_current_testcase/1) 或在 timetrap 超时之后,Test Server 现在也会调用 end_per_testcase/2 函数。在这些情况下,end_per_testcase 的返回值将被完全忽略。因此,该函数将无法通过返回 {fail,Reason} 来更改测试用例终止的原因,也无法使用 {save_config,Data} 保存数据。
自有 ID:OTP-8500 辅助 ID:seq11521
现在可以使用测试规范术语“init”来自动启动 Common Test 节点,以及在节点上评估初始函数调用。已经引入了一个用于“init”术语的默认回调模块 ct_slave,以使 Common Test Master 能够通过 ssh 执行主机登录和节点启动操作。
自有 ID:OTP-8570
run_test 脚本已被一个程序(同名)替换,该程序可以在不显式安装的情况下执行。启动标志与旧版启动脚本相同。
自有 ID:OTP-8650
以前,测试用例组的 repeat 属性指定了主测试运行后该组应重复的次数。即,{repeat,N} 将导致该组执行 1+N 次。为了与 run_test repeat 选项的行为一致,这已被更改。N 现在指定执行的绝对次数。
自有 ID:OTP-8689 辅助 ID:seq11502
使用 run_test -erl_args 选项,可以将 run_test 命令行上的选项划分为 Common Test 应处理的选项(在 -erl_args 之前的选项),以及它应忽略的选项(在 -erl_args 之后的选项)。Common Test 无法识别的在 -erl_args 之前的选项也会被忽略(即与早期版本的 Common Test 相同的行为)。
自有 ID:OTP-8690 辅助 ID:OTP-8650
使用 run_test 命令行中 pre-erl_args 部分中的 -pa 或 -pz 添加的目录将从相对转换为绝对,这是为了避免在 Common Test 在测试运行期间切换工作目录时加载用户模块时出现问题。
自有 ID:OTP-8691 辅助 ID:OTP-8650
通过新的启动选项和新的 ct 接口函数,timetrap 处理变得更加用户可控。“multiply_timetraps”启动选项可以指定一个值,所有 timetrap 超时值都将乘以该值。这在运行 cover 或 trace 时临时延长 timetraps 时非常有用。“scale_timetraps”启动选项打开或关闭 Test Server timetrap 缩放功能(它会尝试检测测试是否可能受益于延长的 timetraps,例如由于运行某些测试工具,并自动执行缩放)。此外,还引入了 ct:timetrap/1 函数,该函数可以在测试执行期间设置/重置 timetraps。此外,现在可以使用 ct:sleep/1 函数,该函数在计算暂停进程的时间时会考虑 timetrap 参数。
自有 ID:OTP-8693
添加了一个新的 run_test 启动选项 event_handler_init,它接受一个传递给事件处理程序的 init 函数的启动参数。
自有 ID:OTP-8694
Common_Test 1.4.7
修复的 Bug 和故障
如果修改了测试套件中包含的头文件(如果使用了 dir 启动标志/选项),则 Common Test 的自动编译功能无法识别。这已得到修复。
自有 ID:OTP-8396 辅助 ID:seq11488, OTP-8311
改进和新功能
由于 timetrap 超时而失败的测试用例的配置列表中的 tc_status 值已从 {tc_status,timeout} 更改为 {tc_status,timetrap_timeout}。
自有 ID:OTP-8302
在修复了许多错误并在文档构建过程中添加了一些功能后,现在可以在开源环境中构建文档。
- arity 计算已更新。
- 在生成的链接中,bif 的函数名称中使用的模块前缀被删除,因此链接将类似于 "https://erlang.org.cn/doc/man/erlang.html#append_element-2" 而不是 "https://erlang.org.cn/doc/man/erlang.html#erlang:append_element-2"。"。
- 加强了加载新页面时 html 文档中的菜单定位。
- 对 man 页面的生成进行了许多更正(感谢 Sergei Golovan)
- 法律声明取自 xml 书籍文件,因此 OTP 的构建过程可用于非 OTP 应用程序。
自有 ID:OTP-8343
现在可以使用 -include_lib 指令包含
ct.hrl
。(感谢 Fred Hebert。)自有 ID:OTP-8379
Common Test 中的 telnet 客户端向服务器发送 [IAC,DO,NOP] 以尝试保持连接。根据标准,这不是一个有效的序列,一些 telnet 服务器会因此终止连接。客户端已更改为每 10 秒发送一次 [IAC,NOP],这应该是一个有效的序列。客户端不会与服务器协商这种“保持活动”消息,如果它导致问题,用户可以通过在服务器/连接的 telnet 配置数据中添加 {keep_alive,false} 来禁用保持活动功能。请参阅 ct_telnet 和 unix_telnet 手册页了解详细信息。
自有 ID:OTP-8450 辅助 ID:OTP-8311
Common_Test 1.4.6
修复的错误和故障
如果 init_per_testcase/2 函数失败,测试用例现在会被标记并计数为自动跳过,而不是用户跳过(之前会发生这种情况)。
自有 ID:OTP-8289
改进和新功能
文档现在使用大多数平台上存在的开源工具(xsltproc 和 fop)构建。一个可见的变化是框架已被删除。
自有 ID:OTP-8201
对于失败的测试用例,tc_done 事件应该报告 {failed,Error} 形式的信息。但是,只报告了 Error,现在已经修复了这个问题。
自有 ID:OTP-8235 辅助 ID:seq-11414
现在可以通过返回 {fail,Reason} 从 end_per_testcase/2 函数中使测试用例失败。
自有 ID:OTP-8284
现在可以通过让 end_tc/3 框架函数为测试用例返回 {fail,Reason} 来使测试用例失败。
自有 ID:OTP-8285
测试服务器框架 API(例如 end_tc/3 函数)已修改。有关详细信息,请参阅 test_server_ctrl 文档。
自有 ID:OTP-8286 辅助 ID:OTP-8285, OTP-8287
已实施各种测试事件的更新。某些事件(如 tc_done 和 tc_auto_skip)的数据字段已被修改,以便更容易且更一致地对数据进行模式匹配。此外,接收某些事件的顺序也发生了变化。例如,测试用例的 tc_auto_skip 事件现在出现在失败的配置函数的 tc_done 之后(而不是之前),这更有意义。请注意,没有添加任何新事件,并且事件记录保持不变。
自有 ID:OTP-8287 辅助 ID:OTP-8235
应要求,已删除 all_runs.html 页面上用于测试名称的跑马灯效果。请注意,测试名称字段在 title 标记中包含完整文本字符串,当鼠标指针悬停在其上时会显示该字符串(即,如果 Web 浏览器支持 title 标记)。
自有 ID:OTP-8288
现在可以通过在 ct:run_test/1 选项列表中指定 {refresh_logs,LogDir} 元组来刷新任意日志目录中的顶级索引文件。此外,run_test 脚本的 -refresh_logs 标志已扩展为采用可选的 LogDir 参数,即 -refresh_logs [LogDir]。如果未指定 LogDir,则假定为当前工作目录,除非使用 -logdir 标志设置了日志目录。
自有 ID:OTP-8290
以前要求测试套件位于名为“test”的测试对象(或 OTP 应用程序)子目录下(或位于名为“<testobject>_test”的目录下)。这已更改,因此 Common Test 现在仅在目录存在时才主要在测试子目录中查找套件。否则,它将假定套件存储在用户使用例如“dir”启动标志/选项指定的同一目录中。
自有 ID:OTP-8294
Common_Test 1.4.5
修复的错误和故障
如果序列中(使用 sequences/0 声明)的测试用例失败,则 Common Test 日志记录器进程会崩溃。此故障已得到纠正。
自有 ID:OTP-8089 辅助 ID:seq11334
改进和新功能
Common Test 和测试服务器中的各种更新和修复。
自有 ID:OTP-8045 辅助 ID:OTP-8089,OTP-8105,OTP-8163
覆盖率数据收集和分析中的错误难以检测。日志记录已得到改进,以便将有关例如导入和缺少模块的更多信息打印到 html 日志文件中。
自有 ID:OTP-8163 辅助 ID:seq11374
Common Test HTML 概述页面已得到改进。现在可以查看测试用例是显式跳过还是因为配置函数失败而跳过。此外,历史记录页面 (all_runs.html) 现在具有滚动文本显示测试名称。仍然可以通过标志/选项“basic_html”生成旧格式(将名称显示为截断的字符串)。
自有 ID:OTP-8177
Common_Test 1.4.2
改进和新功能
Common Test 和测试服务器的各种更正和改进。
自有 ID:OTP-7981
Common_Test 1.4.1
改进和新功能
小的更新和更正。
自有 ID:OTP-7897
Common_Test 1.4
改进和新功能
Common Test 中引入了用于 SSH 和 SFTP 的支持客户端模块 ct_ssh。
自有 ID:OTP-7838
引入了测试用例组。借助此功能,可以执行测试用例组(可能嵌套),每个组都用对函数 init_per_group/2 和 end_per_group/2 的调用包装。组定义通过新的回调函数 groups/0 完成,该函数应返回定义列表。组定义包含名称标签、属性列表和测试用例列表(包括可能的嵌套组定义)。属性可以并行、按顺序和以随机顺序执行测试用例。还可以根据不同的标准重复测试用例。属性可以组合,从而可以例如将 conf 用例重复一定次数,并每次以不同的(随机)顺序执行测试用例。可用属性包括:parallel、sequence、shuffle、repeat、repeat_until_all_ok、repeat_until_any_ok、repeat_until_any_fail 和 repeat_until_all_fail。有关详细信息,请参阅 Common Test 用户指南。
自有 ID:OTP-7839 辅助 ID:OTP-7511
现在可以将 DES3 加密的配置文件与 Common Test 一起使用。
自有 ID:OTP-7842 辅助 ID:OTP-7838
在以前版本的 Common Test 中,每个配置目标名称只能打开一个 FTP 连接。此问题已更新,以便可以打开多个连接。仍然支持使用命名连接的可能性。
自有 ID:OTP-7853 辅助 ID:OTP-7838
Emacs 的 Erlang 模式已使用 Common Test 和 TS 的新和修改的框架进行了更新。添加了 Common Test 中测试用例组的语法(以及 TS 中带有属性的 conf 用例),并引入了一个新的最小 Common Test 套件框架。
自有 ID:OTP-7856
Common_Test 1.3.6
修复的错误和故障
当运行一个包含测试目录中所有套件的测试时,如果一个套件的自动编译失败,则所有后续套件都将从测试中排除。这是一种不需要的行为,并且已得到纠正。现在,所有套件将始终被编译,并且只有失败的套件会被排除在测试之外(并记录为丢失)。
自有 ID:OTP-7750 辅助 ID:OTP-7803
Common Test 中(基于与 Debugger 的交互)的单步执行功能已损坏。此问题已修复,并且还添加了一些新的单步执行功能。有关详细信息,请参阅 Common Test 用户指南。
自有 ID:OTP-7800 辅助 ID:seq11106
改进和新功能
现在用户可以指定 Common Test 在编译套件和帮助模块时将传递给编译器的包含目录(Common Test 在运行测试之前会自动执行此操作)。
自有 ID:OTP-7803 辅助 ID:OTP-7750
Common_Test 1.3.5
修复的错误和故障
如果 Erlang 运行时系统在无法访问 erlang shell 的情况下启动(例如 -noshell),则编译错误将导致 Common Test 应用程序崩溃。在无法访问 shell 的情况下,Common Test 无法提示用户选择继续或中止测试会话,但必须假定该会话应继续。
自有 ID:OTP-7749 辅助 ID:seq11175, seq11180
改进和新功能
现在 Common Test 用户可以禁用自动编译功能。这可以通过指定 run_test 标志 -no_auto_compile 或 ct:run_test/1 选项 {auto_compile,false} 来完成。
自有 ID:OTP-7663
Common Test 中添加了一个新函数 ct:get_config/3,如果某个特定的配置变量在多个配置文件中定义,则可以使用该函数返回该变量的所有匹配值。返回列表中的元素顺序与配置文件的指定顺序相同。
自有 ID:OTP-7758 辅助 ID:seq11158
由于 telnet 连接始终通过配置变量别名来标识,因此无法使用配置文件中相同的 telnet 主机数据条目打开多个连接。通过使连接仅与句柄值关联成为可能(即,可以使用相同的配置变量打开多个连接),此限制已被移除。有关详细信息,请参阅 ct_telnet:open/4。
自有 ID:OTP-7781
引入了用于定义默认配置数据值的新语法。在之前的 Common Test 版本中,要定义和访问配置变量的默认值(在套件信息或测试用例信息函数中),必须使用别名。使用新语法,您可以定义默认值而无需引用别名,如下所示:{default_config,VarName,DefaultValue}。有关更多信息,请参阅用户指南。
自有 ID:OTP-7782
在之前的 Common Test 版本中,每当配置变量与名称关联时(通过 require 语句),配置变量名称都会被新名称替换。这在测试用例之间引入了不必要的依赖关系(例如,如果一个测试用例引入一个新名称,则后面的测试用例将无法再通过原始变量访问配置数据)。此功能现在已更新,以便在使用 require 引入新名称时,它们将成为别名(引用)而不是替换。因此,配置数据元素始终可以在任何时候通过原始配置变量名称进行访问。
自有 ID:OTP-7783
Common_Test 1.3.4
改进和新功能
Common Test 现在使用 re 应用程序而不是之前的 rx 驱动程序来执行 telnet 字符串的正则表达式匹配。由于 re 在所有受支持的操作系统上都可以工作,因此现在也可以在诸如 Windows 等平台上运行 telnet 会话(之前的 rx 驱动程序无法做到这一点)。请注意,rx 驱动程序现在已过时,将在 OTP R12B 之后从 Common Test 中删除。
自有 ID:OTP-7528
Common_Test 1.3.3
改进和新功能
Common Test 和 Test Server 中实现了一些更新和改进,以及一些小的错误修复。
自有 ID:OTP-7112
现在可以通过新函数 ct:abort_current_testcase/1 或 test_server_ctrl:abort_current_testcase/1 来中止当前正在执行的测试用例。
自有 ID:OTP-7518 辅助 ID:OTP-7112
Common_Test 1.3.2
改进和新功能
Common Test 中 rx 库的配置测试未在常规 OTP 应用程序配置阶段执行。这使得例如 autoconf 不可能进行。这已被更改以与正常的 OTP 构建过程相对应。
自有 ID:OTP-7379
Common_Test 1.3.1
改进和新功能
由于缺少 -fPIC 编译器选项,与 common_test 一起提供的 rx 库在某些架构上无法构建。
自有 ID:OTP-7111