Things it might still be doing;
Something about pageheap checking on Windows
------------
# Disable pageheap checking except on Windows.
if sys.platform != 'win32':
options.enable_pageheap = False
------------
Nuking stale Chrome temporary files?
------------
# Nuke anything that appears to be stale chrome items in the temporary
# directory from previous test runs (i.e.- from crashes or unittest leaks).
slave_utils.RemoveChromeTemporaryFiles()
------------
Something with json_test_results?
------------
if options.json_test_results:
results_dir = options.results_directory
results_json = os.path.join(results_dir, "failing_results.json")
# If the json results file was not produced, then we produce no output
# file too and rely on a recipe to handle this as invalid result.
if os.path.isfile(results_json):
with open(results_json, 'rb') as f:
data = f.read()
# data is in the form of:
# ADD_RESULTS(<json object>);
# but use a regex match to also support a raw json object.
m = re.match(r'[^({]*' # From the beginning, take any except '(' or '{'
r'(?:'
r'\((.*)\);' # Expect '(<json>);'
r'|' # or
r'({.*})' # '<json object>'
r')$', data)
assert m is not None
data = m.group(1) or m.group(2)
json_data = json.loads(data)
assert isinstance(json_data, dict)
with open(options.json_test_results, 'wb') as f:
f.write(data)
------------
Adding the following extra arguments by default
------------
command = [run_blink_tests,
'--no-show-results',
'--full-results-html', # For the dashboards.
'--clobber-old-results', # Clobber test results before each run.
'--exit-after-n-failures', '5000',
'--exit-after-n-crashes-or-timeouts', '100',
]
------------
We don't actually run the wrapper on windows any more, we call out to run-webkit-tests directly. So I think it should be a simple matter of updating the recipe on the other platforms as well.
Alright - to be relatively cautious, we could incrementally remove things from layout_test_wrapper.py (listed in #1) before changing recipe_modules/chromium_tests/steps.py to not invoke it any more. (Does that seem too cautious?)
You don't need to worry about the pageheap check.
You should add the additional flags to steps.py.
Last, you should figure out how it's actually parsing the failed tests. I believe it is reading the failing_results.json file, which is a JSONP file, meaning that it is a json object wrapped in a JS function invocation, in this case "ADD_RESULTS({...})". I don't see where in the recipe code it's stripping off the ADD_RESULTS string, but it must be since it appears to work on windows. So, something must be working differently than I expect.
Comment 1 by tansell@chromium.org
, Feb 24 2017Things it might still be doing; Something about pageheap checking on Windows ------------ # Disable pageheap checking except on Windows. if sys.platform != 'win32': options.enable_pageheap = False ------------ Nuking stale Chrome temporary files? ------------ # Nuke anything that appears to be stale chrome items in the temporary # directory from previous test runs (i.e.- from crashes or unittest leaks). slave_utils.RemoveChromeTemporaryFiles() ------------ Something with json_test_results? ------------ if options.json_test_results: results_dir = options.results_directory results_json = os.path.join(results_dir, "failing_results.json") # If the json results file was not produced, then we produce no output # file too and rely on a recipe to handle this as invalid result. if os.path.isfile(results_json): with open(results_json, 'rb') as f: data = f.read() # data is in the form of: # ADD_RESULTS(<json object>); # but use a regex match to also support a raw json object. m = re.match(r'[^({]*' # From the beginning, take any except '(' or '{' r'(?:' r'\((.*)\);' # Expect '(<json>);' r'|' # or r'({.*})' # '<json object>' r')$', data) assert m is not None data = m.group(1) or m.group(2) json_data = json.loads(data) assert isinstance(json_data, dict) with open(options.json_test_results, 'wb') as f: f.write(data) ------------ Adding the following extra arguments by default ------------ command = [run_blink_tests, '--no-show-results', '--full-results-html', # For the dashboards. '--clobber-old-results', # Clobber test results before each run. '--exit-after-n-failures', '5000', '--exit-after-n-crashes-or-timeouts', '100', ] ------------