jest_hooks.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', {
  3. value: true
  4. });
  5. function _asyncToGenerator(fn) {
  6. return function() {
  7. var gen = fn.apply(this, arguments);
  8. return new Promise(function(resolve, reject) {
  9. function step(key, arg) {
  10. try {
  11. var info = gen[key](arg);
  12. var value = info.value;
  13. } catch (error) {
  14. reject(error);
  15. return;
  16. }
  17. if (info.done) {
  18. resolve(value);
  19. } else {
  20. return Promise.resolve(value).then(
  21. function(value) {
  22. step('next', value);
  23. },
  24. function(err) {
  25. step('throw', err);
  26. }
  27. );
  28. }
  29. }
  30. return step('next');
  31. });
  32. };
  33. }
  34. /**
  35. * Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
  36. *
  37. * This source code is licensed under the MIT license found in the
  38. * LICENSE file in the root directory of this source tree.
  39. *
  40. *
  41. */
  42. class JestHooks {
  43. constructor() {
  44. this._listeners = {
  45. onFileChange: [],
  46. onTestRunComplete: [],
  47. shouldRunTestSuite: []
  48. };
  49. }
  50. isUsed(hook) {
  51. return this._listeners[hook] && this._listeners[hook].length;
  52. }
  53. getSubscriber() {
  54. return {
  55. onFileChange: fn => {
  56. this._listeners.onFileChange.push(fn);
  57. },
  58. onTestRunComplete: fn => {
  59. this._listeners.onTestRunComplete.push(fn);
  60. },
  61. shouldRunTestSuite: fn => {
  62. this._listeners.shouldRunTestSuite.push(fn);
  63. }
  64. };
  65. }
  66. getEmitter() {
  67. var _this = this;
  68. return {
  69. onFileChange: fs =>
  70. this._listeners.onFileChange.forEach(listener => listener(fs)),
  71. onTestRunComplete: results =>
  72. this._listeners.onTestRunComplete.forEach(listener =>
  73. listener(results)
  74. ),
  75. shouldRunTestSuite: (() => {
  76. var _ref = _asyncToGenerator(function*(testSuiteInfo) {
  77. return Promise.all(
  78. _this._listeners.shouldRunTestSuite.map(function(listener) {
  79. return listener(testSuiteInfo);
  80. })
  81. ).then(function(result) {
  82. return result.every(function(shouldRunTestSuite) {
  83. return shouldRunTestSuite;
  84. });
  85. });
  86. });
  87. return function shouldRunTestSuite(_x) {
  88. return _ref.apply(this, arguments);
  89. };
  90. })()
  91. };
  92. }
  93. }
  94. exports.default = JestHooks;