def _write_json_files(self, summarized_full_results, summarized_failing_results, initial_results, running_all_tests): _log.debug("Writing JSON files in %s.", self._results_directory) # FIXME: Upload stats.json to the server and delete times_ms. times_trie = json_results_generator.test_timings_trie(initial_results.results_by_name.values()) times_json_path = self._filesystem.join(self._results_directory, 'times_ms.json') json_results_generator.write_json(self._filesystem, times_trie, times_json_path) # Save out the times data so we can use it for --fastest in the future. if running_all_tests: bot_test_times_path = self._port.bot_test_times_path() self._filesystem.maybe_make_directory(self._filesystem.dirname(bot_test_times_path)) json_results_generator.write_json(self._filesystem, times_trie, bot_test_times_path) stats_trie = self._stats_trie(initial_results) stats_path = self._filesystem.join(self._results_directory, 'stats.json') self._filesystem.write_text_file(stats_path, json.dumps(stats_trie)) full_results_path = self._filesystem.join(self._results_directory, 'full_results.json') json_results_generator.write_json(self._filesystem, summarized_full_results, full_results_path) full_results_jsonp_path = self._filesystem.join(self._results_directory, 'full_results_jsonp.js') json_results_generator.write_json(self._filesystem, summarized_full_results, full_results_jsonp_path, callback='ADD_FULL_RESULTS') full_results_path = self._filesystem.join(self._results_directory, 'failing_results.json') # We write failing_results.json out as jsonp because we need to load it # from a file url for results.html and Chromium doesn't allow that. json_results_generator.write_json(self._filesystem, summarized_failing_results, full_results_path, callback='ADD_RESULTS') # Write out the JSON files suitable for other tools to process. # As the output can be quite large (as there are 60k+ tests) we also # support only outputting the failing results. if self._options.json_failing_test_results: # FIXME(tansell): Make sure this includes an *unexpected* results # (IE Passing when expected to be failing.) json_results_generator.write_json(self._filesystem, summarized_failing_results, self._options.json_failing_test_results) if self._options.json_test_results: json_results_generator.write_json(self._filesystem, summarized_full_results, self._options.json_test_results) _log.debug('Finished writing JSON files.')
def test_test_timings_trie(self): individual_test_timings = [] individual_test_timings.append( json_results_generator.TestResult('foo/bar/baz.html', elapsed_time=1.2)) individual_test_timings.append( json_results_generator.TestResult('bar.html', elapsed_time=0.0001)) trie = json_results_generator.test_timings_trie( individual_test_timings) expected_trie = { 'bar.html': 0, 'foo': { 'bar': { 'baz.html': 1200, } } } self.assertEqual(json.dumps(trie), json.dumps(expected_trie))