Search the parameterized portion of test name non-greedy

Ensure we find the first occurrence of '[' as the start of
the parameterization.

Test: unit tests
Bug: 154400176
Change-Id: I4cfb00060d9dcd8d698d18a6700c4f4a0968ab80
diff --git a/test_result_interfaces/com/android/tradefed/result/TestDescription.java b/test_result_interfaces/com/android/tradefed/result/TestDescription.java
index 265167d..5b149e2 100644
--- a/test_result_interfaces/com/android/tradefed/result/TestDescription.java
+++ b/test_result_interfaces/com/android/tradefed/result/TestDescription.java
@@ -28,7 +28,7 @@
 public final class TestDescription implements Serializable {
 
     /** Regex for method parameterized. For example: testName[0] */
-    public static final Pattern PARAMETERIZED_TEST_REGEX = Pattern.compile("(.*)?\\[(.*)\\]$");
+    public static final Pattern PARAMETERIZED_TEST_REGEX = Pattern.compile("([^\\[]+)\\[(.*)\\]$");
 
     private final String mClassName;
     private final String mTestName;
diff --git a/tests/src/com/android/tradefed/result/TestDescriptionTest.java b/tests/src/com/android/tradefed/result/TestDescriptionTest.java
index 4a79d20..cae75df 100644
--- a/tests/src/com/android/tradefed/result/TestDescriptionTest.java
+++ b/tests/src/com/android/tradefed/result/TestDescriptionTest.java
@@ -91,5 +91,13 @@
         mDescription = new TestDescription("className", "testName[key:22]");
         assertEquals("testName[key:22]", mDescription.getTestName());
         assertEquals("testName", mDescription.getTestNameWithoutParams());
+
+        mDescription =
+                new TestDescription(
+                        "className", "testTransitions[BluetoothRouteTestParameters{key ='[]'}]");
+        assertEquals(
+                "testTransitions[BluetoothRouteTestParameters{key ='[]'}]",
+                mDescription.getTestName());
+        assertEquals("testTransitions", mDescription.getTestNameWithoutParams());
     }
 }