我正在嘗試使用bazel restricted_to屬性進行測試。使用[bazel] restricted_to屬性
我希望測試只能在特定的cpu = build上運行。
爲了使這個稍微複雜一些,CPU類型在我們
/tools/cpp/CROSSTOOL file (cpu=armhf-debian).
我已經沒有運氣猜測restricted_to參數 的語法(我的第一個猜測是//cpu:armhf-debian
定義,它只是看着對於CPU封裝)
有什麼建議嗎?
我正在嘗試使用bazel restricted_to屬性進行測試。使用[bazel] restricted_to屬性
我希望測試只能在特定的cpu = build上運行。
爲了使這個稍微複雜一些,CPU類型在我們
/tools/cpp/CROSSTOOL file (cpu=armhf-debian).
我已經沒有運氣猜測restricted_to參數 的語法(我的第一個猜測是//cpu:armhf-debian
定義,它只是看着對於CPU封裝)
有什麼建議嗎?
關於restricted_to以及其他適用於environment_group和environment_group的規則,沒有太多文檔。這主要是因爲它的用例對於Google的存儲庫設置非常具體,我們正在用更靈活的系統替換它們。
要使用restricted_to,您需要定義幾個環境規則和一個environment_group來包含它們,然後指定測試限制在哪個環境,最後始終使用「--target_environment」標誌指定當前環境組。這將是這個樣子:
environment(name = "x86")
environment(name = "ppc")
environment_group(
name = "cpus",
defaults = [":x86"],
environments = [
":x86",
":ppc",
])
cc_test(
name = "test",
other config
restricted_to = [":ppc"],)
然後,您可以運行測試像這樣:
bazel test --target_environment=//:ppc //:test
,以獲得環境檢查。
這並不是非常有用,因爲運行測試的人還必須正確設置「--target_environment」。
一種更好的方式來禁用測試,使用目前支持的代碼,是用config_setting和選擇,像這樣:
config_setting(
name = "k8",
values = {"cpu": "k8"})
config_setting(
name = "ppc",
values = {"cpu":, "ppc")
cc_test(
name = "test",
other config
srcs = [other sources] +
select({
"//:x86": ["x86_test_src.cpp"],
"//:ppc": ["ppc_test_src.cpp"],
"//conditions:default": ["default_test_src.cpp"],
})
config_setting將基於當前的「--cpu」標誌的值。通過更改select中包含的文件,可以控制測試中包含的每個cpu設置的文件。
很明顯,這些不必位於同一個包中,而是應用通常的Bazel可見性規則。有關config_setting的示例,請參閱Bazel的src/BUILD;有關在select中使用它的示例,請參見src/test/cpp/BUILD。
我們在平臺上努力工作,這是一種更好的方式來描述和查詢Bazel的執行環境,我們將確保發佈文檔和博客文章,以便人們可以測試。