Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(681)

Unified Diff: build/android/pylib/instrumentation/instrumentation_test_instance.py

Issue 2935503002: List Java Instru Test Information From JUnit Runner (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/pylib/instrumentation/instrumentation_test_instance.py
diff --git a/build/android/pylib/instrumentation/instrumentation_test_instance.py b/build/android/pylib/instrumentation/instrumentation_test_instance.py
index 6f31a33008538c3add76dfc29129a79251cfa10c..7092bfd60e777b39f99b99062f82f006ac25e59a 100644
--- a/build/android/pylib/instrumentation/instrumentation_test_instance.py
+++ b/build/android/pylib/instrumentation/instrumentation_test_instance.py
@@ -47,6 +47,9 @@ _EXTRA_DRIVER_TARGET_CLASS = (
_EXTRA_TIMEOUT_SCALE = (
'org.chromium.test.driver.OnDeviceInstrumentationDriver.TimeoutScale')
+_WEBVIEW_JUNIT4_PARAMETERIZATION = 'WebViewParameterization'
+_WEBVIEW_JUNIT4_SKIP_PARAMETERIZATION = 'SkipWebViewParameterization'
+
_PARAMETERIZED_TEST_ANNOTATION = 'ParameterizedTest'
_PARAMETERIZED_TEST_SET_ANNOTATION = 'ParameterizedTest$Set'
_NATIVE_CRASH_RE = re.compile('(process|native) crash', re.IGNORECASE)
@@ -236,6 +239,12 @@ def FilterTests(tests, test_filter=None, annotations=None,
GetUniqueTestName(t, sep='.')
]
+ if t['is_junit4'] and t.get('webview_parameterization'):
jbudorick 2017/06/12 13:21:43 I'm not sure why this is necessary beyond what Get
+ names += [
+ GetTestNameWithoutParameterPostfix(t, sep='.'),
+ GetTestNameWithoutParameterPostfix(unqualified_class_test, sep='.')
+ ]
+
pattern_groups = test_filter.split('-')
if len(pattern_groups) > 1:
negative_filter = pattern_groups[1]
@@ -430,6 +439,28 @@ def GetTestName(test, sep='#'):
return '%s%s%s' % (test['class'], sep, test['method'])
+def GetTestNameWithoutParameterPostfix(
+ test, sep='#', parameter_postfix='__'):
+ """Gets the name of the given JUnit4 test withouth parameter postfix.
+
+ For most WebView JUnit4 javatests, each test is parameterizatized with
+ "__sandboxed_mode" to run in both non-sandboxed mode and sandboxed mode.
+
+ This function returns the name of the test without parameterization
+ so test filters can match both parameterized and non-parameterized tests.
+
+ Args:
+ test: the instrumentation test dict.
+ sep: the character(s) that should join the class name and the method name.
+ parameterization_sep: the character(s) that seperate method name and method
+ parameterization postfix.
+ Returns:
+ The test name without parameter postfix as a string.
+ """
+ name = GetTestName(test, sep=sep)
+ return name.split(parameter_postfix)[0]
+
+
def GetUniqueTestName(test, sep='#'):
"""Gets the unique name of the given test.
@@ -859,13 +890,21 @@ class InstrumentationTestInstance(test_instance.TestInstance):
def _ParametrizeTestsWithFlags(self, tests):
new_tests = []
for t in tests:
- parameters = ParseCommandLineFlagParameters(t['annotations'])
- if parameters:
- t['flags'] = parameters[0]
- for p in parameters[1:]:
- parameterized_t = copy.copy(t)
- parameterized_t['flags'] = p
- new_tests.append(parameterized_t)
+ if (_WEBVIEW_JUNIT4_PARAMETERIZATION in t['annotations']
jbudorick 2017/06/12 13:21:43 This is too webview-specific. Let's talk about gen
+ and _WEBVIEW_JUNIT4_SKIP_PARAMETERIZATION not in t['annotations']
+ and t['is_junit4']):
+ parameterized_t = copy.copy(t)
+ parameterized_t['webview_parameterization'] = True
+ parameterized_t['method'] += '__sandboxed_mode'
+ new_tests.append(parameterized_t)
+ else:
+ parameters = ParseCommandLineFlagParameters(t['annotations'])
+ if parameters:
+ t['flags'] = parameters[0]
+ for p in parameters[1:]:
+ parameterized_t = copy.copy(t)
+ parameterized_t['flags'] = p
+ new_tests.append(parameterized_t)
return tests + new_tests
def GetDriverEnvironmentVars(
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698