errorhandler.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. var Logger = require('../../util/logger.js');
  2. var Utils = require('../../util/utils.js');
  3. var ErrorHandler = module.exports = {
  4. handle : function(err, results, finished) {
  5. finished = finished || function() {};
  6. if (results && results.errors) {
  7. console.log(results.errmessages.join('\n'));
  8. }
  9. if (err) {
  10. Logger.enable();
  11. if (!err.message) {
  12. err.message = 'There was an error while running the test.';
  13. }
  14. ErrorHandler.logError(err);
  15. finished(false);
  16. process.exit(1);
  17. } else {
  18. var result = true;
  19. if (results.failed || results.errors) {
  20. result = false;
  21. }
  22. finished(result);
  23. }
  24. },
  25. logWarning : function(message) {
  26. console.warn(Logger.colors.brown(message));
  27. },
  28. logError : function(err) {
  29. if (!err) {
  30. return;
  31. }
  32. var util = require('util');
  33. console.error('');
  34. var stackTrace = err && err.stack;
  35. if (!stackTrace) {
  36. var data;
  37. if (err.message) {
  38. data = err.data;
  39. err = err.message;
  40. }
  41. if (typeof err == 'string') {
  42. process.stderr.write(Logger.colors.red(err));
  43. if (data) {
  44. if (typeof data == 'object' && Object.keys(data).length > 0) {
  45. data = util.inspect(data);
  46. }
  47. process.stderr.write(Logger.colors.stack_trace(data) + '\n');
  48. }
  49. process.stderr.write('\n');
  50. } else {
  51. console.error(err);
  52. }
  53. return;
  54. }
  55. Utils.showStackTraceWithHeadline('There was an error while starting the test runner:\n', err.stack + '\n', true);
  56. }
  57. };