blob: 05ec0b439a63ba737b01d2f88e9710f33009c03c [file] [log] [blame]
"""Aspect to validate that only the specified targets are tagged as flaky.
When bazel is invoked with this aspect attached, it validates that only
the allowlisted targets below can set "flaky" to true.
"""
APPROVED_FLAKY_TESTS = [
"//tools/base/build-system/integration-test/application:tests__GradlePluginMemoryLeakTest", # b/153972155
"//tools/base/build-system/integration-test/connected:UtpConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:TestWithSameDepAsAppConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:TestingSupportLibraryConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:SigningConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:ShardingConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:SeparateTestWithMinificationButNoObfuscationConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:SeparateTestWithAarDependencyConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:SeparateTestModuleWithMinifiedAppConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:SeparateTestModuleConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:SameNamedLibsConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:ResValueTypeConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:RenderscriptNdkConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:PkgOverrideConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:ParentLibsConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:Overlay3ConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:Overlay2ConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:Overlay1ConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:NoSplitNdkVariantsConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:NdkSanAngelesConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:NdkLibPrebuiltsConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:NdkJniLibConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:NdkConnectedCheckTest", # b/148626301
"//tools/base/build-system/integration-test/connected:MultiresConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:MultiProjectConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:MultiDexWithLibConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:MultiDexConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:MlModelBindingConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:MinifyLibConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:MinifyConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:MigratedConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:LibTestDepConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:LibsTestConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:LibMinifyLibDepConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:LibMinifyJarDepConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:KotlinAppConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:JarsInLibrariesConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:JacocoConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:FlavorsConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:FlavorlibConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:FlavoredlibConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:FlavoredConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:DynamicFeatureConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:DependenciesConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:DensitySplitConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:DataBindingIntegrationTestAppsConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:DataBindingExternalArtifactDependencyConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:D8DesugaringConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:CoreLibraryDesugarConversionConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:ComposeHelloWorldConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:CmakeJniLibConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:BasicConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:ApplibtestConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:AttrOrderConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:ApiConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:AnnotationProcessorConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:AndroidTestResourcesConnectedTest", # b/148626301
"//tools/base/build-system/integration-test/connected:AdditionalTestOutputConnectedTest", # b/148626301
"//tools/adt/idea/adt-ui:intellij.android.adt.ui_tests", # b/172521726
"//tools/base/ddmlib:studio.android.sdktools.ddmlib.integration.tests_tests", # b/175217297
]
FAILURE_MESSAGE = """Test target {} has flaky set to true.
Only approved targets can set flaky attribute to true (b/159928949).
If this is intentional, contact android-devtools-infra@ to approve the target."""
IGNORE_TAG = []
def _has_intersect(this, other):
for item in this:
if item in other:
return True
return False
def _limit_flaky_tests_impl(target, ctx):
if ctx.rule.kind.endswith("_test"):
if ctx.rule.attr.flaky and str(ctx.label) not in APPROVED_FLAKY_TESTS:
if not _has_intersect(IGNORE_TAG, ctx.rule.attr.tags):
fail(FAILURE_MESSAGE.format(str(ctx.label)))
return []
limit_flaky_tests = aspect(
implementation = _limit_flaky_tests_impl,
attr_aspects = [],
)