3

我想要一个 Guile 脚本,它实现功能,根据 TAP 协议输出测试结果消息。

4

2 回答 2

3

现在还有ggspec,一个 Guile 单元测试框架,可以输出 TAP 格式的(一个子集)结果。为此,请将所有测试(方案)脚本放在名为spec并运行的项目子目录中:

$ ggspec -f tap

由于 ggspec 是一个成熟的框架,具有设置、拆卸和测试跳过功能,因此有更多选择。请参阅项目附带的示例测试文件 ( spec/lib-spec.scm) 以获得良好的概述。

免责声明:我写了 ggspec。

于 2014-02-17T18:13:39.903 回答
2

以下名为 guiletap.scm 的脚本实现了在运行测试时使用 TAP 协议时经常需要的功能。

; 定义用于在 TAP 协议下运行 Guile 编写的测试的函数。
; 版权所有 © 2008 Omer Zak
; 在 GNU LGPL 2.1 或(由您选择)任何更高版本下发布。
;;;
;;; 要调用它:
;;; (使用模块(guiletap))
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;
(定义模块(guiletap))
(出口计划)
(出口正常)
(出口纾困)
(出口诊断)
(导出is_ok)

(使用模块(ice-9 格式))

; n 是测试次数。
(定义计划
  (lambda (n) (显示 (格式 "1..~d~%" n))))

; n - 测试编号
; testdesc - 测试描述符
; res - 失败时为 #f 的结果,成功时为其他结果。
(定义好
  (lambda (n testdesc res)
    (if (not res)(显示 "not "))
    (显示 (格式 "ok ~d - ~a~%" n testdesc))))

; testdesc - 测试描述符
(定义 bail_out
  (lambda (testdesc)
    (display (format "Bail out! - ~a~%" testdesc)))

; diagmsg - 诊断消息
(定义诊断
  (λ(诊断)
    (显示(格式“#~a~%”diagmsg)))

; n - 测试编号
; testdesc - 测试描述符
; 表达 - 预期的测试结果
; actres - 实际测试结果
(定义 is_ok
  (lambda(n testdesc 表达actres)
    (ok n testdesc (equal?expres actres))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;
; !!!去做:
; !!!还要实施:
; plan_no_plan
; plan_skip_all [原因]
;
; 是预期结果 [名称]
; 不是预期结果[名称]
; 喜欢结果模式[名称]
; 与结果模式 [名称] 不同
; 通过[姓名]
; 失败[姓名]
;
; 跳过条件 [原因] [NB_TESTS=1]
; 通过设置 $TODO 指定 TODO 模式:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;
; guiletap.scm 结束
于 2008-09-16T13:38:45.763 回答