summaryrefslogtreecommitdiffstats
path: root/testing/mochitest/tests/browser/browser_fail_add_task.js
blob: 9ef20f7c7d452bc5023d86d945cd6797fb80bc72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

// This test is designed to fail.
// It ensures that throwing an asynchronous error from add_task will
// fail the test.

var passedTests = 0;

function rejectWithTimeout(error = undefined) {
  let deferred = Promise.defer();
  executeSoon(function() {
    ok(true, "we get here after a timeout");
    deferred.reject(error);
  });
  return deferred.promise;
}

add_task(function failWithoutError() {
  try {
    yield rejectWithTimeout();
  } finally {
    ++passedTests;
  }
});

add_task(function failWithString() {
  try {
    yield rejectWithTimeout("Meaningless error");
  } finally {
    ++passedTests;
  }
});

add_task(function failWithoutInt() {
  try {
    yield rejectWithTimeout(42);
  } finally {
    ++passedTests;
  }
});


// This one should display a stack trace
add_task(function failWithError() {
  try {
    yield rejectWithTimeout(new Error("This is an error"));
  } finally {
    ++passedTests;
  }
});

add_task(function done() {
  is(passedTests, 4, "Passed all tests");
});