mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 13:55:43 +00:00
Bug 888373 - Tests for startup/shutdown crash detection API. r=yoric, r=gps
This commit is contained in:
parent
f65bd5e29e
commit
7206a7caa7
@ -4,6 +4,8 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini']
|
||||
|
||||
EXTRA_JS_MODULES = [
|
||||
'CrashMonitor.jsm',
|
||||
]
|
||||
|
22
toolkit/components/crashmonitor/test/unit/head.js
Normal file
22
toolkit/components/crashmonitor/test/unit/head.js
Normal file
@ -0,0 +1,22 @@
|
||||
/* -*- Mode: js; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "OS",
|
||||
"resource://gre/modules/osfile.jsm");
|
||||
|
||||
let sessionCheckpointsPath;
|
||||
|
||||
/**
|
||||
* Start the tasks of the different tests
|
||||
*/
|
||||
function run_test()
|
||||
{
|
||||
do_get_profile();
|
||||
sessionCheckpointsPath = OS.Path.join(OS.Constants.Path.profileDir,
|
||||
"sessionCheckpoints.json");
|
||||
Components.utils.import("resource://gre/modules/CrashMonitor.jsm");
|
||||
run_next_test();
|
||||
}
|
17
toolkit/components/crashmonitor/test/unit/test_init.js
Normal file
17
toolkit/components/crashmonitor/test/unit/test_init.js
Normal file
@ -0,0 +1,17 @@
|
||||
/* -*- Mode: js; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/**
|
||||
* Test that calling |init| twice throws an error
|
||||
*/
|
||||
add_task(function test_init() {
|
||||
CrashMonitor.init();
|
||||
try {
|
||||
CrashMonitor.init();
|
||||
do_check_true(false);
|
||||
} catch (ex) {
|
||||
do_check_true(true);
|
||||
}
|
||||
});
|
@ -0,0 +1,30 @@
|
||||
/* -*- Mode: js; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/**
|
||||
* Test with sessionCheckpoints.json containing invalid data
|
||||
*/
|
||||
add_task(function test_invalid_file() {
|
||||
// Write bogus data to checkpoint file
|
||||
let data = "1234";
|
||||
yield OS.File.writeAtomic(sessionCheckpointsPath, data,
|
||||
{tmpPath: sessionCheckpointsPath + ".tmp"});
|
||||
|
||||
// An invalid file will cause |init| to throw an exception
|
||||
try {
|
||||
let status = yield CrashMonitor.init();
|
||||
do_check_true(false);
|
||||
} catch (ex) {
|
||||
do_check_true(true);
|
||||
}
|
||||
|
||||
// and |previousCheckpoints| will be rejected
|
||||
try {
|
||||
let checkpoints = yield CrashMonitor.previousCheckpoints;
|
||||
do_check_true(false);
|
||||
} catch (ex) {
|
||||
do_check_true(true);
|
||||
}
|
||||
});
|
@ -0,0 +1,13 @@
|
||||
/* -*- Mode: js; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/**
|
||||
* Test with non-existing sessionCheckpoints.json
|
||||
*/
|
||||
add_task(function test_missing_file() {
|
||||
CrashMonitor.init();
|
||||
let checkpoints = yield CrashMonitor.previousCheckpoints;
|
||||
do_check_eq(checkpoints, null);
|
||||
});
|
24
toolkit/components/crashmonitor/test/unit/test_register.js
Normal file
24
toolkit/components/crashmonitor/test/unit/test_register.js
Normal file
@ -0,0 +1,24 @@
|
||||
/* -*- Mode: js; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/**
|
||||
* Test that CrashMonitor.jsm is correctly loaded from XPCOM component
|
||||
*/
|
||||
add_task(function test_register() {
|
||||
let cm = Components.classes["@mozilla.org/toolkit/crashmonitor;1"]
|
||||
.createInstance(Components.interfaces.nsIObserver);
|
||||
|
||||
// Send "profile-after-change" to trigger the initialization
|
||||
cm.observe(null, "profile-after-change", null);
|
||||
|
||||
// If CrashMonitor was initialized properly a new call to |init|
|
||||
// should fail
|
||||
try {
|
||||
CrashMonitor.init();
|
||||
do_check_true(false);
|
||||
} catch (ex) {
|
||||
do_check_true(true);
|
||||
}
|
||||
});
|
20
toolkit/components/crashmonitor/test/unit/test_valid_file.js
Normal file
20
toolkit/components/crashmonitor/test/unit/test_valid_file.js
Normal file
@ -0,0 +1,20 @@
|
||||
/* -*- Mode: js; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/**
|
||||
* Test with sessionCheckpoints.json containing valid data
|
||||
*/
|
||||
add_task(function test_valid_file() {
|
||||
// Write valid data to checkpoint file
|
||||
let data = JSON.stringify({"final-ui-startup": true});
|
||||
yield OS.File.writeAtomic(sessionCheckpointsPath, data,
|
||||
{tmpPath: sessionCheckpointsPath + ".tmp"});
|
||||
|
||||
CrashMonitor.init();
|
||||
let checkpoints = yield CrashMonitor.previousCheckpoints;
|
||||
|
||||
do_check_true(checkpoints["final-ui-startup"]);
|
||||
do_check_eq(Object.keys(checkpoints).length, 1);
|
||||
});
|
9
toolkit/components/crashmonitor/test/unit/xpcshell.ini
Normal file
9
toolkit/components/crashmonitor/test/unit/xpcshell.ini
Normal file
@ -0,0 +1,9 @@
|
||||
[DEFAULT]
|
||||
head = head.js
|
||||
tail =
|
||||
|
||||
[test_init.js]
|
||||
[test_valid_file.js]
|
||||
[test_invalid_file.js]
|
||||
[test_missing_file.js]
|
||||
[test_register.js]
|
Loading…
Reference in New Issue
Block a user