123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- // Copyright (C) 2012 Google Inc. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
- // met:
- //
- // * Redistributions of source code must retain the above copyright
- // notice, this list of conditions and the following disclaimer.
- // * Redistributions in binary form must reproduce the above
- // copyright notice, this list of conditions and the following disclaimer
- // in the documentation and/or other materials provided with the
- // distribution.
- // * Neither the name of Google Inc. nor the names of its
- // contributors may be used to endorse or promote products derived from
- // this software without specific prior written permission.
- //
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- // @fileoverview Base JS file for pages that want to parse the results JSON
- // from the testing bots. This deals with generic utility functions, visible
- // history, popups and appending the script elements for the JSON files.
- //////////////////////////////////////////////////////////////////////////////
- // CONSTANTS
- //////////////////////////////////////////////////////////////////////////////
- var GTEST_EXPECTATIONS_MAP_ = {
- 'P': 'PASS',
- 'F': 'FAIL',
- 'N': 'NO DATA',
- 'X': 'SKIPPED'
- };
- var LAYOUT_TEST_EXPECTATIONS_MAP_ = {
- 'P': 'PASS',
- 'N': 'NO DATA',
- 'X': 'SKIP',
- 'T': 'TIMEOUT',
- 'F': 'TEXT',
- 'C': 'CRASH',
- 'I': 'IMAGE',
- 'Z': 'IMAGE+TEXT',
- // We used to glob a bunch of expectations into "O" as OTHER. Expectations
- // are more precise now though and it just means MISSING.
- 'O': 'MISSING'
- };
- // Keys in the JSON files.
- var WONTFIX_COUNTS_KEY = 'wontfixCounts';
- var FIXABLE_COUNTS_KEY = 'fixableCounts';
- var DEFERRED_COUNTS_KEY = 'deferredCounts';
- var WONTFIX_DESCRIPTION = 'Tests never to be fixed (WONTFIX)';
- var FIXABLE_DESCRIPTION = 'All tests for this release';
- var DEFERRED_DESCRIPTION = 'All deferred tests (DEFER)';
- var FIXABLE_COUNT_KEY = 'fixableCount';
- var ALL_FIXABLE_COUNT_KEY = 'allFixableCount';
- var CHROME_REVISIONS_KEY = 'chromeRevision';
- var WEBKIT_REVISIONS_KEY = 'webkitRevision';
- var TIMESTAMPS_KEY = 'secondsSinceEpoch';
- var BUILD_NUMBERS_KEY = 'buildNumbers';
- var TESTS_KEY = 'tests';
- var ONE_DAY_SECONDS = 60 * 60 * 24;
- var ONE_WEEK_SECONDS = ONE_DAY_SECONDS * 7;
- // These should match the testtype uploaded to webkit-test-results.appspot.com.
- // See http://webkit-test-results.appspot.com/testfile.
- var TEST_TYPES = [
- 'layout-tests'
- ];
- // Enum for indexing into the run-length encoded results in the JSON files.
- // 0 is where the count is length is stored. 1 is the value.
- var RLE = {
- LENGTH: 0,
- VALUE: 1
- }
- function isFailingResult(value)
- {
- return 'FSTOCIZ'.indexOf(value) != -1;
- }
- // Generic utility functions.
- function $(id)
- {
- return document.getElementById(id);
- }
- function currentBuilderGroupCategory()
- {
- return LAYOUT_TESTS_BUILDER_GROUPS;
- }
- function currentBuilderGroupName()
- {
- return g_history.crossDashboardState.group || Object.keys(currentBuilderGroupCategory())[0];
- }
- function currentBuilderGroup()
- {
- return currentBuilderGroupCategory()[currentBuilderGroupName()];
- }
- function currentBuilders()
- {
- return currentBuilderGroup().builders;
- }
- function isTipOfTreeWebKitBuilder()
- {
- return true;
- }
- var g_resultsByBuilder = {};
- var g_expectationsByPlatform = {};
- function isFlakinessDashboard()
- {
- return string.endsWith(window.location.pathname, 'flakiness_dashboard.html');
- }
- // Create a new function with some of its arguements
- // pre-filled.
- // Taken from goog.partial in the Closure library.
- // @param {Function} fn A function to partially apply.
- // @param {...*} var_args Additional arguments that are partially
- // applied to fn.
- // @return {!Function} A partially-applied form of the function bind() was
- // invoked as a method of.
- function partial(fn, var_args)
- {
- var args = Array.prototype.slice.call(arguments, 1);
- return function() {
- // Prepend the bound arguments to the current arguments.
- var newArgs = Array.prototype.slice.call(arguments);
- newArgs.unshift.apply(newArgs, args);
- return fn.apply(this, newArgs);
- };
- };
- // Returns the appropriate expectations map for the current testType.
- function expectationsMap()
- {
- return g_history.isLayoutTestResults() ? LAYOUT_TEST_EXPECTATIONS_MAP_ : GTEST_EXPECTATIONS_MAP_;
- }
|