formatTestResults.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', {
  3. value: true
  4. });
  5. exports.default = formatTestResults;
  6. function _objectSpread(target) {
  7. for (var i = 1; i < arguments.length; i++) {
  8. var source = arguments[i] != null ? arguments[i] : {};
  9. var ownKeys = Object.keys(source);
  10. if (typeof Object.getOwnPropertySymbols === 'function') {
  11. ownKeys = ownKeys.concat(
  12. Object.getOwnPropertySymbols(source).filter(function(sym) {
  13. return Object.getOwnPropertyDescriptor(source, sym).enumerable;
  14. })
  15. );
  16. }
  17. ownKeys.forEach(function(key) {
  18. _defineProperty(target, key, source[key]);
  19. });
  20. }
  21. return target;
  22. }
  23. function _defineProperty(obj, key, value) {
  24. if (key in obj) {
  25. Object.defineProperty(obj, key, {
  26. value: value,
  27. enumerable: true,
  28. configurable: true,
  29. writable: true
  30. });
  31. } else {
  32. obj[key] = value;
  33. }
  34. return obj;
  35. }
  36. /**
  37. * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
  38. *
  39. * This source code is licensed under the MIT license found in the
  40. * LICENSE file in the root directory of this source tree.
  41. */
  42. const formatTestResult = (testResult, codeCoverageFormatter, reporter) => {
  43. const assertionResults = testResult.testResults.map(formatTestAssertion);
  44. if (testResult.testExecError) {
  45. const now = Date.now();
  46. return {
  47. assertionResults,
  48. coverage: {},
  49. endTime: now,
  50. message: testResult.failureMessage
  51. ? testResult.failureMessage
  52. : testResult.testExecError.message,
  53. name: testResult.testFilePath,
  54. startTime: now,
  55. status: 'failed',
  56. summary: ''
  57. };
  58. } else {
  59. const allTestsPassed = testResult.numFailingTests === 0;
  60. return {
  61. assertionResults,
  62. coverage: codeCoverageFormatter
  63. ? codeCoverageFormatter(testResult.coverage, reporter)
  64. : testResult.coverage,
  65. endTime: testResult.perfStats.end,
  66. message: testResult.failureMessage || '',
  67. name: testResult.testFilePath,
  68. startTime: testResult.perfStats.start,
  69. status: allTestsPassed ? 'passed' : 'failed',
  70. summary: ''
  71. };
  72. }
  73. };
  74. function formatTestAssertion(assertion) {
  75. const result = {
  76. ancestorTitles: assertion.ancestorTitles,
  77. failureMessages: null,
  78. fullName: assertion.fullName,
  79. location: assertion.location,
  80. status: assertion.status,
  81. title: assertion.title
  82. };
  83. if (assertion.failureMessages) {
  84. result.failureMessages = assertion.failureMessages;
  85. }
  86. return result;
  87. }
  88. function formatTestResults(results, codeCoverageFormatter, reporter) {
  89. const testResults = results.testResults.map(testResult =>
  90. formatTestResult(testResult, codeCoverageFormatter, reporter)
  91. );
  92. return _objectSpread({}, results, {
  93. testResults
  94. });
  95. }