michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: "use strict"; michael@0: michael@0: const {utils: Cu} = Components; michael@0: michael@0: Cu.import("resource://gre/modules/Promise.jsm", this); michael@0: Cu.import("resource://gre/modules/Services.jsm", this); michael@0: Cu.import("resource://testing-common/AppData.jsm", this); michael@0: michael@0: function run_test() { michael@0: run_next_test(); michael@0: } michael@0: michael@0: add_task(function* test_setup() { michael@0: do_get_profile(); michael@0: yield makeFakeAppDir(); michael@0: }); michael@0: michael@0: add_task(function* test_main_process_crash() { michael@0: let cm = Services.crashmanager; michael@0: Assert.ok(cm, "CrashManager available."); michael@0: michael@0: let basename; michael@0: let deferred = Promise.defer(); michael@0: do_crash("crashType = CrashTestUtils.CRASH_RUNTIMEABORT;", michael@0: (minidump, extra) => { michael@0: basename = minidump.leafName; michael@0: cm._eventsDirs = [getEventDir()]; michael@0: cm.aggregateEventsFiles().then(deferred.resolve, deferred.reject); michael@0: }, michael@0: true); michael@0: michael@0: let count = yield deferred.promise; michael@0: Assert.equal(count, 1, "A single crash event file was seen."); michael@0: let crashes = yield cm.getCrashes(); michael@0: Assert.equal(crashes.length, 1); michael@0: let crash = crashes[0]; michael@0: Assert.ok(crash.isMainProcessCrash); michael@0: Assert.equal(crash.id + ".dmp", basename, "ID recorded properly"); michael@0: });