format_test_results.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', {
  3. value: true
  4. });
  5. exports.default = formatTestResults;
  6. const formatResult = (testResult, codeCoverageFormatter, reporter) => {
  7. const now = Date.now();
  8. const output = {
  9. assertionResults: [],
  10. coverage: {},
  11. endTime: now,
  12. message: '',
  13. name: testResult.testFilePath,
  14. startTime: now,
  15. status: 'failed',
  16. summary: ''
  17. };
  18. if (testResult.testExecError) {
  19. output.message = testResult.testExecError.message;
  20. output.coverage = {};
  21. } else {
  22. const allTestsPassed = testResult.numFailingTests === 0;
  23. output.status = allTestsPassed ? 'passed' : 'failed';
  24. output.startTime = testResult.perfStats.start;
  25. output.endTime = testResult.perfStats.end;
  26. output.coverage = codeCoverageFormatter(testResult.coverage, reporter);
  27. }
  28. output.assertionResults = testResult.testResults.map(formatTestAssertion);
  29. if (testResult.failureMessage) {
  30. output.message = testResult.failureMessage;
  31. }
  32. return output;
  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. function formatTestAssertion(assertion) {
  43. const result = {
  44. ancestorTitles: assertion.ancestorTitles,
  45. failureMessages: null,
  46. fullName: assertion.fullName,
  47. location: assertion.location,
  48. status: assertion.status,
  49. title: assertion.title
  50. };
  51. if (assertion.failureMessages) {
  52. result.failureMessages = assertion.failureMessages;
  53. }
  54. return result;
  55. }
  56. function formatTestResults(results, codeCoverageFormatter, reporter) {
  57. const formatter = codeCoverageFormatter || (coverage => coverage);
  58. const testResults = results.testResults.map(testResult =>
  59. formatResult(testResult, formatter, reporter)
  60. );
  61. return Object.assign(Object.create(null), results, {
  62. testResults: testResults
  63. });
  64. }