diff options
Diffstat (limited to 'toolkit/crashreporter/test/unit/test_crashreporter.js')
-rw-r--r-- | toolkit/crashreporter/test/unit/test_crashreporter.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/toolkit/crashreporter/test/unit/test_crashreporter.js b/toolkit/crashreporter/test/unit/test_crashreporter.js new file mode 100644 index 000000000..f86152234 --- /dev/null +++ b/toolkit/crashreporter/test/unit/test_crashreporter.js @@ -0,0 +1,85 @@ +function run_test() +{ + dump("INFO | test_crashreporter.js | Get crashreporter service.\n"); + var cr = Components.classes["@mozilla.org/toolkit/crash-reporter;1"] + .getService(Components.interfaces.nsICrashReporter); + do_check_neq(cr, null); + + do_check_true(cr.enabled); + + try { + let su = cr.serverURL; + do_throw("Getting serverURL when not set should have thrown!"); + } + catch (ex) { + do_check_eq(ex.result, Components.results.NS_ERROR_FAILURE); + } + + // check setting/getting serverURL + var ios = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService); + + // try it with two different URLs, just for kicks + var testspecs = ["http://example.com/submit", + "https://example.org/anothersubmit"]; + for (var i = 0; i < testspecs.length; ++i) { + cr.serverURL = ios.newURI(testspecs[i], null, null); + do_check_eq(cr.serverURL.spec, testspecs[i]); + } + + // should not allow setting non-http/https URLs + try { + cr.serverURL = ios.newURI("ftp://example.com/submit", null, null); + do_throw("Setting serverURL to a non-http(s) URL should have thrown!"); + } + catch (ex) { + do_check_eq(ex.result, Components.results.NS_ERROR_INVALID_ARG); + } + + // check getting/setting minidumpPath + // it should be $TEMP by default, but I'm not sure if we can exactly test that + // this will at least test that it doesn't throw + do_check_neq(cr.minidumpPath.path, ""); + var cwd = do_get_cwd(); + cr.minidumpPath = cwd; + do_check_eq(cr.minidumpPath.path, cwd.path); + + try { + cr.annotateCrashReport("equal=equal", ""); + do_throw("Calling annotateCrashReport() with an '=' in key should have thrown!"); + } + catch (ex) { + do_check_eq(ex.result, Components.results.NS_ERROR_INVALID_ARG); + } + try { + cr.annotateCrashReport("new\nline", ""); + do_throw("Calling annotateCrashReport() with a '\\n' in key should have thrown!"); + } + catch (ex) { + do_check_eq(ex.result, Components.results.NS_ERROR_INVALID_ARG); + } + try { + cr.annotateCrashReport("", "da\0ta"); + do_throw("Calling annotateCrashReport() with a '\\0' in data should have thrown!"); + } + catch (ex) { + do_check_eq(ex.result, Components.results.NS_ERROR_INVALID_ARG); + } + cr.annotateCrashReport("testKey", "testData1"); + // Replace previous data. + cr.annotateCrashReport("testKey", "testData2"); + + try { + cr.appendAppNotesToCrashReport("da\0ta"); + do_throw("Calling appendAppNotesToCrashReport() with a '\\0' in data should have thrown!"); + } + catch (ex) { + do_check_eq(ex.result, Components.results.NS_ERROR_INVALID_ARG); + } + cr.appendAppNotesToCrashReport("additional testData3"); + // Add more data. + cr.appendAppNotesToCrashReport("additional testData4"); + + cr.minidumpPath = cwd; + do_check_eq(cr.minidumpPath.path, cwd.path); +} |