any-stack.js (1826B)
1 // |reftest| skip-if(!xulRuntime.shell) -- needs async stack capture 2 // SKIP test262 export 3 // File name 4 5 function toMessage(stack) { 6 // Provide the stack string in the error message for debugging. 7 return `[stack: ${stack.replace(/\n/g, "\\n")}]`; 8 } 9 10 // Test when AggregateError isn't created from a Promise Job. 11 { 12 let p = Promise.any([]); // line 12 13 14 p.then(v => { 15 reportCompare(0, 1, "expected error"); 16 }, e => { 17 assertEq(e.name, "AggregateError"); 18 var {stack} = e; 19 20 assertEq(/^@.+any-stack.js:12/m.test(stack), true, toMessage(stack)); 21 }); 22 } 23 24 // Same as above, but now with surrounding function context. 25 function testNoJobQueue() { 26 let p = Promise.any([]); // line 26 27 28 p.then(v => { 29 reportCompare(0, 1, "expected error"); 30 }, e => { 31 assertEq(e.name, "AggregateError"); 32 var {stack} = e; 33 34 assertEq(/^testNoJobQueue@.+any-stack.js:26/m.test(stack), true, toMessage(stack)); 35 }); 36 } 37 testNoJobQueue(); 38 39 // Test when AggregateError is created from a Promise Job. 40 { 41 let rejected = Promise.reject(0); 42 let p = Promise.any([rejected]); // line 42 43 44 p.then(v => { 45 reportCompare(0, 1, "expected error"); 46 }, e => { 47 assertEq(e.name, "AggregateError"); 48 var {stack} = e; 49 50 assertEq(/^Promise.any\*@.+any-stack.js:42/m.test(stack), true, toMessage(stack)); 51 }); 52 } 53 54 // Same as above, but now with surrounding function context. 55 function testFromJobQueue() { 56 let rejected = Promise.reject(0); 57 let p = Promise.any([rejected]); // line 57 58 59 p.then(v => { 60 reportCompare(0, 1, "expected error"); 61 }, e => { 62 assertEq(e.name, "AggregateError"); 63 var {stack} = e; 64 65 assertEq(/^Promise.any\*testFromJobQueue@.+any-stack.js:57/m.test(stack), true, toMessage(stack)); 66 }); 67 } 68 testFromJobQueue(); 69 70 if (typeof reportCompare === "function") 71 reportCompare(0, 0);