Dashboard cleanup: Remove globals g_buildersThatFailedToLoad and g_staleBuilders
[WebKit-https.git] / Tools / TestResultServer / static-dashboards / loader_unittests.js
index 881e0179ad0bff596ddd648138d8a1709db7ec5f..86d7beec1bc7a24fa038802d83dae957fbc63348 100644 (file)
@@ -29,6 +29,7 @@
 module('loader');
 
 test('loading steps', 1, function() {
+    resetGlobals();
     var loadedSteps = [];
     var resourceLoader = new loader.Loader();
     function loadingStep1() {
@@ -53,8 +54,11 @@ test('loading steps', 1, function() {
     }
 });
 
-test('results files loading', 5, function() {
-    var expectedLoadedBuilders = ["WebKit Linux", "WebKit Win"];
+// Total number of assertions is 1 for the deepEqual of the builder lists
+// and then 2 per builder (one for ok, one for deepEqual of tests).
+test('results files loading', 11, function() {
+    resetGlobals();
+    var expectedLoadedBuilders =  ['WebKit Linux', 'WebKit Linux (dbg)', 'WebKit Mac10.7', 'WebKit Win', 'WebKit Win (dbg)'];
     var loadedBuilders = [];
     var resourceLoader = new loader.Loader();
     resourceLoader._loadNext = function() {
@@ -67,26 +71,23 @@ test('results files loading', 5, function() {
 
     var requestFunction = loader.request;
     loader.request = function(url, successCallback, errorCallback) {
-        var builderName = /builder=([\w ]+)&/.exec(url)[1];
+        var builderName = /builder=([\w ().]+)&/.exec(url)[1];
         loadedBuilders.push(builderName);
         successCallback({responseText: '{"version": 4, "' + builderName + '": {"secondsSinceEpoch": [' + Date.now() + '], "tests": {}}}'});
     }
 
-    g_builders = {"WebKit Linux": true, "WebKit Win": true};
-
-    builders.masters['ChromiumWebkit'] = {'tests': {'layout-tests': {builders: ["WebKit Linux", "WebKit Win"]}}};
     loadBuildersList('@ToT - chromium.org', 'layout-tests');
-
     try {
         resourceLoader._loadResultsFiles();
     } finally {
-        g_builders = undefined;
-        g_resultsByBuilder = {};
         loader.request = requestFunction;
     }
 });
 
 test('expectations files loading', 1, function() {
+    resetGlobals();
+    parseCrossDashboardParameters();
     var expectedLoadedPlatforms = ["chromium", "chromium-android", "efl", "efl-wk1", "efl-wk2", "gtk",
                                    "gtk-wk2", "mac", "mac-lion", "mac-snowleopard", "qt", "win", "wk2"];
     var loadedPlatforms = [];
@@ -109,10 +110,9 @@ test('expectations files loading', 1, function() {
 });
 
 test('results file failing to load', 2, function() {
-    // FIXME: loader shouldn't depend on state defined in dashboard_base.js.
-    g_buildersThatFailedToLoad = [];
-    g_builders = {};
-
+    resetGlobals();
+    loadBuildersList('@ToT - chromium.org', 'layout-tests');
+    
     var resourceLoader = new loader.Loader();
     var resourceLoadCount = 0;
     resourceLoader._handleResourceLoad = function() {
@@ -120,14 +120,37 @@ test('results file failing to load', 2, function() {
     }
 
     var builder1 = 'builder1';
-    g_builders[builder1] = true;
+    currentBuilders()[builder1] = true;
     resourceLoader._handleResultsFileLoadError(builder1);
 
     var builder2 = 'builder2';
-    g_builders[builder2] = true;
+    currentBuilders()[builder2] = true;
     resourceLoader._handleResultsFileLoadError(builder2);
 
-    deepEqual(g_buildersThatFailedToLoad, [builder1, builder2]);
+    deepEqual(resourceLoader._buildersThatFailedToLoad, [builder1, builder2]);
     equal(resourceLoadCount, 2);
 
-})
+});
+
+test('Default builder gets set.', 3, function() {
+    resetGlobals();
+    loadBuildersList('@ToT - chromium.org', 'layout-tests');
+    
+    var defaultBuilder = currentBuilderGroup().defaultBuilder();
+    ok(defaultBuilder, "Default builder should exist.");
+   
+    // Simulate error loading the default builder data, then make sure
+    // a new defaultBuilder is set, and isn't the now invalid one.
+    var resourceLoader = new loader.Loader();
+    resourceLoader._handleResultsFileLoadError(defaultBuilder);
+    var newDefaultBuilder = currentBuilderGroup().defaultBuilder();
+    ok(newDefaultBuilder, "There should still be a default builder.");
+    notEqual(newDefaultBuilder, defaultBuilder, "Default builder should not be the old default builder");
+});
+
+test('addBuilderLoadErrors', 1, function() {
+    var resourceLoader = new loader.Loader();
+    resourceLoader._buildersThatFailedToLoad = ['builder1', 'builder2'];
+    resourceLoader._staleBuilders = ['staleBuilder1'];
+    equal(resourceLoader._getLoadingErrorMessages(), 'ERROR: Failed to get data from builder1,builder2.<br>ERROR: Data from staleBuilder1 is more than 1 day stale.<br>');
+});
\ No newline at end of file