| // Copyright 2013 The Closure Library Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS-IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| /** |
| * @fileoverview Test adapter for testing Closure Promises against the |
| * Promises/A+ Compliance Test Suite, which is implemented as a Node.js module. |
| * |
| * This test suite adapter may not be run in Node.js directly, but must first be |
| * compiled with the Closure Compiler to pull in the required dependencies. |
| * |
| * @see https://npmjs.org/package/promises-aplus-tests |
| */ |
| |
| goog.provide('goog.promise.testSuiteAdapter'); |
| |
| goog.require('goog.Promise'); |
| |
| goog.setTestOnly('goog.promise.testSuiteAdapter'); |
| |
| |
| var promisesAplusTests = /** @type {function(!Object, function(*))} */ ( |
| require('promises_aplus_tests')); |
| |
| |
| /** |
| * Adapter for specifying Promise-creating functions to the Promises test suite. |
| * @type {!Object} |
| */ |
| goog.promise.testSuiteAdapter = { |
| /** @type {function(*): !goog.Promise} */ |
| 'resolved': goog.Promise.resolve, |
| |
| /** @type {function(*): !goog.Promise} */ |
| 'rejected': goog.Promise.reject, |
| |
| /** @return {!Object} */ |
| 'deferred': function() { |
| var promiseObj = {}; |
| promiseObj['promise'] = new goog.Promise(function(resolve, reject) { |
| promiseObj['resolve'] = resolve; |
| promiseObj['reject'] = reject; |
| }); |
| return promiseObj; |
| } |
| }; |
| |
| |
| // Node.js defines setTimeout globally, but Closure relies on finding it |
| // defined on goog.global. |
| goog.exportSymbol('setTimeout', setTimeout); |
| |
| |
| // Rethrowing an error to the global scope kills Node immediately. Suppress |
| // error rethrowing for running this test suite. |
| goog.Promise.setUnhandledRejectionHandler(goog.nullFunction); |
| |
| |
| // Run the tests, exiting with a failure code if any of the tests fail. |
| promisesAplusTests(goog.promise.testSuiteAdapter, function(err) { |
| if (err) { |
| process.exit(1); |
| } |
| }); |