2017-07-28 10 views
1

私は、bazel restricted_to属性をテストに使用しようとしています。[bazel] restricted_to属性の使用

特定のcpu = buildでのみテストを実行します。これは多少複雑にするために

は、CPUの種類は当社

/tools/cpp/CROSSTOOL file (cpu=armhf-debian). 

で定義されている私は(私の最初の推測がちょうど見//cpu:armhf-debian、だったrestricted_toパラメータ の構文を推測して運がなかったしましたcpuパッケージの場合)

何か提案がありますか?

答えて

2

restricted_toに関するドキュメントや環境、環境、グループで動作するその他のルールはありません。主に、これは、それらが使用するユースケースがGoogleのリポジトリ設定に非常に固有であり、より柔軟なシステムに置き換えるプロセスにあるためです。

restricted_toを使用するには、いくつかの環境ルールを定義し、それらを含む環境グループを定義し、テスト環境の制限を指定し、最後に常に "--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」フラグに基づいて値をとります。選択に含まれるファイルを変更することにより、各CPU設定のテストに含まれるファイルを制御することができます。

明らかに、これらは同じパッケージ内にある必要はなく、通常のBazel可視性ルールが適用されます。 config_settingの例についてはBazelのsrc/BUILDを参照し、selectで使用する場合はsrc/test/cpp/BUILDを参照してください。

私たちは、Bazelの実行環境を記述して照会するためのより良い方法であるプラットフォームについて懸命に取り組んでいます。テスト準備が整うと、ドキュメントとブログ記事を確実に投稿します。

関連する問題