2014-11-22 62 views
-1

我想对我的防锈标准库副本进行一些更改,然后在我更改的源文件中运行测试。我不需要测试编译器本身。我怎么能做到这一点,而不需要测试很多我没有改变也不关心的事情?如何测试防锈标准库?

这是我已经尝试过的一些事情。笔记 - 我想玩的具体文件是libstd/io/net/pipes.rs锈0.12.0。

  1. 我试过rustc --test pipes.rs - 导入和选项设置不正确,看起来很多,而且结果很多。
  2. 正在关注the rust test suite documentation,我试过make check-stage1-std NO_REBUILD=1,但是这次失败的结果是“找不到为`green`的箱子”。 #rust-internals irc频道上的一个人告诉我,“进行check-stage1的时候经常会中断,因为它不是运行测试的'官方方式'。”
  3. 该频道上的另一个人建议make check-stage0-std,它似乎检查libstd,但不会限制对我更改的文件进行测试,即使我使用锈蚀测试套件文档中指定的TESTNAME标志也是如此。

回答

1

make check-stage1-std NO_REBUILD=1... check-stage2-std ...应该可以工作,如果您以前完成了完整构建。他们只是直接建立测试跑步者,而没有做其余的引导。

在任何情况下,完整的std测试跑步机始终是建立的,因为,正如你所注意到的,进口等被设置为完整的箱子。 TESTNAME是限制运行哪些测试的正确方法,但无法限制测试的构建。

另一种方法是将测试/相关代码拉入外部文件,另一种方法是通过在libstd/lib.rs上手动运行rustc来构建测试运行器:rustc --test lib.rs。你可以编辑其余的箱子,以删除你不感兴趣的测试/代码。

+0

这里有很多建议;我会试着解析它们。 1.“make check-stage1-std NO_REBUILD = 1 ...应该可以工作,如果你之前完成了完整的构建。”什么是“完整”构建?我运行了“全部制造”,而这对我来说不起作用,正如我在#2中提到的那样。 – jbapple 2014-11-22 05:27:30

+0

2.“make check-stage2-std NO_REBUILD = 1应该可以工作,如果以前完成了完整的构建”。这似乎确实“起作用”,但它的测试方式比我想测试的更多; TESTNAME似乎没有任何效果。 – jbapple 2014-11-22 05:30:24

+0

3.“没有办法限制测试建立。”标准库开发人员每次进行更改时都会经历整个测试套件吗?也许还有另一种方法来获得我想要的东西。我可以说服编译器设置导入来使用已经构建的文件,而不是“限制”构建哪些测试?如何libstd开发人员做到这一点? – jbapple 2014-11-22 05:34:37