From bda151cd67aed5a9191ff8dbca4d961b74a65bc9 Mon Sep 17 00:00:00 2001 From: Xiao Ma Date: Wed, 27 Aug 2025 16:39:56 +0900 Subject: [PATCH] Ensure flag restoration logic is always executed in SetFeatureFlagsRule. `base.evaluate()` can be interrupted by other rules in the chain, such as DevSdkIgnoreRule, if an assumption fails. This prevents SetFeatureFlagsRule from executing its flag value restoration logic, leading to an inconsistent state. This change ensures the restoration logic runs regardless of exceptions. Flag: EXEMPT mainline Bug: 440618747 Test: TH Change-Id: Iba4483b45f11aeed8ae565f8080b2bebd299046c --- .../com/android/testutils/SetFeatureFlagsRule.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/staticlibs/testutils/devicetests/com/android/testutils/SetFeatureFlagsRule.kt b/staticlibs/testutils/devicetests/com/android/testutils/SetFeatureFlagsRule.kt index 0b239b4b29..1211260a6d 100644 --- a/staticlibs/testutils/devicetests/com/android/testutils/SetFeatureFlagsRule.kt +++ b/staticlibs/testutils/devicetests/com/android/testutils/SetFeatureFlagsRule.kt @@ -16,6 +16,7 @@ package com.android.testutils.com.android.testutils +import com.android.testutils.tryTest import org.junit.rules.TestRule import org.junit.runner.Description import org.junit.runners.model.Statement @@ -90,10 +91,12 @@ class SetFeatureFlagsRule( // Execute the test method, which includes methods annotated with // @Before, @Test and @After. - base.evaluate() - - valuesToBeRestored.forEach { - setFlagsMethod(it.key, it.value) + tryTest { + base.evaluate() + } cleanup { + valuesToBeRestored.forEach { + setFlagsMethod(it.key, it.value) + } } } }