diff options
author | Paul Duffin <paulduffin@google.com> | 2022-04-20 16:55:13 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-04-20 16:55:13 +0000 |
commit | cd5c1d11b3d4c2977891e1f426d5c093a374f4d7 (patch) | |
tree | 74e54202b20114ddf260e2fe8c3515667eb96c1f | |
parent | 97f64d942cc633f41faa687306ec5d4a78191985 (diff) | |
parent | 7e97deb1b6e94e0c2a634cc812f6303f23737af2 (diff) | |
download | junit-params-cd5c1d11b3d4c2977891e1f426d5c093a374f4d7.tar.gz |
Allow @TestCaseName to be for names that are compatible with CTS/AJUR am: deb706635e am: a4ec4e26a9 am: 97bb2c51d7 am: 7e97deb1b6
Original change: https://android-review.googlesource.com/c/platform/external/junit-params/+/2059654
Change-Id: Ifa42db5172e95ef16fb4324a657a8dbe407065fc
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | README.google | 3 | ||||
-rw-r--r-- | src/main/java/junitparams/naming/MacroSubstitutionNamingStrategy.java | 20 |
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; |