Il n'y a pas beaucoup de documentation sur restricted_to, et les autres règles avec lesquelles il travaille, environment et environment_group. Principalement parce que le cas d'utilisation est très spécifique à la configuration du référentiel de Google, et nous sommes en train de les remplacer par un système plus flexible. Pour utiliser restricted_to, vous devez définir plusieurs règles d'environnement et un groupe d'environnement pour les contenir, puis spécifier l'environnement auquel le test est restreint et enfin utiliser l'indicateur "--target_environment" pour spécifier le courant. groupe d'environnement. Cela ressemblerait à quelque chose comme ceci:
environment(name = "x86")
environment(name = "ppc")
environment_group(
name = "cpus",
defaults = [":x86"],
environments = [
":x86",
":ppc",
])
cc_test(
name = "test",
other config
restricted_to = [":ppc"],)
Vous pouvez ensuite exécuter le test comme si:
bazel test --target_environment=//:ppc //:test
pour obtenir l'environnement de vérification.
Ceci n'est pas très utile, car celui qui exécute le test doit également se rappeler de définir correctement "--target_environment".
Une meilleure façon de désactiver le test, en utilisant le code actuellement pris en charge, est d'utiliser config_setting et sélectionnez, comme ceci:
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 prendra une valeur basée sur le drapeau actuel « --cpu ». En changeant les fichiers inclus dans la sélection, vous pouvez contrôler quels fichiers sont inclus dans le test pour chaque paramètre CPU.
De toute évidence, ils ne doivent pas nécessairement se trouver dans le même package et les règles habituelles de visibilité Bazel s'appliquent. Voir src/BUILD de Bazel pour un exemple de config_setting, et src/test/cpp/BUILD pour un exemple d'utilisation dans select. Nous travaillons dur sur les plates-formes, ce qui est une meilleure façon de décrire et d'interroger l'environnement d'exécution de Bazel, et nous nous assurerons de publier une documentation et un article de blog lorsque les gens pourront les tester.