Merge pull request #12 from mozilla/travis-n-tests

Travis n tests
This commit is contained in:
Mauro Doglio 2013-09-11 02:31:05 -07:00
Родитель ca2a3fd1cb 333a55a1c5
Коммит fc93a34f34
33 изменённых файлов: 11757 добавлений и 143 удалений

22
.travis-ui.yml Executable file
Просмотреть файл

@ -0,0 +1,22 @@
language: node_js
node_js:
- 0.8
before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- npm install --quiet -g karma
- cd ./webapp
- ./scripts/web-server.js > /dev/null &
- sleep 1 # give server time to start
script:
- karma start config/karma.conf.js --no-auto-watch --single-run --reporters=dots --browsers=Firefox
# Do not run these on the travis server at this time.
# The end to end tests require the service to be running, but travis can't
# start the service for us. So we would have to have the default point to
# a dedicated dev service instance that is reach-able by travis. However, we
# require /etc/hosts to have an entry at this point to reach our current dev
# server. So these tests should be run only locally for now.
# - karma start config/karma-e2e.conf.js --reporters=dots --browsers=Firefox

Просмотреть файл

@ -1,22 +1,35 @@
basePath = '../';
module.exports = function (config) {
config.set({
frameworks: ['ng-scenario'],
files = [
ANGULAR_SCENARIO,
ANGULAR_SCENARIO_ADAPTER,
'test/e2e/**/*.js'
];
basePath: '../',
autoWatch = false;
files: [
'test/e2e/**/*.js',
browsers = ['Chrome'];
// fixtures
{pattern: 'test/mock/*.json', watched: true, served: true, included: false}
],
singleRun = true;
autoWatch: false,
singleRun: true,
proxies = {
'/': 'http://localhost:8000/'
};
junitReporter = {
outputFile: 'test_out/e2e.xml',
suite: 'e2e'
browsers: ['Firefox'],
proxies: {
'/': 'http://localhost:8000/'
},
urlRoot: '/',
plugins : [
'karma-junit-reporter',
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-jasmine',
'karma-ng-scenario'
],
junitReporter: {
outputFile: 'test_out/e2e.xml',
suite: 'e2e'
}
});
};

Просмотреть файл

@ -1,30 +1,37 @@
frameworks = ['jasmine'];
module.exports = function (config) {
config.set({
frameworks: ['jasmine'],
basePath = '../';
basePath: '../',
files = [
JASMINE,
JASMINE_ADAPTER,
'app/vendor/angular/angular.js',
'app/vendor/angular/angular-*.js',
'app/vendor/*.js',
'app/js/**/*.js',
'app/js/controllers/**/*.js',
'test/vendor/angular/angular-mocks.js',
'test/vendor/jquery-2.0.3.js',
'test/vendor/jasmine-jquery.js',
'test/unit/**/*.js',
files: [
'app/vendor/angular/angular.js',
'app/vendor/angular/angular-*.js',
'app/vendor/*.js',
'app/js/**/*.js',
'app/js/controllers/**/*.js',
'test/vendor/angular/angular-mocks.js',
'test/vendor/jquery-2.0.3.js',
'test/vendor/jasmine-jquery.js',
'test/unit/**/*.js',
// fixtures
{pattern: 'app/resources/*.json', watched: true, served: true, included: false}
];
// fixtures
{pattern: 'test/mock/*.json', watched: true, served: true, included: false}
],
autoWatch = false;
singleRun = true;
autoWatch: false,
singleRun: true,
browsers = ['Firefox'];
browsers: ['Firefox'],
junitReporter = {
outputFile: 'test_out/unit.xml',
suite: 'unit'
junitReporter: {
outputFile: 'test_out/unit.xml',
suite: 'unit'
},
reporters: ['progress', 'coverage'],
preprocessors: {
'app/js/**/*.js': ['coverage']
}
});
};

Просмотреть файл

@ -3,7 +3,7 @@
<head>
<title>End2end Test Runner</title>
<meta charset="utf-8">
<script src="../lib/angular/angular-scenario.js" ng-autotest></script>
<script src="../vendor/angular/angular-scenario.js" ng-autotest></script>
<script src="scenarios.js"></script>
</head>
<body>

Просмотреть файл

@ -2,44 +2,29 @@
/* http://docs.angularjs.org/guide/dev_guide.e2e-testing */
describe('my app', function() {
describe('treeherder', function() {
beforeEach(function() {
browser().navigateTo('../../app/index.html');
browser().navigateTo('app/index.html');
});
it('should automatically redirect to /view1 when location hash/fragment is empty', function() {
expect(browser().location().url()).toBe("/view1");
it('should automatically redirect to /jobs when location hash/fragment is empty', function() {
expect(browser().location().url()).toBe("/jobs");
});
describe('view1', function() {
beforeEach(function() {
browser().navigateTo('#/view1');
browser().navigateTo('#/jobs');
});
it('should render view1 when user navigates to /view1', function() {
expect(element('[ng-view] p:first').text()).
toMatch(/partial for view 1/);
it('should render jobs when user navigates to /jobs', function() {
expect(repeater('.result-set').count()).toBe(10);
});
});
describe('view2', function() {
beforeEach(function() {
browser().navigateTo('#/view2');
});
it('should render view2 when user navigates to /view2', function() {
expect(element('[ng-view] p:first').text()).
toMatch(/partial for view 2/);
});
});
});

Просмотреть файл

@ -0,0 +1,16 @@
{
"name": "Unknown Builder Job Artifact",
"active_status": "active",
"blob": {
"errors": [ ],
"tinderbox_printlines": [
"mochitest-plain<br/>895/0/128"
],
"logurl": "http://ftp.mozilla.org/pub/mozilla.org/mobile/tinderbox-builds/mozilla-inbound-android-armv6/1377289258/mozilla-inbound_tegra_android-armv6_test-mochitest-5-bm10-tests1-tegra-build1958.txt.gz"
},
"type": "json",
"id": 519,
"job_id": 260
}

Просмотреть файл

@ -0,0 +1,43 @@
{
"end_timestamp": 1377294159,
"submit_timestamp": 1377292078,
"start_timestamp": 1377318435,
"result_set_id": 3,
"product_id": 1,
"machine_platform_id": 1,
"active_status": "active",
"artifacts": [
{
"resource_uri": "/api/project/mozilla-inbound/artifact/519/",
"type": "json",
"id": 519,
"name": "Unknown Builder Job Artifact"
},
{
"resource_uri": "/api/project/mozilla-inbound/artifact/520/",
"type": "json",
"id": 520,
"name": "Structured Log"
}
],
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"machine_name": "tegra-363",
"state": "finished",
"who": "sendchange-unittest",
"logs": [
{
"url": "http://ftp.mozilla.org/pub/mozilla.org/mobile/tinderbox-builds/mozilla-inbound-android-armv6/1377289258/mozilla-inbound_tegra_android-armv6_test-mochitest-5-bm10-tests1-tegra-build1958.txt.gz",
"name": "unittest"
}
],
"reason": "scheduler",
"machine_id": 465,
"result": "success",
"build_platform_id": 1,
"job_coalesced_to_guid": "",
"job_guid": "19e993f5b0a717185083fb9eacb2d422b36d6bd1",
"id": 260,
"job_type_id": 11
}

Просмотреть файл

@ -0,0 +1,368 @@
{
"build": [
{
"description": "",
"jobtype__name": "asan",
"jobtype__symbol": "A",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "asan nightly",
"jobtype__symbol": "An",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "b2g.*_stable_dep",
"jobtype__symbol": "BiB",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "b2g.*_stable_nightly",
"jobtype__symbol": "NiB",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "b2g.*_dep",
"jobtype__symbol": "Bi",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "b2g.*_nightly",
"jobtype__symbol": "Ni",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "b2g.*gecko build",
"jobtype__symbol": "Bg",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "b2g.*gecko-debug build",
"jobtype__symbol": "Bg",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "b2g.*gecko_localizer nightly",
"jobtype__symbol": "NgL",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "b2g.*gecko nightly",
"jobtype__symbol": "Ng",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "b2g.*_eng_dep",
"jobtype__symbol": "BiM",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "b2g.*_eng_nightly",
"jobtype__symbol": "NiM",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "build",
"jobtype__symbol": "B",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "nightly",
"jobtype__symbol": "N",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "valgrind",
"jobtype__symbol": "V",
"symbol": "B"
},
{
"description": "",
"jobtype__name": "xulrunner",
"jobtype__symbol": "Xr",
"symbol": "B"
}
],
"mochitest": [
{
"description": "",
"jobtype__name": "mochitest",
"jobtype__symbol": "M",
"symbol": "M"
},
{
"description": "",
"jobtype__name": "mochitest-browser-chrome",
"jobtype__symbol": "bc",
"symbol": "M"
},
{
"description": "",
"jobtype__name": "mochitest-other",
"jobtype__symbol": "oth",
"symbol": "M"
},
{
"description": "",
"jobtype__name": "robocop",
"jobtype__symbol": "rc",
"symbol": "M"
}
],
"reftest": [
{
"description": "",
"jobtype__name": "crashtest",
"jobtype__symbol": "C",
"symbol": "R"
},
{
"description": "",
"jobtype__name": "crashtest-ipc",
"jobtype__symbol": "Cipc",
"symbol": "R"
},
{
"description": "",
"jobtype__name": "jsreftest",
"jobtype__symbol": "J",
"symbol": "R"
},
{
"description": "",
"jobtype__name": "reftest",
"jobtype__symbol": "R",
"symbol": "R"
},
{
"description": "",
"jobtype__name": "reftest-no-accel",
"jobtype__symbol": "Ru",
"symbol": "R"
},
{
"description": "",
"jobtype__name": "reftest-ipc",
"jobtype__symbol": "Ripc",
"symbol": "R"
}
],
"spidermonkey": [
{
"description": "",
"jobtype__name": "spidermonkey.*-rootanalysis",
"jobtype__symbol": "r",
"symbol": "SM"
},
{
"description": "",
"jobtype__name": "spidermonkey.*-warnaserr",
"jobtype__symbol": "e",
"symbol": "SM"
},
{
"description": "",
"jobtype__name": "spidermonkey.*-dtrace",
"jobtype__symbol": "d",
"symbol": "SM"
},
{
"description": "",
"jobtype__name": "spidermonkey.*-exactroot",
"jobtype__symbol": "exr",
"symbol": "SM"
},
{
"description": "",
"jobtype__name": "spidermonkey.*-generational",
"jobtype__symbol": "ggc",
"symbol": "SM"
}
],
"talos": [
{
"description": "",
"jobtype__name": "talos chrome",
"jobtype__symbol": "c",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos chromez",
"jobtype__symbol": "c",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos dromaeo",
"jobtype__symbol": "dr",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos dromaeojs",
"jobtype__symbol": "d",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos nochrome",
"jobtype__symbol": "n",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos other",
"jobtype__symbol": "o",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos dirtypaint",
"jobtype__symbol": "p",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos remote-trobocheck",
"jobtype__symbol": "rck",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos remote-trobocheck2",
"jobtype__symbol": "rck2",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos remote-trobopan",
"jobtype__symbol": "rp",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos remote-troboprovider",
"jobtype__symbol": "rpr",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos svgr",
"jobtype__symbol": "s",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos remote-tsvgr",
"jobtype__symbol": "s",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos remote-tp4m",
"jobtype__symbol": "tp",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos tp",
"jobtype__symbol": "tp",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos remote-tp4m_nochrome",
"jobtype__symbol": "tpn",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos remote-ts",
"jobtype__symbol": "ts",
"symbol": "T"
},
{
"description": "",
"jobtype__name": "talos xperf",
"jobtype__symbol": "x",
"symbol": "T"
}
],
"unknown": [
{
"description": "",
"jobtype__name": "dxr",
"jobtype__symbol": "Dxr",
"symbol": "?"
},
{
"description": "",
"jobtype__name": "gaia-ui-test",
"jobtype__symbol": "G",
"symbol": "?"
},
{
"description": "",
"jobtype__name": "jetpack-mozilla-aurora",
"jobtype__symbol": "m-a",
"symbol": "?"
},
{
"description": "",
"jobtype__name": "jetpack-mozilla-beta",
"jobtype__symbol": "m-b",
"symbol": "?"
},
{
"description": "",
"jobtype__name": "jetpack-mozilla-central",
"jobtype__symbol": "m-c",
"symbol": "?"
},
{
"description": "",
"jobtype__name": "jetpack-mozilla-release",
"jobtype__symbol": "m-r",
"symbol": "?"
},
{
"description": "",
"jobtype__name": "jetpack",
"jobtype__symbol": "JP",
"symbol": "?"
},
{
"description": "",
"jobtype__name": "marionette",
"jobtype__symbol": "Mn",
"symbol": "?"
},
{
"description": "",
"jobtype__name": "mozmill",
"jobtype__symbol": "Z",
"symbol": "?"
},
{
"description": "",
"jobtype__name": "xpcshell",
"jobtype__symbol": "X",
"symbol": "?"
}
]
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,165 @@
{
"repository_id": 2,
"revision_hash": "9dd584cca791878d8060a5f17b3fa14cd277534a",
"author": "sendchange-unittest",
"comments": "",
"platforms": [
{
"warning_level": "green",
"name": "Rev3 WINNT 6.1 opt",
"groups": [
{
"symbol": null,
"jobs": [
{
"submit_timestamp": 1377293391,
"machine_name": "t-w732-ix-113",
"job_type_description": "fill me",
"result_set_id": 11,
"result": "success",
"machine_platform_architecture": "x86",
"end_timestamp": 1377294171,
"build_platform": "Rev3 WINNT 6.1",
"machine_platform_os": "win",
"job_id": 263,
"job_type_name": "jetpack",
"platform": "Rev3 WINNT 6.1",
"state": "finished",
"build_os": "win",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "JP",
"reason": "scheduler",
"job_group_description": null,
"job_guid": "2be461e3564535ed7e0766a5906f5d29ae79fcd6",
"start_timestamp": 1377318712,
"build_architecture": "x86",
"build_platform_id": 5,
"resource_uri": "/api/project/mozilla-inbound/jobs/263/"
}
],
"name": null
}
]
},
{
"warning_level": "green",
"name": "Ubuntu 12.04 opt",
"groups": [
{
"symbol": null,
"jobs": [
{
"submit_timestamp": 1377293451,
"machine_name": "tst-linux32-ec2-061",
"job_type_description": "fill me",
"result_set_id": 11,
"result": "success",
"machine_platform_architecture": "x86",
"end_timestamp": 1377294212,
"build_platform": "Ubuntu 12.04",
"machine_platform_os": "linux",
"job_id": 280,
"job_type_name": "jetpack",
"platform": "Ubuntu 12.04",
"state": "finished",
"build_os": "linux",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "JP",
"reason": "scheduler",
"job_group_description": null,
"job_guid": "31d4ddb9f26e9517d85c3c07c71124a068dc5f02",
"start_timestamp": 1377318682,
"build_architecture": "x86",
"build_platform_id": 3,
"resource_uri": "/api/project/mozilla-inbound/jobs/280/"
}
],
"name": null
}
]
},
{
"warning_level": "green",
"name": "Ubuntu VM 12.04 opt",
"groups": [
{
"symbol": null,
"jobs": [
{
"submit_timestamp": 1377292913,
"machine_name": "tst-linux64-ec2-068",
"job_type_description": "fill me",
"result_set_id": 11,
"result": "success",
"machine_platform_architecture": "x86_64",
"end_timestamp": 1377293637,
"build_platform": "Ubuntu VM 12.04",
"machine_platform_os": "linux",
"job_id": 95,
"job_type_name": "jetpack",
"platform": "Ubuntu VM 12.04",
"state": "finished",
"build_os": "linux",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "JP",
"reason": "scheduler",
"job_group_description": null,
"job_guid": "4ced0b82eefa0fcba2db23e0adb2685924b56323",
"start_timestamp": 1377318125,
"build_architecture": "x86_64",
"build_platform_id": 8,
"resource_uri": "/api/project/mozilla-inbound/jobs/95/"
}
],
"name": null
}
]
},
{
"warning_level": "green",
"name": "WINNT 5.1 opt",
"groups": [
{
"symbol": null,
"jobs": [
{
"submit_timestamp": 1377293390,
"machine_name": "t-xp32-ix-115",
"job_type_description": "fill me",
"result_set_id": 11,
"result": "success",
"machine_platform_architecture": "x86",
"end_timestamp": 1377293871,
"build_platform": "WINNT 5.1",
"machine_platform_os": "win",
"job_id": 163,
"job_type_name": "jetpack",
"platform": "WINNT 5.1",
"state": "finished",
"build_os": "win",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "JP",
"reason": "scheduler",
"job_group_description": null,
"job_guid": "2967fc9e8c8bae06174d29501e63fbca6856f6fb",
"start_timestamp": 1377318663,
"build_architecture": "x86",
"build_platform_id": 6,
"resource_uri": "/api/project/mozilla-inbound/jobs/163/"
}
],
"name": null
}
]
}
],
"push_timestamp": 1377292891,
"id": 11,
"revision": "c619171e0070"
}

Просмотреть файл

@ -0,0 +1,89 @@
{
"repository_id": 2,
"revision_hash": "a91254227216fda2772c8d2c2cb772cbbadafc46",
"author": "gabadie@mozilla.com",
"comments": "bug 908662 - [WebGL 2.0] refactor WebIDL - r=jgilbert",
"platforms": [
{
"warning_level": "green",
"name": "OS X 10.6 opt",
"groups": [
{
"symbol": "B",
"jobs": [
{
"submit_timestamp": 1377290578,
"machine_name": "bld-lion-r5-059",
"job_type_description": "fill me",
"result_set_id": 13,
"result": "success",
"machine_platform_architecture": "x86_64",
"end_timestamp": 1377293713,
"build_platform": "OS X 10.6",
"machine_platform_os": "mac",
"job_id": 120,
"job_type_name": "build",
"platform": "OS X 10.6",
"state": "finished",
"build_os": "mac",
"who": "gabadie@mozilla.com",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "B",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "7022420dc230f3e6f2fa6c56fab30352994a30e5",
"start_timestamp": 1377315800,
"build_architecture": "x86_64",
"build_platform_id": 4,
"resource_uri": "/api/project/mozilla-inbound/jobs/120/"
}
],
"name": "build"
}
]
},
{
"warning_level": "green",
"name": "gecko opt",
"groups": [
{
"symbol": "B",
"jobs": [
{
"submit_timestamp": 1377290578,
"machine_name": "bld-linux64-ec2-101",
"job_type_description": "fill me",
"result_set_id": 13,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377294006,
"build_platform": "gecko",
"machine_platform_os": "linux",
"job_id": 216,
"job_type_name": "build",
"platform": "gecko",
"state": "finished",
"build_os": "linux",
"who": "gabadie@mozilla.com",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "B",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "9734a09f61320f5216f6ecc753795d95d4a5d8e6",
"start_timestamp": 1377315799,
"build_architecture": "ARMv7",
"build_platform_id": 10,
"resource_uri": "/api/project/mozilla-inbound/jobs/216/"
}
],
"name": "build"
}
]
}
],
"push_timestamp": 1377290520,
"id": 13,
"revision": "b44c22c84132502664dcb52e2b1a737aa09e6fd0"
}

Просмотреть файл

@ -0,0 +1,89 @@
{
"repository_id": 2,
"revision_hash": "0e9748a6326feaa6994f80d3fd8765ef050abb43",
"author": "sendchange-unittest",
"comments": "Bug 908644 - Add a global result summary to cppunittest output_r=ted",
"platforms": [
{
"warning_level": "green",
"name": "OS X 10.6 debug",
"groups": [
{
"symbol": null,
"jobs": [
{
"submit_timestamp": 1377291600,
"machine_name": "talos-r4-snow-068",
"job_type_description": "fill me",
"result_set_id": 14,
"result": "success",
"machine_platform_architecture": "x86_64",
"end_timestamp": 1377293844,
"build_platform": "OS X 10.6",
"machine_platform_os": "mac",
"job_id": 153,
"job_type_name": "jetpack",
"platform": "OS X 10.6",
"state": "finished",
"build_os": "mac",
"who": "sendchange-unittest",
"option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b",
"job_type_symbol": "JP",
"reason": "scheduler",
"job_group_description": null,
"job_guid": "3f49add77813cd8e7a0d7e455197ba6d20353552",
"start_timestamp": 1377317554,
"build_architecture": "x86_64",
"build_platform_id": 4,
"resource_uri": "/api/project/mozilla-inbound/jobs/153/"
}
],
"name": null
}
]
},
{
"warning_level": "green",
"name": "OS X 10.8 debug",
"groups": [
{
"symbol": null,
"jobs": [
{
"submit_timestamp": 1377291959,
"machine_name": "talos-mtnlion-r5-020",
"job_type_description": "fill me",
"result_set_id": 14,
"result": "success",
"machine_platform_architecture": "x86_64",
"end_timestamp": 1377294051,
"build_platform": "OS X 10.8",
"machine_platform_os": "mac",
"job_id": 228,
"job_type_name": "jetpack",
"platform": "OS X 10.8",
"state": "finished",
"build_os": "mac",
"who": "sendchange-unittest",
"option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b",
"job_type_symbol": "JP",
"reason": "scheduler",
"job_group_description": null,
"job_guid": "5da67576b5b081689383a11580e914fc277ae8d7",
"start_timestamp": 1377317982,
"build_architecture": "x86_64",
"build_platform_id": 7,
"resource_uri": "/api/project/mozilla-inbound/jobs/228/"
}
],
"name": null
}
]
}
],
"push_timestamp": 1377291560,
"id": 14,
"revision": "be4a241c1cf3"
}

Просмотреть файл

@ -0,0 +1,51 @@
{
"repository_id": 2,
"revision_hash": "25b6841ee6e4223e3a32011e324e2fba2cc96ae2",
"author": "sendchange",
"comments": "Bug 908724 - Avoid #including nsPresContext.h in nsIScrollableFrame.h_ r=mats",
"platforms": [
{
"warning_level": "green",
"name": "2.2 opt",
"groups": [
{
"symbol": "T",
"jobs": [
{
"submit_timestamp": 1377293098,
"machine_name": "tegra-089",
"job_type_description": "fill me",
"result_set_id": 17,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377294196,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 271,
"job_type_name": "remote-ts",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "ts",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "d67e6c7fa903dd8ccec32c8f3a9566d2cfaf7d88",
"start_timestamp": 1377318762,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/271/"
}
],
"name": "talos"
}
]
}
],
"push_timestamp": 1377293081,
"id": 17,
"revision": "481ba42bbc8a"
}

Просмотреть файл

@ -0,0 +1,769 @@
{
"repository_id": 2,
"revision_hash": "13d728cc21866e4da424bd90a7ec9927f82452b5",
"author": "sendchange",
"comments": "Backed out changesets aed22a2d8353 and c61fe8e1f887 (bug 908006) for OSX reftest failures.",
"platforms": [
{
"warning_level": "green",
"name": "2.2 opt",
"groups": [
{
"symbol": null,
"jobs": [
{
"submit_timestamp": 1377291292,
"machine_name": "tegra-216",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293631,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 93,
"job_type_name": "xpcshell",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "X",
"reason": "scheduler",
"job_group_description": null,
"job_guid": "978c970d7bc175ddfcc97b4bcee5dcd4ed239bc8",
"start_timestamp": 1377317540,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/93/"
}
],
"name": null
},
{
"symbol": "M",
"jobs": [
{
"submit_timestamp": 1377291292,
"machine_name": "tegra-257",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293464,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 28,
"job_type_name": "mochitest-1",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "1",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "511d0743c1fbe2302562a9aed950c4b68042a0cf",
"start_timestamp": 1377317651,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/28/"
},
{
"submit_timestamp": 1377292078,
"machine_name": "tegra-255",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293803,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 143,
"job_type_name": "mochitest-1",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "1",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "543e3ddd9a3d6a9df1e5aa14a9977be2d4bb6acb",
"start_timestamp": 1377317955,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/143/"
},
{
"submit_timestamp": 1377291292,
"machine_name": "tegra-277",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377294183,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 266,
"job_type_name": "mochitest-2",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "2",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "285a2d625835a6af244df765f3bc39249b52b010",
"start_timestamp": 1377317554,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/266/"
},
{
"submit_timestamp": 1377291292,
"machine_name": "tegra-105",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293512,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 50,
"job_type_name": "mochitest-3",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "3",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "922fe6da290c650cdd05ce2baced9acb427090ca",
"start_timestamp": 1377317543,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/50/"
},
{
"submit_timestamp": 1377291292,
"machine_name": "tegra-112",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293441,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 22,
"job_type_name": "mochitest-4",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "4",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "c76a56a4d39323d39cfedc2ba3a5bd2e6d3b5238",
"start_timestamp": 1377317544,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/22/"
},
{
"submit_timestamp": 1377292078,
"machine_name": "tegra-117",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377294207,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 275,
"job_type_name": "mochitest-4",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "4",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "533c15c161d9d4b9f129f9fcfc5282dc67755ef5",
"start_timestamp": 1377318157,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/275/"
},
{
"submit_timestamp": 1377291292,
"machine_name": "tegra-253",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293413,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 15,
"job_type_name": "mochitest-5",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "5",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "930c90bd2f062a0cd07736a3583015cc5f428c79",
"start_timestamp": 1377317676,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/15/"
},
{
"submit_timestamp": 1377292078,
"machine_name": "tegra-209",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293931,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 187,
"job_type_name": "mochitest-6",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "6",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "47d47766d5f448e8b69e028f55c59093663dd81a",
"start_timestamp": 1377318138,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/187/"
},
{
"submit_timestamp": 1377291292,
"machine_name": "tegra-041",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293613,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 89,
"job_type_name": "mochitest-7",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "7",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "94dd53653b35f10411edc3ce3a4d7164138baf94",
"start_timestamp": 1377317554,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/89/"
},
{
"submit_timestamp": 1377292078,
"machine_name": "tegra-258",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293678,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 108,
"job_type_name": "mochitest-7",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "7",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "19c8e45b31a8a0bd624f0b6e553f028e49386660",
"start_timestamp": 1377317857,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/108/"
},
{
"submit_timestamp": 1377291292,
"machine_name": "tegra-090",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293478,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 34,
"job_type_name": "mochitest-8",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "8",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "d113c6cead3ca291c3c82b2f1656071b4bcd47ef",
"start_timestamp": 1377317556,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/34/"
},
{
"submit_timestamp": 1377292078,
"machine_name": "tegra-252",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293733,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 126,
"job_type_name": "mochitest-8",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "8",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "5619f65b28f589d40b8b652d9509c426d75465eb",
"start_timestamp": 1377317857,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/126/"
},
{
"submit_timestamp": 1377291292,
"machine_name": "tegra-173",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377294063,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 234,
"job_type_name": "robocop-1",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "rc1",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "b5d9c3d83c55acbb64c31501c29d3e4280776a84",
"start_timestamp": 1377317663,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/234/"
},
{
"submit_timestamp": 1377292078,
"machine_name": "tegra-182",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377294148,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 255,
"job_type_name": "robocop-1",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "rc1",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "58608e67ac84252aabd70719b62bd8a2ffef89c9",
"start_timestamp": 1377318157,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/255/"
}
],
"name": "mochitest"
},
{
"symbol": "R",
"jobs": [
{
"submit_timestamp": 1377291292,
"machine_name": "tegra-164",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293501,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 44,
"job_type_name": "crashtest",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "C",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "d63119b4305369f58a56b6d4a2df0b6a410e4a19",
"start_timestamp": 1377317536,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/44/"
},
{
"submit_timestamp": 1377292078,
"machine_name": "tegra-283",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293890,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 171,
"job_type_name": "crashtest",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "C",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "01e5a23c6a71a0d0b4c0ecad318360916e3c63c0",
"start_timestamp": 1377317953,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/171/"
},
{
"submit_timestamp": 1377291292,
"machine_name": "tegra-244",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293969,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 201,
"job_type_name": "jsreftest-1",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "J1",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "bc78da4666d44eac11302e21930904bf30468f58",
"start_timestamp": 1377317540,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/201/"
},
{
"submit_timestamp": 1377291292,
"machine_name": "tegra-168",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377294008,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 218,
"job_type_name": "jsreftest-2",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "J2",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "068d956de2111f4e1fcfd8044152da3795ebd219",
"start_timestamp": 1377317547,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/218/"
}
],
"name": "reftest"
},
{
"symbol": "T",
"jobs": [
{
"submit_timestamp": 1377291295,
"machine_name": "tegra-247",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293579,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 76,
"job_type_name": "remote-trobocheck2",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "rck2",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "7c3015cbe5cb5f373e9fadd27fd42b1b5fb6d323",
"start_timestamp": 1377317847,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/76/"
},
{
"submit_timestamp": 1377291295,
"machine_name": "tegra-148",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293563,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 67,
"job_type_name": "remote-trobopan",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "rp",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "8762bd926fdd529689f8947b5a9e7fec698e55df",
"start_timestamp": 1377317841,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/67/"
},
{
"submit_timestamp": 1377291295,
"machine_name": "tegra-066",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293859,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 158,
"job_type_name": "remote-troboprovider",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "rpr",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "bed165c4407653732b81edd6c905c30878c52519",
"start_timestamp": 1377317841,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/158/"
},
{
"submit_timestamp": 1377291295,
"machine_name": "tegra-136",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293409,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 12,
"job_type_name": "remote-tsvg",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "s",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "a330e4549adf8e91f393e80fbc5b7af74760862e",
"start_timestamp": 1377317848,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/12/"
},
{
"submit_timestamp": 1377291295,
"machine_name": "tegra-096",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293377,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 5,
"job_type_name": "remote-ts",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "ts",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "f7f3d26cdfe8413f6a58d7ed7c668c275abf9413",
"start_timestamp": 1377317848,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/5/"
}
],
"name": "talos"
}
]
},
{
"warning_level": "green",
"name": "4.0 opt",
"groups": [
{
"symbol": "T",
"jobs": [
{
"submit_timestamp": 1377291295,
"machine_name": "panda-0727",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "x86",
"end_timestamp": 1377293480,
"build_platform": "4.0",
"machine_platform_os": "android",
"job_id": 35,
"job_type_name": "remote-trobocheck2",
"platform": "4.0",
"state": "finished",
"build_os": "android",
"who": "sendchange",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "rck2",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "164ac36f912130e662ec123585a3f25ba6642d5c",
"start_timestamp": 1377317494,
"build_architecture": "x86",
"build_platform_id": 12,
"resource_uri": "/api/project/mozilla-inbound/jobs/35/"
},
{
"submit_timestamp": 1377291295,
"machine_name": "panda-0715",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "x86",
"end_timestamp": 1377293412,
"build_platform": "4.0",
"machine_platform_os": "android",
"job_id": 14,
"job_type_name": "remote-troboprovider",
"platform": "4.0",
"state": "finished",
"build_os": "android",
"who": "sendchange",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "rpr",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "ac2f41b1c362980cb18de4950a980b8e7f83791a",
"start_timestamp": 1377317199,
"build_architecture": "x86",
"build_platform_id": 12,
"resource_uri": "/api/project/mozilla-inbound/jobs/14/"
}
],
"name": "talos"
}
]
},
{
"warning_level": "green",
"name": "OS X 10.8 opt",
"groups": [
{
"symbol": null,
"jobs": [
{
"submit_timestamp": 1377292253,
"machine_name": "talos-mtnlion-r5-066",
"job_type_description": "fill me",
"result_set_id": 2,
"result": "success",
"machine_platform_architecture": "x86_64",
"end_timestamp": 1377293574,
"build_platform": "OS X 10.8",
"machine_platform_os": "mac",
"job_id": 73,
"job_type_name": "jetpack",
"platform": "OS X 10.8",
"state": "finished",
"build_os": "mac",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "JP",
"reason": "scheduler",
"job_group_description": null,
"job_guid": "640ad6eb7ac856aca57f8787f64a4a5562684a07",
"start_timestamp": 1377318279,
"build_architecture": "x86_64",
"build_platform_id": 7,
"resource_uri": "/api/project/mozilla-inbound/jobs/73/"
}
],
"name": null
}
]
}
],
"push_timestamp": 1377291272,
"id": 2,
"revision": "4d3ad5e15b8c"
}

Просмотреть файл

@ -0,0 +1,261 @@
{
"repository_id": 2,
"revision_hash": "f6a5bb84cf67ac35d670e90810b1306b77f4c1bf",
"author": "sendchange-unittest",
"comments": "Backed out changesets aed22a2d8353 and c61fe8e1f887 (bug 908006) for OSX reftest failures.",
"platforms": [
{
"warning_level": "green",
"name": "2.2 opt",
"groups": [
{
"symbol": "M",
"jobs": [
{
"submit_timestamp": 1377292078,
"machine_name": "tegra-363",
"job_type_description": "fill me",
"result_set_id": 3,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377294159,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 260,
"job_type_name": "mochitest-5",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "5",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "19e993f5b0a717185083fb9eacb2d422b36d6bd1",
"start_timestamp": 1377318435,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/260/"
}
],
"name": "mochitest"
},
{
"symbol": "R",
"jobs": [
{
"submit_timestamp": 1377291719,
"machine_name": "tegra-179",
"job_type_description": "fill me",
"result_set_id": 3,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293860,
"build_platform": "2.2",
"machine_platform_os": "android",
"job_id": 160,
"job_type_name": "jsreftest-3",
"platform": "2.2",
"state": "finished",
"build_os": "android",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "J3",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "f0fc662d19a0fee08341e8359b5f393b622bb670",
"start_timestamp": 1377317850,
"build_architecture": "ARMv7",
"build_platform_id": 1,
"resource_uri": "/api/project/mozilla-inbound/jobs/160/"
}
],
"name": "reftest"
}
]
},
{
"warning_level": "red",
"name": "4.0 opt",
"groups": [
{
"symbol": "T",
"jobs": [
{
"submit_timestamp": 1377293098,
"machine_name": "panda-0725",
"job_type_description": "fill me",
"result_set_id": 3,
"result": "success",
"machine_platform_architecture": "x86",
"end_timestamp": 1377293925,
"build_platform": "4.0",
"machine_platform_os": "android",
"job_id": 185,
"job_type_name": "remote-tp4m_nochrome",
"platform": "4.0",
"state": "finished",
"build_os": "android",
"who": "sendchange",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "tpn",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "f3588fc606d8a88b1c9c8b83b539ff0665f88e63",
"start_timestamp": 1377318300,
"build_architecture": "x86",
"build_platform_id": 12,
"resource_uri": "/api/project/mozilla-inbound/jobs/185/"
},
{
"submit_timestamp": 1377293098,
"machine_name": "panda-0716",
"job_type_description": "fill me",
"result_set_id": 3,
"result": "busted",
"machine_platform_architecture": "x86",
"end_timestamp": 1377294105,
"build_platform": "4.0",
"machine_platform_os": "android",
"job_id": 246,
"job_type_name": "remote-ts",
"platform": "4.0",
"state": "finished",
"build_os": "android",
"who": "sendchange",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "ts",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "22ac437a5d413772a0585ad8c14e49a7a9f46a62",
"start_timestamp": 1377318300,
"build_architecture": "x86",
"build_platform_id": 12,
"resource_uri": "/api/project/mozilla-inbound/jobs/246/"
}
],
"name": "talos"
}
]
},
{
"warning_level": "green",
"name": "Rev3 WINNT 6.1 debug",
"groups": [
{
"symbol": null,
"jobs": [
{
"submit_timestamp": 1377292020,
"machine_name": "t-w732-ix-089",
"job_type_description": "fill me",
"result_set_id": 3,
"result": "success",
"machine_platform_architecture": "x86",
"end_timestamp": 1377294053,
"build_platform": "Rev3 WINNT 6.1",
"machine_platform_os": "win",
"job_id": 229,
"job_type_name": "jetpack",
"platform": "Rev3 WINNT 6.1",
"state": "finished",
"build_os": "win",
"who": "sendchange-unittest",
"option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b",
"job_type_symbol": "JP",
"reason": "scheduler",
"job_group_description": null,
"job_guid": "6f2bb004c43032afdf7ad0a088ba8c3b8ccbb58e",
"start_timestamp": 1377318140,
"build_architecture": "x86",
"build_platform_id": 5,
"resource_uri": "/api/project/mozilla-inbound/jobs/229/"
}
],
"name": null
}
]
},
{
"warning_level": "green",
"name": "WINNT 5.1 debug",
"groups": [
{
"symbol": null,
"jobs": [
{
"submit_timestamp": 1377292072,
"machine_name": "t-xp32-ix-089",
"job_type_description": "fill me",
"result_set_id": 3,
"result": "success",
"machine_platform_architecture": "x86",
"end_timestamp": 1377293418,
"build_platform": "WINNT 5.1",
"machine_platform_os": "win",
"job_id": 19,
"job_type_name": "jetpack",
"platform": "WINNT 5.1",
"state": "finished",
"build_os": "win",
"who": "sendchange-unittest",
"option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b",
"job_type_symbol": "JP",
"reason": "scheduler",
"job_group_description": null,
"job_guid": "c5a04c16b139cce857510f1f737ad520ec81805d",
"start_timestamp": 1377317625,
"build_architecture": "x86",
"build_platform_id": 6,
"resource_uri": "/api/project/mozilla-inbound/jobs/19/"
}
],
"name": null
}
]
},
{
"warning_level": "green",
"name": "WINNT 6.3 debug",
"groups": [
{
"symbol": null,
"jobs": [
{
"submit_timestamp": 1377292071,
"machine_name": "t-w864-ix-114",
"job_type_description": "fill me",
"result_set_id": 3,
"result": "success",
"machine_platform_architecture": "x86_64",
"end_timestamp": 1377293668,
"build_platform": "WINNT 6.3",
"machine_platform_os": "win",
"job_id": 103,
"job_type_name": "jetpack",
"platform": "WINNT 6.3",
"state": "finished",
"build_os": "win",
"who": "sendchange-unittest",
"option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b",
"job_type_symbol": "JP",
"reason": "scheduler",
"job_group_description": null,
"job_guid": "9dbfdb3a01f77e316f9d0dd4bb9ddb579a7633ae",
"start_timestamp": 1377317817,
"build_architecture": "x86_64",
"build_platform_id": 14,
"resource_uri": "/api/project/mozilla-inbound/jobs/103/"
}
],
"name": null
}
]
}
],
"push_timestamp": 1377292017,
"id": 3,
"revision": "5a9fb1ce1de5"
}

Просмотреть файл

@ -0,0 +1,51 @@
{
"repository_id": 2,
"revision_hash": "c435bd25d5eabf8b2f286384e8859a2f52b459ba",
"author": "sendchange-unittest",
"comments": "",
"platforms": [
{
"warning_level": "green",
"name": "Rev3 WINNT 6.1 opt",
"groups": [
{
"symbol": null,
"jobs": [
{
"submit_timestamp": 1377291471,
"machine_name": "t-w732-ix-052",
"job_type_description": "fill me",
"result_set_id": 6,
"result": "success",
"machine_platform_architecture": "x86",
"end_timestamp": 1377293471,
"build_platform": "Rev3 WINNT 6.1",
"machine_platform_os": "win",
"job_id": 32,
"job_type_name": "jetpack",
"platform": "Rev3 WINNT 6.1",
"state": "finished",
"build_os": "win",
"who": "sendchange-unittest",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "JP",
"reason": "scheduler",
"job_group_description": null,
"job_guid": "9386493fbea9880712b317ddc8af80f57a9aafd0",
"start_timestamp": 1377318048,
"build_architecture": "x86",
"build_platform_id": 5,
"resource_uri": "/api/project/mozilla-inbound/jobs/32/"
}
],
"name": null
}
]
}
],
"push_timestamp": 1377291417,
"id": 6,
"revision": "d84b8ecb416c"
}

Просмотреть файл

@ -0,0 +1,167 @@
{
"repository_id": 2,
"revision_hash": "84c37546999e879c8ba81184a39bd71bc2e2253e",
"author": "tschneidereit@gmail.com",
"comments": "Bug 905370 - Move SelfHostedClass list to JSRuntime. r=bhackett,shu",
"platforms": [
{
"warning_level": "green",
"name": "OS X 10.6 debug",
"groups": [
{
"symbol": "B",
"jobs": [
{
"submit_timestamp": 1377289379,
"machine_name": "bld-lion-r5-049",
"job_type_description": "fill me",
"result_set_id": 7,
"result": "success",
"machine_platform_architecture": "x86_64",
"end_timestamp": 1377293575,
"build_platform": "OS X 10.6",
"machine_platform_os": "mac",
"job_id": 74,
"job_type_name": "build",
"platform": "OS X 10.6",
"state": "finished",
"build_os": "mac",
"who": "tschneidereit@gmail.com",
"option_collection_hash": "32faaecac742100f7753f0c1d0aa0add01b4046b",
"job_type_symbol": "B",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "35ac41aeefe6d4c0311b13f69129aa84e1e78655",
"start_timestamp": 1377314595,
"build_architecture": "x86_64",
"build_platform_id": 4,
"resource_uri": "/api/project/mozilla-inbound/jobs/74/"
}
],
"name": "build"
}
]
},
{
"warning_level": "green",
"name": "gecko opt",
"groups": [
{
"symbol": "B",
"jobs": [
{
"submit_timestamp": 1377289378,
"machine_name": "bld-linux64-ix-031",
"job_type_description": "fill me",
"result_set_id": 7,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293486,
"build_platform": "gecko",
"machine_platform_os": "linux",
"job_id": 38,
"job_type_name": "build",
"platform": "gecko",
"state": "finished",
"build_os": "linux",
"who": "tschneidereit@gmail.com",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "B",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "dc811c72ff2e2c3cce02b4e4764af5bf0bce503d",
"start_timestamp": 1377314597,
"build_architecture": "ARMv7",
"build_platform_id": 10,
"resource_uri": "/api/project/mozilla-inbound/jobs/38/"
},
{
"submit_timestamp": 1377289379,
"machine_name": "bld-linux64-ec2-448",
"job_type_description": "fill me",
"result_set_id": 7,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293857,
"build_platform": "gecko",
"machine_platform_os": "linux",
"job_id": 157,
"job_type_name": "build",
"platform": "gecko",
"state": "finished",
"build_os": "linux",
"who": "tschneidereit@gmail.com",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "B",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "ae5a7ea00255454e346b5c22ccf070a9f52937cb",
"start_timestamp": 1377314631,
"build_architecture": "ARMv7",
"build_platform_id": 10,
"resource_uri": "/api/project/mozilla-inbound/jobs/157/"
},
{
"submit_timestamp": 1377289379,
"machine_name": "bld-linux64-ec2-362",
"job_type_description": "fill me",
"result_set_id": 7,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377294101,
"build_platform": "gecko",
"machine_platform_os": "linux",
"job_id": 242,
"job_type_name": "build",
"platform": "gecko",
"state": "finished",
"build_os": "linux",
"who": "tschneidereit@gmail.com",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "B",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "6a39f242f0699044bafb4c3c5fd73b143a134be1",
"start_timestamp": 1377314775,
"build_architecture": "ARMv7",
"build_platform_id": 10,
"resource_uri": "/api/project/mozilla-inbound/jobs/242/"
},
{
"submit_timestamp": 1377289378,
"machine_name": "bld-linux64-ix-033",
"job_type_description": "fill me",
"result_set_id": 7,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377294203,
"build_platform": "gecko",
"machine_platform_os": "linux",
"job_id": 274,
"job_type_name": "build",
"platform": "gecko",
"state": "finished",
"build_os": "linux",
"who": "tschneidereit@gmail.com",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "B",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "f3aa423129de5d0d07a40b1a9843305980228c1a",
"start_timestamp": 1377314617,
"build_architecture": "ARMv7",
"build_platform_id": 10,
"resource_uri": "/api/project/mozilla-inbound/jobs/274/"
}
],
"name": "build"
}
]
}
],
"push_timestamp": 1377289348,
"id": 7,
"revision": "be4a241c1cf3ef15d54119c0a5e7824bf0997b06"
}

Просмотреть файл

@ -0,0 +1,115 @@
{
"repository_id": 2,
"revision_hash": "a8517c8ae59f2ccc3046267c33ac678beab982a3",
"author": "jmaher@mozilla.com",
"comments": "Bug 908853 - update talos.json to include new TART test. r=avih",
"platforms": [
{
"warning_level": "green",
"name": "OS X 10.6 opt",
"groups": [
{
"symbol": "B",
"jobs": [
{
"submit_timestamp": 1377290458,
"machine_name": "bld-lion-r5-067",
"job_type_description": "fill me",
"result_set_id": 9,
"result": "success",
"machine_platform_architecture": "x86_64",
"end_timestamp": 1377294021,
"build_platform": "OS X 10.6",
"machine_platform_os": "mac",
"job_id": 220,
"job_type_name": "build",
"platform": "OS X 10.6",
"state": "finished",
"build_os": "mac",
"who": "jmaher@mozilla.com",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "B",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "69e32b68c369d8843ee22225bb925370f1a8cff2",
"start_timestamp": 1377315674,
"build_architecture": "x86_64",
"build_platform_id": 4,
"resource_uri": "/api/project/mozilla-inbound/jobs/220/"
}
],
"name": "build"
}
]
},
{
"warning_level": "green",
"name": "gecko opt",
"groups": [
{
"symbol": "B",
"jobs": [
{
"submit_timestamp": 1377290459,
"machine_name": "bld-centos6-hp-007",
"job_type_description": "fill me",
"result_set_id": 9,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293600,
"build_platform": "gecko",
"machine_platform_os": "linux",
"job_id": 82,
"job_type_name": "build",
"platform": "gecko",
"state": "finished",
"build_os": "linux",
"who": "jmaher@mozilla.com",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "B",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "f27cd8290fd669313caf2d7dbec5844be14645a7",
"start_timestamp": 1377315677,
"build_architecture": "ARMv7",
"build_platform_id": 10,
"resource_uri": "/api/project/mozilla-inbound/jobs/82/"
},
{
"submit_timestamp": 1377290459,
"machine_name": "bld-linux64-ec2-126",
"job_type_description": "fill me",
"result_set_id": 9,
"result": "success",
"machine_platform_architecture": "ARMv7",
"end_timestamp": 1377293901,
"build_platform": "gecko",
"machine_platform_os": "linux",
"job_id": 177,
"job_type_name": "build",
"platform": "gecko",
"state": "finished",
"build_os": "linux",
"who": "jmaher@mozilla.com",
"option_collection_hash": "102210fe594ee9b33d82058545b1ed14f4c8206e",
"job_type_symbol": "B",
"reason": "scheduler",
"job_group_description": "",
"job_guid": "22aec8191ebe586d936595f3c8b958732edf5799",
"start_timestamp": 1377315678,
"build_architecture": "ARMv7",
"build_platform_id": 10,
"resource_uri": "/api/project/mozilla-inbound/jobs/177/"
}
],
"name": "build"
}
]
}
],
"push_timestamp": 1377290428,
"id": 9,
"revision": "481ba42bbc8a148da9adcec919fcc7560e39464e"
}

Просмотреть файл

@ -0,0 +1,94 @@
[
{
"repository_id": 2,
"revision_hash": "25b6841ee6e4223e3a32011e324e2fba2cc96ae2",
"author": "sendchange",
"comments": "Bug 908724 - Avoid #including nsPresContext.h in nsIScrollableFrame.h_ r=mats",
"push_timestamp": 1377293081,
"id": 17,
"revision": "481ba42bbc8a"
},
{
"repository_id": 2,
"revision_hash": "9dd584cca791878d8060a5f17b3fa14cd277534a",
"author": "sendchange-unittest",
"comments": "",
"push_timestamp": 1377292891,
"id": 11,
"revision": "c619171e0070"
},
{
"repository_id": 2,
"revision_hash": "f6a5bb84cf67ac35d670e90810b1306b77f4c1bf",
"author": "sendchange-unittest",
"comments": "Backed out changesets aed22a2d8353 and c61fe8e1f887 (bug 908006) for OSX reftest failures.",
"push_timestamp": 1377292017,
"id": 3,
"revision": "5a9fb1ce1de5"
},
{
"repository_id": 2,
"revision_hash": "0e9748a6326feaa6994f80d3fd8765ef050abb43",
"author": "sendchange-unittest",
"comments": "Bug 908644 - Add a global result summary to cppunittest output_r=ted",
"push_timestamp": 1377291560,
"id": 14,
"revision": "be4a241c1cf3"
},
{
"repository_id": 2,
"revision_hash": "ec486f38935b2c8869ce77adb90257987de6ef53",
"author": "sendchange-unittest",
"comments": "",
"push_timestamp": 1377291417,
"id": 1,
"revision": "5af70b2d4f1d"
},
{
"repository_id": 2,
"revision_hash": "c435bd25d5eabf8b2f286384e8859a2f52b459ba",
"author": "sendchange-unittest",
"comments": "",
"push_timestamp": 1377291417,
"id": 6,
"revision": "d84b8ecb416c"
},
{
"repository_id": 2,
"revision_hash": "13d728cc21866e4da424bd90a7ec9927f82452b5",
"author": "sendchange",
"comments": "Backed out changesets aed22a2d8353 and c61fe8e1f887 (bug 908006) for OSX reftest failures.",
"push_timestamp": 1377291272,
"id": 2,
"revision": "4d3ad5e15b8c"
},
{
"repository_id": 2,
"revision_hash": "a91254227216fda2772c8d2c2cb772cbbadafc46",
"author": "gabadie@mozilla.com",
"comments": "bug 908662 - [WebGL 2.0] refactor WebIDL - r=jgilbert",
"push_timestamp": 1377290520,
"id": 13,
"revision": "b44c22c84132502664dcb52e2b1a737aa09e6fd0"
},
{
"repository_id": 2,
"revision_hash": "a8517c8ae59f2ccc3046267c33ac678beab982a3",
"author": "jmaher@mozilla.com",
"comments": "Bug 908853 - update talos.json to include new TART test. r=avih",
"push_timestamp": 1377290428,
"id": 9,
"revision": "481ba42bbc8a148da9adcec919fcc7560e39464e"
},
{
"repository_id": 2,
"revision_hash": "84c37546999e879c8ba81184a39bd71bc2e2253e",
"author": "tschneidereit@gmail.com",
"comments": "Bug 905370 - Move SelfHostedClass list to JSRuntime. r=bhackett,shu",
"push_timestamp": 1377289348,
"id": 7,
"revision": "be4a241c1cf3ef15d54119c0a5e7824bf0997b06"
}
]

Просмотреть файл

@ -0,0 +1,161 @@
'use strict';
/* jasmine specs for controllers go here */
describe('JobsCtrl', function(){
var $httpBackend, createJobsCtrl, createPushCtrl, jobScope, pushScope;
beforeEach(module('treeherder'));
beforeEach(inject(function ($injector, $rootScope, $controller) {
$httpBackend = $injector.get('$httpBackend');
jasmine.getJSONFixtures().fixturesPath='base/test/mock';
$httpBackend.whenGET('http://local.treeherder.mozilla.org/api/project/mozilla-inbound/resultset/').respond(
getJSONFixture('resultset_list.json')
);
[1, 2, 3, 6, 7, 9, 11, 13, 14, 17].forEach(function(i) {
$httpBackend.whenGET('http://local.treeherder.mozilla.org/api/project/mozilla-inbound/resultset/' + i + '/').respond(
getJSONFixture('resultset_' + i + '.json')
);
});
$httpBackend.whenGET('http://local.treeherder.mozilla.org/api/project/mozilla-inbound/jobs/260/').respond(
getJSONFixture('job_260.json')
);
$httpBackend.whenGET('http://local.treeherder.mozilla.org/api/project/mozilla-inbound/artifact/519/').respond(
getJSONFixture('artifact_519.json')
);
$httpBackend.whenGET('http://local.treeherder.mozilla.org/api/project/mozilla-inbound/artifact/519').respond(
getJSONFixture('artifact_519.json')
);
$httpBackend.whenGET('resources/job_groups.json').respond(
getJSONFixture('job_groups.json')
);
jobScope = $rootScope.$new();
$controller('JobsCtrl', {'$scope': jobScope});
pushScope = jobScope.$new();
createPushCtrl = function(push) {
pushScope.push = push;
var ctrl = $controller('PushCtrl', {'$scope': pushScope});
$httpBackend.flush();
return ctrl;
};
$httpBackend.flush();
}));
/*
Tests JobsCtrl
*/
it('should have job_types', function() {
expect(jobScope.job_types.length).toBe(59);
});
it('should have 10 resultsets', function() {
expect(jobScope.result_sets.length).toBe(10);
});
/*
Tests PushCtrl
*/
it('should have 5 jobs in resultset 2', function() {
createPushCtrl(jobScope.result_sets[2]);
expect(pushScope.job_results.length).toBe(5);
});
it('should default to revisions collapsed', function() {
createPushCtrl(jobScope.result_sets[2]);
expect(pushScope.isCollapsedRevisions).toBe(true);
});
it('should default to results collapsed for set without failure', function() {
createPushCtrl(jobScope.result_sets[1]);
expect(pushScope.isCollapsedResults).toBe(true);
});
it('should default to results not collapsed for set with failure', function() {
createPushCtrl(jobScope.result_sets[2]);
expect(pushScope.isCollapsedResults).toBe(false);
});
it('should default to results not collapsed for set with failure', function() {
createPushCtrl(jobScope.result_sets[2]);
expect(pushScope.isCollapsedResults).toBe(false);
});
it('should set the selectedJob in scope when calling viewJob()', function() {
var pushCtrl = createPushCtrl(jobScope.result_sets[2]);
var job = pushScope.job_results[0].groups[0].jobs[0];
pushScope.viewJob(job);
$httpBackend.flush();
expect(pushScope.selectedJob).toBe(job);
});
it('should set the visibleFields in the job when calling viewJob()', function() {
var pushCtrl = createPushCtrl(jobScope.result_sets[2]);
var job = pushScope.job_results[0].groups[0].jobs[0];
pushScope.viewJob(job);
$httpBackend.flush();
expect(pushScope.selectedJob.visibleFields).toEqual({
'Reason' : 'scheduler',
'State' : 'finished',
'Result' : 'success',
'Type Name' : 'mochitest-5',
'Type Desc' : 'fill me',
'Who' : 'sendchange-unittest',
'Job GUID' : '19e993f5b0a717185083fb9eacb2d422b36d6bd1',
'Machine Name' : 'tegra-363',
'Machine Platform Arch' : 'ARMv7',
'Machine Platform OS' : 'android',
'Build Platform' : '2.2',
'Build Arch' : 'ARMv7',
'Build OS' : 'android'
});
});
it('should set jobArtifact when calling viewJob()', function() {
var pushCtrl = createPushCtrl(jobScope.result_sets[2]);
var job = pushScope.job_results[0].groups[0].jobs[0];
pushScope.viewJob(job);
$httpBackend.flush();
// toEqual does a deep equality check, but $resource call adds a few
// things to the object that don't show on the json stringify output.
// so much compare each field separately.
expect(pushScope.selectedJob.jobArtifact.name).toEqual("Unknown Builder Job Artifact");
expect(pushScope.selectedJob.jobArtifact.active_status).toEqual("active");
expect(pushScope.selectedJob.jobArtifact.blob).toEqual({
"errors": [ ],
"tinderbox_printlines": [
"mochitest-plain<br/>895/0/128"
],
"logurl": "http://ftp.mozilla.org/pub/mozilla.org/mobile/tinderbox-builds/mozilla-inbound-android-armv6/1377289258/mozilla-inbound_tegra_android-armv6_test-mochitest-5-bm10-tests1-tegra-build1958.txt.gz"
});
expect(pushScope.selectedJob.jobArtifact.type).toEqual("json");
expect(pushScope.selectedJob.jobArtifact.id).toEqual(519);
expect(pushScope.selectedJob.jobArtifact.job_id).toEqual(260);
});
it('should set lvArtifact when calling viewJob()', function() {
var pushCtrl = createPushCtrl(jobScope.result_sets[2]);
var job = pushScope.job_results[0].groups[0].jobs[0];
pushScope.viewJob(job);
$httpBackend.flush();
expect(pushScope.selectedJob.lvArtifact).toEqual({
resource_uri : '/api/project/mozilla-inbound/artifact/520/',
type : 'json',
id : 520,
name : 'Structured Log'
});
});
});

Просмотреть файл

@ -2,37 +2,3 @@
/* jasmine specs for controllers go here */
describe('controllers', function(){
var $httpBackend, $rootScope, createController;
beforeEach(module('treeherder'));
beforeEach(inject(function ($injector) {
$httpBackend = $injector.get('$httpBackend');
$httpBackend.whenGET('resources/job_groups.json').respond(
jasmine.getJSONFixtures('job_groups.json')
);
$httpBackend.whenGET('resources/push_sample.json').respond(
jasmine.getJSONFixtures('push_sample.json')
);
$rootScope = $injector.get('$rootScope');
var $controller = $injector.get('$controller');
createController = function() {
return $controller('JobsCtrl', {'$scope': $rootScope});
};
}));
it('should have job_types', function() {
var ctrl = createController();
$httpBackend.flush();
expect($rootScope.job_types.length).toEqual(30);
});
it('should ....', inject(function() {
var ctrl = createController();
expect("me").toEqual("me");
}));
});

0
tests/ui/vendor/angular/angular-mocks.js поставляемый Normal file → Executable file
Просмотреть файл

0
tests/ui/vendor/angular/angular-scenario.js поставляемый Normal file → Executable file
Просмотреть файл

2600
tests/ui/vendor/jasmine.js поставляемый Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -18,8 +18,8 @@
Logged in as <a href="#" class="navbar-link">Username</a>
</p>
<form class="navbar-search pull-right">
<span class="label label-success">{{ repo }}</span>
<span class="label label-success">0 unstarred</span>
<span class="label label-info">{{ repo }}</span>
<span class="label label-info">0 unstarred</span>
<input type="text" ng-model="query" class="search-query" placeholder="Search">
</form>
<!-- nav begin -->
@ -57,7 +57,10 @@
</div>
<div class="jobs_list span11" ng-cloak>
<div class="alert alert-success">{{ status }}</div>
<div class="alert"
ng-bind="statusMsg"
ng-show="statusMsg"
ng-class="{'alert-success': (statusColor=='green'), 'alert-error': (statusColor=='red')}"></div>
<ng-view ></ng-view>
</div>

Просмотреть файл

@ -1,7 +1,8 @@
"use strict";
treeherder.controller('JobsCtrl',
function JobsCtrl($scope, $http, $rootScope, $location, $routeParams, thResultSets) {
function JobsCtrl($scope, $http, $rootScope, $routeParams, $log,
thUrl, thResultSets) {
// set the default repo to mozilla-central if not specified
if ($routeParams.hasOwnProperty("repo") &&
@ -30,14 +31,18 @@ treeherder.controller('JobsCtrl',
thResultSets.getResultSets().
success(function(data) {
$rootScope.result_sets = data;
$scope.result_sets = data;
}).
error(function(data, status, header, config) {
$scope.statusError("Error getting result sets and jobs from service");
});
}
);
treeherder.controller('PushCtrl',
function PushCtrl($scope, $rootScope, $http, thResults, thUrl, thServiceDomain) {
function PushCtrl($scope, $rootScope, $http, $resource, $log,
thResults, thUrl, thServiceDomain) {
// whether or not revision list for a push is collapsed
$scope.isCollapsedRevisions = true;
@ -52,7 +57,7 @@ treeherder.controller('PushCtrl',
$rootScope.selectedJob = job;
// fields that will show in the job detail panel
$rootScope.selectedJob.visibleFields = {
job.visibleFields = {
"Reason": job.reason,
"State": job.state,
"Result": job.result,
@ -69,24 +74,23 @@ treeherder.controller('PushCtrl',
};
$http.get(thServiceDomain + job.resource_uri).
success(function(data) {
$rootScope.selectedJob.logs = data.logs;
job.logs = data.logs;
data.artifacts.forEach(function(artifact) {
if (artifact.name.contains("Job Artifact")) {
// we don't return the blobs with job, just resource_uris
// to them. For the Job Artifact, we want that blob, so we
// need to fetch the detail to get the blob which has the
// we don't return the blobs with job, just
// resource_uris to them. For the Job Artifact,
// we want that blob, so we need to fetch the
// detail to get the blob which has the
// tinderbox_printlines, etc.
$http.get(thServiceDomain + artifact.resource_uri).
success(function(data) {
$rootScope.selectedJob.jobArtifact = data;
});
job.jobArtifact = $resource(
thServiceDomain + artifact.resource_uri).get();
} else if (artifact.name === "Structured Log") {
// for the structured log, we don't need the blob here, we
// have everything we need in the artifact as is, so
// just save it.
$rootScope.selectedJob.lvArtifact=artifact;
$rootScope.selectedJob.lvUrl = thUrl.getLogViewerUrl(artifact.id);
// for the structured log, we don't need the blob
// here, we have everything we need in the artifact
// as is, so just save it.
job.lvArtifact=artifact;
job.lvUrl = thUrl.getLogViewerUrl(artifact.id);
}
});
});
@ -105,7 +109,7 @@ treeherder.controller('PushCtrl',
}
});
} else {
console.log("Job had no artifacts: " + job_uri);
$log.warn("Job had no artifacts: " + job_uri);
}
});

Просмотреть файл

@ -1,9 +1,16 @@
"use strict";
treeherder.controller('MainCtrl',
function MainController($scope) {
function MainController($scope, $rootScope) {
$scope.query="";
$scope.status = "condition green";
$scope.statusError = function(msg) {
$rootScope.statusMsg = msg;
$rootScope.statusColor = "red";
};
$scope.statusSuccess = function(msg) {
$rootScope.statusMsg = msg;
$rootScope.statusColor = "green";
};
}
);

Просмотреть файл

@ -28,7 +28,7 @@ treeherder.factory('thArtifact',
return {
getArtifact: function(id) {
return $http.get(thUrl.getProjectUrl(
"/artifact/" + id + "/?format=json"));
"/artifact/" + id + "/"));
}
}
}]);
@ -37,18 +37,17 @@ treeherder.factory('thResultSets',
['$http', 'thUrl',
function($http, thUrl) {
// get the pushes for this tree
// sample: 'resources/push_sample.json'
// get the resultsets for this repo
return {
getResultSets: function() {
return $http.get(thUrl.getProjectUrl("/resultset/?format=json"));
return $http.get(thUrl.getProjectUrl("/resultset/"));
}
}
}]);
treeherder.factory('thResults',
['$http', 'thUrl', '$rootScope',
function($http, thUrl, $rootScope) {
['$http', 'thUrl', '$rootScope', '$log',
function($http, thUrl, $rootScope, $log) {
var getWarningLevel = function(results) {
var COLORS = {
@ -74,8 +73,7 @@ treeherder.factory('thResults',
getResults: function(result_set, $scope) {
// store the results in scope for this push via ajax
var jobUrl = thUrl.getProjectUrl("/resultset/" + result_set.id + "/?format=json");
console.log("fetching for " + result_set.id + " from: " + jobUrl);
var jobUrl = thUrl.getProjectUrl("/resultset/" + result_set.id + "/");
$scope.isLoadingResults = true;
$http.get(jobUrl).
success(
@ -124,7 +122,7 @@ treeherder.factory('thRepos',
// sample: 'resources/menu.json'
return {
getRepos: function($rootScope) {
$http.get(thUrl.getRootUrl("/repository/?format=json")).
$http.get(thUrl.getRootUrl("/repository/")).
success(function(data) {
$rootScope.repos = data;
});

Просмотреть файл

@ -3,7 +3,7 @@
<div
ng-repeat="push in result_sets"
ng-controller="PushCtrl"
class="row-fluid">
class="result-set row-fluid">
<a class="btn {{ pushResultBtn }}"
ng-click="isCollapsedResults = !isCollapsedResults">

673
ui/vendor/jasmine-jquery.js поставляемый Executable file
Просмотреть файл

@ -0,0 +1,673 @@
/*!
Jasmine-jQuery: a set of jQuery helpers for Jasmine tests.
Version 1.5.8
https://github.com/velesin/jasmine-jquery
Copyright (c) 2010-2013 Wojciech Zawistowski, Travis Jeffery
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
var readFixtures = function() {
return jasmine.getFixtures().proxyCallTo_('read', arguments)
}
var preloadFixtures = function() {
jasmine.getFixtures().proxyCallTo_('preload', arguments)
}
var loadFixtures = function() {
jasmine.getFixtures().proxyCallTo_('load', arguments)
}
var appendLoadFixtures = function() {
jasmine.getFixtures().proxyCallTo_('appendLoad', arguments)
}
var setFixtures = function(html) {
return jasmine.getFixtures().proxyCallTo_('set', arguments)
}
var appendSetFixtures = function() {
jasmine.getFixtures().proxyCallTo_('appendSet', arguments)
}
var sandbox = function(attributes) {
return jasmine.getFixtures().sandbox(attributes)
}
var spyOnEvent = function(selector, eventName) {
return jasmine.JQuery.events.spyOn(selector, eventName)
}
var preloadStyleFixtures = function() {
jasmine.getStyleFixtures().proxyCallTo_('preload', arguments)
}
var loadStyleFixtures = function() {
jasmine.getStyleFixtures().proxyCallTo_('load', arguments)
}
var appendLoadStyleFixtures = function() {
jasmine.getStyleFixtures().proxyCallTo_('appendLoad', arguments)
}
var setStyleFixtures = function(html) {
jasmine.getStyleFixtures().proxyCallTo_('set', arguments)
}
var appendSetStyleFixtures = function(html) {
jasmine.getStyleFixtures().proxyCallTo_('appendSet', arguments)
}
var loadJSONFixtures = function() {
return jasmine.getJSONFixtures().proxyCallTo_('load', arguments)
}
var getJSONFixture = function(url) {
return jasmine.getJSONFixtures().proxyCallTo_('read', arguments)[url]
}
jasmine.spiedEventsKey = function (selector, eventName) {
return [$(selector).selector, eventName].toString()
}
jasmine.getFixtures = function() {
return jasmine.currentFixtures_ = jasmine.currentFixtures_ || new jasmine.Fixtures()
}
jasmine.getStyleFixtures = function() {
return jasmine.currentStyleFixtures_ = jasmine.currentStyleFixtures_ || new jasmine.StyleFixtures()
}
jasmine.Fixtures = function() {
this.containerId = 'jasmine-fixtures'
this.fixturesCache_ = {}
this.fixturesPath = 'spec/javascripts/fixtures'
}
jasmine.Fixtures.prototype.set = function(html) {
this.cleanUp()
return this.createContainer_(html)
}
jasmine.Fixtures.prototype.appendSet= function(html) {
this.addToContainer_(html)
}
jasmine.Fixtures.prototype.preload = function() {
this.read.apply(this, arguments)
}
jasmine.Fixtures.prototype.load = function() {
this.cleanUp()
this.createContainer_(this.read.apply(this, arguments))
}
jasmine.Fixtures.prototype.appendLoad = function() {
this.addToContainer_(this.read.apply(this, arguments))
}
jasmine.Fixtures.prototype.read = function() {
var htmlChunks = []
var fixtureUrls = arguments
for(var urlCount = fixtureUrls.length, urlIndex = 0; urlIndex < urlCount; urlIndex++) {
htmlChunks.push(this.getFixtureHtml_(fixtureUrls[urlIndex]))
}
return htmlChunks.join('')
}
jasmine.Fixtures.prototype.clearCache = function() {
this.fixturesCache_ = {}
}
jasmine.Fixtures.prototype.cleanUp = function() {
$('#' + this.containerId).remove()
}
jasmine.Fixtures.prototype.sandbox = function(attributes) {
var attributesToSet = attributes || {}
return $('<div id="sandbox" />').attr(attributesToSet)
}
jasmine.Fixtures.prototype.createContainer_ = function(html) {
var container = $('<div>')
.attr('id', this.containerId)
.html(html)
$(document.body).append(container)
return container
}
jasmine.Fixtures.prototype.addToContainer_ = function(html){
var container = $(document.body).find('#'+this.containerId).append(html)
if(!container.length){
this.createContainer_(html)
}
}
jasmine.Fixtures.prototype.getFixtureHtml_ = function(url) {
if (typeof this.fixturesCache_[url] === 'undefined') {
this.loadFixtureIntoCache_(url)
}
return this.fixturesCache_[url]
}
jasmine.Fixtures.prototype.loadFixtureIntoCache_ = function(relativeUrl) {
var url = this.makeFixtureUrl_(relativeUrl)
var request = $.ajax({
type: "GET",
url: url + "?" + new Date().getTime(),
async: false
})
this.fixturesCache_[relativeUrl] = request.responseText
}
jasmine.Fixtures.prototype.makeFixtureUrl_ = function(relativeUrl){
return this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl
}
jasmine.Fixtures.prototype.proxyCallTo_ = function(methodName, passedArguments) {
return this[methodName].apply(this, passedArguments)
}
jasmine.StyleFixtures = function() {
this.fixturesCache_ = {}
this.fixturesNodes_ = []
this.fixturesPath = 'spec/javascripts/fixtures'
}
jasmine.StyleFixtures.prototype.set = function(css) {
this.cleanUp()
this.createStyle_(css)
}
jasmine.StyleFixtures.prototype.appendSet = function(css) {
this.createStyle_(css)
}
jasmine.StyleFixtures.prototype.preload = function() {
this.read_.apply(this, arguments)
}
jasmine.StyleFixtures.prototype.load = function() {
this.cleanUp()
this.createStyle_(this.read_.apply(this, arguments))
}
jasmine.StyleFixtures.prototype.appendLoad = function() {
this.createStyle_(this.read_.apply(this, arguments))
}
jasmine.StyleFixtures.prototype.cleanUp = function() {
while(this.fixturesNodes_.length) {
this.fixturesNodes_.pop().remove()
}
}
jasmine.StyleFixtures.prototype.createStyle_ = function(html) {
var styleText = $('<div></div>').html(html).text(),
style = $('<style>' + styleText + '</style>')
this.fixturesNodes_.push(style)
$('head').append(style)
}
jasmine.StyleFixtures.prototype.clearCache = jasmine.Fixtures.prototype.clearCache
jasmine.StyleFixtures.prototype.read_ = jasmine.Fixtures.prototype.read
jasmine.StyleFixtures.prototype.getFixtureHtml_ = jasmine.Fixtures.prototype.getFixtureHtml_
jasmine.StyleFixtures.prototype.loadFixtureIntoCache_ = jasmine.Fixtures.prototype.loadFixtureIntoCache_
jasmine.StyleFixtures.prototype.makeFixtureUrl_ = jasmine.Fixtures.prototype.makeFixtureUrl_
jasmine.StyleFixtures.prototype.proxyCallTo_ = jasmine.Fixtures.prototype.proxyCallTo_
jasmine.getJSONFixtures = function() {
return jasmine.currentJSONFixtures_ = jasmine.currentJSONFixtures_ || new jasmine.JSONFixtures()
}
jasmine.JSONFixtures = function() {
this.fixturesCache_ = {}
this.fixturesPath = 'spec/javascripts/fixtures/json'
}
jasmine.JSONFixtures.prototype.load = function() {
this.read.apply(this, arguments)
return this.fixturesCache_
}
jasmine.JSONFixtures.prototype.read = function() {
var fixtureUrls = arguments
for(var urlCount = fixtureUrls.length, urlIndex = 0; urlIndex < urlCount; urlIndex++) {
this.getFixtureData_(fixtureUrls[urlIndex])
}
return this.fixturesCache_
}
jasmine.JSONFixtures.prototype.clearCache = function() {
this.fixturesCache_ = {}
}
jasmine.JSONFixtures.prototype.getFixtureData_ = function(url) {
this.loadFixtureIntoCache_(url)
return this.fixturesCache_[url]
}
jasmine.JSONFixtures.prototype.loadFixtureIntoCache_ = function(relativeUrl) {
var self = this
var url = this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl
$.ajax({
async: false, // must be synchronous to guarantee that no tests are run before fixture is loaded
cache: false,
dataType: 'json',
url: url,
success: function(data) {
self.fixturesCache_[relativeUrl] = data
},
error: function(jqXHR, status, errorThrown) {
throw Error('JSONFixture could not be loaded: ' + url + ' (status: ' + status + ', message: ' + errorThrown.message + ')')
}
})
}
jasmine.JSONFixtures.prototype.proxyCallTo_ = function(methodName, passedArguments) {
return this[methodName].apply(this, passedArguments)
}
jasmine.JQuery = function() {}
jasmine.JQuery.browserTagCaseIndependentHtml = function(html) {
return $('<div/>').append(html).html()
}
jasmine.JQuery.elementToString = function(element) {
var domEl = $(element).get(0)
if (domEl == undefined || domEl.cloneNode)
return $('<div />').append($(element).clone()).html()
else
return element.toString()
}
jasmine.JQuery.matchersClass = {}
!function(namespace) {
var data = {
spiedEvents: {},
handlers: []
}
namespace.events = {
spyOn: function(selector, eventName) {
var handler = function(e) {
data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] = jasmine.util.argsToArray(arguments)
}
$(selector).on(eventName, handler)
data.handlers.push(handler)
return {
selector: selector,
eventName: eventName,
handler: handler,
reset: function(){
delete data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)]
}
}
},
args: function(selector, eventName) {
var actualArgs = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)]
if (!actualArgs) {
throw "There is no spy for " + eventName + " on " + selector.toString() + ". Make sure to create a spy using spyOnEvent."
}
return actualArgs
},
wasTriggered: function(selector, eventName) {
return !!(data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)])
},
wasTriggeredWith: function(selector, eventName, expectedArgs, env) {
var actualArgs = jasmine.JQuery.events.args(selector, eventName).slice(1)
if (Object.prototype.toString.call(expectedArgs) !== '[object Array]') {
actualArgs = actualArgs[0]
}
return env.equals_(expectedArgs, actualArgs)
},
wasPrevented: function(selector, eventName) {
var args = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)],
e = args ? args[0] : undefined
return e && e.isDefaultPrevented()
},
wasStopped: function(selector, eventName) {
var args = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)],
e = args ? args[0] : undefined
return e && e.isPropagationStopped()
},
cleanUp: function() {
data.spiedEvents = {}
data.handlers = []
}
}
}(jasmine.JQuery);
!function(){
var jQueryMatchers = {
toHaveClass: function(className) {
return this.actual.hasClass(className)
},
toHaveCss: function(css){
for (var prop in css){
if (this.actual.css(prop) !== css[prop]) return false
}
return true
},
toBeVisible: function() {
return this.actual.is(':visible')
},
toBeHidden: function() {
return this.actual.is(':hidden')
},
toBeSelected: function() {
return this.actual.is(':selected')
},
toBeChecked: function() {
return this.actual.is(':checked')
},
toBeEmpty: function() {
return this.actual.is(':empty')
},
toExist: function() {
return $(document).find(this.actual).length
},
toHaveLength: function(length) {
return this.actual.length === length
},
toHaveAttr: function(attributeName, expectedAttributeValue) {
return hasProperty(this.actual.attr(attributeName), expectedAttributeValue)
},
toHaveProp: function(propertyName, expectedPropertyValue) {
return hasProperty(this.actual.prop(propertyName), expectedPropertyValue)
},
toHaveId: function(id) {
return this.actual.attr('id') == id
},
toHaveHtml: function(html) {
return this.actual.html() == jasmine.JQuery.browserTagCaseIndependentHtml(html)
},
toContainHtml: function(html){
var actualHtml = this.actual.html()
var expectedHtml = jasmine.JQuery.browserTagCaseIndependentHtml(html)
return (actualHtml.indexOf(expectedHtml) >= 0)
},
toHaveText: function(text) {
var trimmedText = $.trim(this.actual.text())
if (text && $.isFunction(text.test)) {
return text.test(trimmedText)
} else {
return trimmedText == text
}
},
toContainText: function(text) {
var trimmedText = $.trim(this.actual.text())
if (text && $.isFunction(text.test)) {
return text.test(trimmedText)
} else {
return trimmedText.indexOf(text) != -1
}
},
toHaveValue: function(value) {
return this.actual.val() === value
},
toHaveData: function(key, expectedValue) {
return hasProperty(this.actual.data(key), expectedValue)
},
toBe: function(selector) {
return this.actual.is(selector)
},
toContain: function(selector) {
return this.actual.find(selector).length
},
toBeMatchedBy: function(selector) {
return this.actual.filter(selector).length
},
toBeDisabled: function(selector){
return this.actual.is(':disabled')
},
toBeFocused: function(selector) {
return this.actual[0] === this.actual[0].ownerDocument.activeElement
},
toHandle: function(event) {
var events = $._data(this.actual.get(0), "events")
if(!events || !event || typeof event !== "string") {
return false
}
var namespaces = event.split(".")
var eventType = namespaces.shift()
var sortedNamespaces = namespaces.slice(0).sort()
var namespaceRegExp = new RegExp("(^|\\.)" + sortedNamespaces.join("\\.(?:.*\\.)?") + "(\\.|$)")
if(events[eventType] && namespaces.length) {
for(var i = 0; i < events[eventType].length; i++) {
var namespace = events[eventType][i].namespace
if(namespaceRegExp.test(namespace)) {
return true
}
}
} else {
return events[eventType] && events[eventType].length > 0
}
},
// tests the existence of a specific event binding + handler
toHandleWith: function(eventName, eventHandler) {
var normalizedEventName = eventName.split('.')[0]
var stack = $._data(this.actual.get(0), "events")[normalizedEventName]
for (var i = 0; i < stack.length; i++) {
if (stack[i].handler == eventHandler) return true
}
return false
}
}
var hasProperty = function(actualValue, expectedValue) {
if (expectedValue === undefined) return actualValue !== undefined
return actualValue == expectedValue
}
var bindMatcher = function(methodName) {
var builtInMatcher = jasmine.Matchers.prototype[methodName]
jasmine.JQuery.matchersClass[methodName] = function() {
if (this.actual
&& (this.actual instanceof $
|| jasmine.isDomNode(this.actual))) {
this.actual = $(this.actual)
var result = jQueryMatchers[methodName].apply(this, arguments)
var element
if (this.actual.get && (element = this.actual.get()[0]) && !$.isWindow(element) && element.tagName !== "HTML")
this.actual = jasmine.JQuery.elementToString(this.actual)
return result
}
if (builtInMatcher) {
return builtInMatcher.apply(this, arguments)
}
return false
}
}
for(var methodName in jQueryMatchers) {
bindMatcher(methodName)
}
}()
beforeEach(function() {
this.addMatchers(jasmine.JQuery.matchersClass)
this.addMatchers({
toHaveBeenTriggeredOn: function(selector) {
this.message = function() {
return [
"Expected event " + this.actual + " to have been triggered on " + selector,
"Expected event " + this.actual + " not to have been triggered on " + selector
]
}
return jasmine.JQuery.events.wasTriggered(selector, this.actual)
}
})
this.addMatchers({
toHaveBeenTriggered: function(){
var eventName = this.actual.eventName,
selector = this.actual.selector
this.message = function() {
return [
"Expected event " + eventName + " to have been triggered on " + selector,
"Expected event " + eventName + " not to have been triggered on " + selector
]
}
return jasmine.JQuery.events.wasTriggered(selector, eventName)
}
})
this.addMatchers({
toHaveBeenTriggeredOnAndWith: function() {
var selector = arguments[0],
expectedArgs = arguments[1],
wasTriggered = jasmine.JQuery.events.wasTriggered(selector, this.actual)
this.message = function() {
if (wasTriggered) {
var actualArgs = jasmine.JQuery.events.args(selector, this.actual, expectedArgs)[1]
return [
"Expected event " + this.actual + " to have been triggered with " + jasmine.pp(expectedArgs) + " but it was triggered with " + jasmine.pp(actualArgs),
"Expected event " + this.actual + " not to have been triggered with " + jasmine.pp(expectedArgs) + " but it was triggered with " + jasmine.pp(actualArgs)
]
} else {
return [
"Expected event " + this.actual + " to have been triggered on " + selector,
"Expected event " + this.actual + " not to have been triggered on " + selector
]
}
}
return wasTriggered && jasmine.JQuery.events.wasTriggeredWith(selector, this.actual, expectedArgs, this.env)
}
})
this.addMatchers({
toHaveBeenPreventedOn: function(selector) {
this.message = function() {
return [
"Expected event " + this.actual + " to have been prevented on " + selector,
"Expected event " + this.actual + " not to have been prevented on " + selector
]
}
return jasmine.JQuery.events.wasPrevented(selector, this.actual)
}
})
this.addMatchers({
toHaveBeenPrevented: function() {
var eventName = this.actual.eventName,
selector = this.actual.selector
this.message = function() {
return [
"Expected event " + eventName + " to have been prevented on " + selector,
"Expected event " + eventName + " not to have been prevented on " + selector
]
}
return jasmine.JQuery.events.wasPrevented(selector, eventName)
}
})
this.addMatchers({
toHaveBeenStoppedOn: function(selector) {
this.message = function() {
return [
"Expected event " + this.actual + " to have been stopped on " + selector,
"Expected event " + this.actual + " not to have been stopped on " + selector
]
}
return jasmine.JQuery.events.wasStopped(selector, this.actual)
}
})
this.addMatchers({
toHaveBeenStopped: function() {
var eventName = this.actual.eventName,
selector = this.actual.selector
this.message = function() {
return [
"Expected event " + eventName + " to have been stopped on " + selector,
"Expected event " + eventName + " not to have been stopped on " + selector
]
}
return jasmine.JQuery.events.wasStopped(selector, eventName)
}
})
jasmine.getEnv().addEqualityTester(function(a, b) {
if(a instanceof jQuery && b instanceof jQuery) {
if(a.size() != b.size()) {
return jasmine.undefined
}
else if(a.is(b)) {
return true
}
}
return jasmine.undefined
})
});
afterEach(function() {
jasmine.getFixtures().cleanUp()
jasmine.getStyleFixtures().cleanUp()
jasmine.JQuery.events.cleanUp()
});

2
webapp/.gitignore поставляемый
Просмотреть файл

@ -1,2 +1,4 @@
node_modules/*
coverage/*
logs/*
!.gitkeep

Просмотреть файл

@ -1,14 +0,0 @@
language: node_js
node_js:
- 0.8
before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- npm install --quiet -g karma
- ./scripts/web-server.js > /dev/null &
- sleep 1 # give server time to start
script:
- karma start config/karma.conf.js --no-auto-watch --single-run --reporters=dots --browsers=Firefox
- karma start config/karma-e2e.conf.js --reporters=dots --browsers=Firefox

12
webapp/package.json Normal file
Просмотреть файл

@ -0,0 +1,12 @@
{
"name": "treeherder-ui",
"description": "The UI portion of Mozilla Treeherder",
"devDependencies": {
"phantomjs" : "*",
"karma" : "*",
"karma-junit-reporter" : "*",
"karma-coverage" : "*",
"karma-jasmine" : "*",
"karma-ng-scenario" : "*"
}
}