aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.google3
-rw-r--r--src/main/java/junitparams/naming/MacroSubstitutionNamingStrategy.java20
2 files changed, 17 insertions, 6 deletions
diff --git a/README.google b/README.google
index 47541ba..a1ef97e 100644
--- a/README.google
+++ b/README.google
@@ -18,3 +18,6 @@ Local Modifications:
and prevent use of @TestCaseName.
Ignore tests broken by the above change.
38419944 - Fix sharding on CTS.
+ 36541809 - Partially revert 36541809 to allow @TestCaseName to be
+ used as long as it generates a name that is compatible
+ with CTS and AJUR.
diff --git a/src/main/java/junitparams/naming/MacroSubstitutionNamingStrategy.java b/src/main/java/junitparams/naming/MacroSubstitutionNamingStrategy.java
index 1bdcafb..3386e51 100644
--- a/src/main/java/junitparams/naming/MacroSubstitutionNamingStrategy.java
+++ b/src/main/java/junitparams/naming/MacroSubstitutionNamingStrategy.java
@@ -23,6 +23,9 @@ public class MacroSubstitutionNamingStrategy implements TestCaseNamingStrategy {
this.method = testMethod;
}
+ // Android-added: allowable test names
+ private static final Pattern ALLOWABLE_TEST_NAMES = Pattern.compile("\\w+(\\[\\d+])?");
+
@Override
public String getTestCaseName(int parametersIndex, Object parameters) {
TestCaseName testCaseName = method.getAnnotation(TestCaseName.class);
@@ -30,6 +33,16 @@ public class MacroSubstitutionNamingStrategy implements TestCaseNamingStrategy {
String template = getTemplate(testCaseName);
String builtName = buildNameByTemplate(template, parametersIndex, parameters);
+ // Android-changed: CTS and AndroidJUnitRunner rely on specific format to test names,
+ // changing them will prevent CTS and AndroidJUnitRunner from working properly;
+ // see b/36541809
+ if (!ALLOWABLE_TEST_NAMES.matcher(builtName).matches()) {
+ throw new IllegalStateException(String.format(
+ "@TestCaseName(\"%s\") not currently supported as it generated a test name of"
+ + " \"%s\" which will not work properly in CTS, must match \"%s\"",
+ template, builtName, ALLOWABLE_TEST_NAMES));
+ }
+
if (builtName.trim().isEmpty()) {
return buildNameByTemplate(DEFAULT_TEMPLATE, parametersIndex, parameters);
} else {
@@ -39,12 +52,7 @@ public class MacroSubstitutionNamingStrategy implements TestCaseNamingStrategy {
private String getTemplate(TestCaseName testCaseName) {
if (testCaseName != null) {
- // Android-changed: CTS and AndroidJUnitRunner rely on specific format to test names,
- // changing them will prevent CTS and AndroidJUnitRunner from working properly;
- // see b/36541809
- throw new IllegalStateException(
- "@TestCaseName not currently supported as it breaks running tests in CTS");
- // return testCaseName.value();
+ return testCaseName.value();
}
return DEFAULT_TEMPLATE;