#文档 #CI #代码片段 #提取 #Python #文件 #上下文

应用 blocktest

使用 Sublime Text 语法进行高质量语法高亮和代码智能的库

2 个版本

使用旧的 Rust 2015

0.1.1 2018 年 5 月 8 日
0.1.0 2018 年 2 月 26 日

#59 in #代码片段

MIT 许可证

11KB
148 代码行

blocktest 构建状态 Crates.io

blocktest 是一个用于标记(例如 Markdown 或 reStructuredText)代码块的 "预处理器"。它允许您在不重复工作的情况下保持代码和散文的分离。这个想法很简单:blocktest 从更大的测试上下文中提取您的代码示例,并将其添加到用户指定的位置。

例如,假设您正在编写这个 spaCy 文档的部分。在这个例子中,您想在说明中包含以下 Python 代码片段

doc = nlp(u'An example sentence. Another sentence.')
assert (doc[0].text, doc[0].head.tag_) == ('An', 'NN')

使用 blocktest,您需要两个文件

  1. 包含代码片段的 Python 测试文件

    # test_language.py
    import spacy
    
    nlp = spacy.load('en')
    
    def test_example():
        doc = nlp(u'An example sentence. Another sentence.')  # example1 begin
        assert (doc[0].text, doc[0].head.tag_) == ('An', 'NN')  # example1 end
    
  2. 指定如何找到代码片段的标记文件

    <!-- example.md -->
    
    ```python
    {{< id="example1" src="test_language.py" >}}
    ```
    

blocktest 将扫描 example.md,寻找 块定义,这些定义指定每个代码片段的唯一 ID 和源文件。然后它将从源文件中提取代码片段(由 <id> begin / <id> end 注释指示),并将其替换回您的标记。这允许您为代码示例编写全面的测试套件,而无需维护多个相同代码片段的副本。

入门

依赖项

~4–11MB
~116K SLoC