| <!doctype html> |
| <meta name="variant" content="?keep-promise"> |
| <title>testharness.js - task scheduling</title> |
| <script src="../../variants.js"></script> |
| <script src="../../../testharness.js"></script> |
| <script src="../../../testharnessreport.js"></script> |
| <script> |
| var sameTask = null; |
| var sameMicrotask = null; |
| var expectedError = new Error('This error is expected'); |
| |
| promise_test(function() { |
| return Promise.resolve() |
| .then(function() { |
| sameMirotask = true; |
| Promise.resolve().then(() => sameMicrotask = false); |
| }); |
| }, 'promise test without cleanup #1'); |
| |
| promise_test(function() { |
| assert_false(sameMicrotask); |
| |
| return Promise.resolve(); |
| }, 'sub-test with 0 cleanup functions executes in distinct microtask from a passing sub-test'); |
| |
| promise_test(function() { |
| return Promise.resolve() |
| .then(function() { |
| sameMirotask = true; |
| Promise.resolve().then(() => sameMicrotask = false); |
| throw expectedError; |
| }); |
| }, 'failing promise test without cleanup #1'); |
| |
| promise_test(function() { |
| assert_false(sameMicrotask); |
| |
| return Promise.resolve(); |
| }, 'sub-test with 0 cleanup functions executes in distinct microtask from a failing sub-test'); |
| |
| promise_test(function(t) { |
| t.add_cleanup(function() {}); |
| |
| return Promise.resolve() |
| .then(function() { |
| sameMirotask = true; |
| Promise.resolve().then(() => sameMicrotask = false); |
| }); |
| }, 'promise test with cleanup #1'); |
| |
| promise_test(function() { |
| assert_false(sameMicrotask); |
| |
| return Promise.resolve(); |
| }, 'sub-test with some cleanup functions executes in distinct microtask from a passing sub-test'); |
| |
| promise_test(function(t) { |
| t.add_cleanup(function() {}); |
| |
| return Promise.resolve() |
| .then(function() { |
| sameMirotask = true; |
| Promise.resolve().then(() => sameMicrotask = false); |
| throw expectedError; |
| }); |
| }, 'failing promise test with cleanup #1'); |
| |
| promise_test(function() { |
| assert_false(sameMicrotask); |
| |
| return Promise.resolve(); |
| }, 'sub-test with some cleanup functions executes in distinct microtask from a failing sub-test'); |
| |
| promise_test(function(t) { |
| return Promise.resolve() |
| .then(function() { |
| sameTask = true; |
| t.step_timeout(() => sameTask = false, 0); |
| }); |
| }, 'promise test without cleanup #2'); |
| |
| promise_test(function() { |
| assert_true(sameTask); |
| |
| return Promise.resolve(); |
| }, 'sub-test with 0 cleanup functions executes in the same task as a passing sub-test'); |
| |
| promise_test(function(t) { |
| return Promise.resolve() |
| .then(function() { |
| sameTask = true; |
| t.step_timeout(() => sameTask = false, 0); |
| throw expectedError; |
| }); |
| }, 'failing promise test without cleanup #2'); |
| |
| promise_test(function() { |
| assert_true(sameTask); |
| |
| return Promise.resolve(); |
| }, 'sub-test with 0 cleanup functions executes in the same task as a failing sub-test'); |
| |
| promise_test(function(t) { |
| t.add_cleanup(function() {}); |
| |
| return Promise.resolve() |
| .then(function() { |
| sameTask = true; |
| t.step_timeout(() => sameTask = false, 0); |
| }); |
| }, 'promise test with cleanup #2'); |
| |
| promise_test(function() { |
| assert_true(sameTask); |
| |
| return Promise.resolve(); |
| }, 'sub-test with some cleanup functions executes in the same task as a passing sub-test'); |
| |
| promise_test(function(t) { |
| t.add_cleanup(function() {}); |
| |
| return Promise.resolve() |
| .then(function() { |
| sameTask = true; |
| t.step_timeout(() => sameTask = false, 0); |
| throw expectedError; |
| }); |
| }, 'failing promise test with cleanup #2'); |
| |
| promise_test(function() { |
| assert_true(sameTask); |
| |
| return Promise.resolve(); |
| }, 'sub-test with some cleanup functions executes in the same task as a failing sub-test'); |
| </script> |
| |
| <script type="text/json" id="expected"> |
| { |
| "summarized_status": { |
| "message": null, |
| "status_string": "OK" |
| }, |
| "summarized_tests": [ |
| { |
| "message": "promise_test: Unhandled rejection with value: object \"Error: This error is expected\"", |
| "name": "failing promise test with cleanup #1", |
| "properties": {}, |
| "status_string": "FAIL" |
| }, |
| { |
| "message": "promise_test: Unhandled rejection with value: object \"Error: This error is expected\"", |
| "name": "failing promise test with cleanup #2", |
| "properties": {}, |
| "status_string": "FAIL" |
| }, |
| { |
| "message": "promise_test: Unhandled rejection with value: object \"Error: This error is expected\"", |
| "name": "failing promise test without cleanup #1", |
| "properties": {}, |
| "status_string": "FAIL" |
| }, |
| { |
| "message": "promise_test: Unhandled rejection with value: object \"Error: This error is expected\"", |
| "name": "failing promise test without cleanup #2", |
| "properties": {}, |
| "status_string": "FAIL" |
| }, |
| { |
| "message": null, |
| "name": "promise test with cleanup #1", |
| "properties": {}, |
| "status_string": "PASS" |
| }, |
| { |
| "message": null, |
| "name": "promise test with cleanup #2", |
| "properties": {}, |
| "status_string": "PASS" |
| }, |
| { |
| "message": null, |
| "name": "promise test without cleanup #1", |
| "properties": {}, |
| "status_string": "PASS" |
| }, |
| { |
| "message": null, |
| "name": "promise test without cleanup #2", |
| "properties": {}, |
| "status_string": "PASS" |
| }, |
| { |
| "message": null, |
| "name": "sub-test with 0 cleanup functions executes in distinct microtask from a failing sub-test", |
| "properties": {}, |
| "status_string": "PASS" |
| }, |
| { |
| "message": null, |
| "name": "sub-test with 0 cleanup functions executes in distinct microtask from a passing sub-test", |
| "properties": {}, |
| "status_string": "PASS" |
| }, |
| { |
| "message": null, |
| "name": "sub-test with 0 cleanup functions executes in the same task as a failing sub-test", |
| "properties": {}, |
| "status_string": "PASS" |
| }, |
| { |
| "message": null, |
| "name": "sub-test with 0 cleanup functions executes in the same task as a passing sub-test", |
| "properties": {}, |
| "status_string": "PASS" |
| }, |
| { |
| "message": null, |
| "name": "sub-test with some cleanup functions executes in distinct microtask from a failing sub-test", |
| "properties": {}, |
| "status_string": "PASS" |
| }, |
| { |
| "message": null, |
| "name": "sub-test with some cleanup functions executes in distinct microtask from a passing sub-test", |
| "properties": {}, |
| "status_string": "PASS" |
| }, |
| { |
| "message": null, |
| "name": "sub-test with some cleanup functions executes in the same task as a failing sub-test", |
| "properties": {}, |
| "status_string": "PASS" |
| }, |
| { |
| "message": null, |
| "name": "sub-test with some cleanup functions executes in the same task as a passing sub-test", |
| "properties": {}, |
| "status_string": "PASS" |
| } |
| ], |
| "type": "complete" |
| } |
| </script> |