2014-11-22 45 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