racket - 如何独立测试 Racket 包?

标签 racket

我正在尝试了解 Racket 中包的测试。我想知道是否有人可以给我解释一下进行包测试的惯用方法。所以,我面前有一个包裹(这是别人的,但我正在考虑贡献),里面有一些收藏品。 info.rkt 看起来有点像这样:

#lang info
(define collection 'multi)
(define deps '(("base" #:version "6.2.900.15") ;runtime dependencies ))
(define build-deps '(;build dependencies))

现在的软件包文章位于https://blog.racket-lang.org/2017/10/tutorial-creating-a-package.html对于单一收集情况下发生的情况非常清楚。但在多收集情况下情况就不那么明显了。

现在为了测试该软件包,您需要安装该软件包,运行raco test,然后通过删除该软件包进行清理。我认为我应该测试该包而不安装它。在这种情况下,如何最好地组织 main.rkt 中的 info.rktrequires 以及 friend 保持路径本地化,从而保持测试独立的?

最佳答案

这是一个有趣的问题,您可能想在 Racket 邮件列表或 Slack 上询问。

我的建议是假设在大多数情况下您必须安装一个包来测试它,特别是当它包含多个集合时。特别是,我建议假设需要另一个集合中的模块应该始终使用绝对模块路径而不是相对路径,即使它们位于同一个包中。令我惊讶的是,这似乎没有被强制执行(基于我所做的一项小测试),但我不会依赖当前的宽松行为。我怀疑 Scribble 可以处理相对模块名称(但我没有检查过),因此如果您对“测试”的定义包括构建和检查文档,那么这就是需要安装的另一个原因。

关于racket - 如何独立测试 Racket 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62014612/

相关文章:

text - 使用 Racket 编辑文件中的文本

lisp - Scheme (Lazy Racket) 自然数的无限列表

emacs - 使用 plt-r5rs 而不是 Racket 调用 Geiser?

scheme - 查找一个 s 表达式在另一个 s 表达式中出现的频率

webserver - 了解 Racket Web 框架中的发送/挂起/调度

encryption - AES 输出 block 大小

scheme - 什么是报价? (quote aaa) 和 aaa 彼此不同

list - 使用 Racket append 到列表变量

parsing - 在 Racket 方案中读取字符串循环

scheme - 控制台输出如何确定