HealthCheckController.coffee 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. Mocha = require "mocha"
  2. Base = require("mocha/lib/reporters/base")
  3. module.exports = HealthCheckController =
  4. check: (req, res, next = (error) ->) ->
  5. mocha = new Mocha(reporter: Reporter(res), timeout: 10000)
  6. mocha.addFile("test/smoke/js/SmokeTests.js")
  7. mocha.run () ->
  8. path = require.resolve(__dirname + "/../../../../test/smoke/js/SmokeTests.js")
  9. delete require.cache[path]
  10. Reporter = (res) ->
  11. (runner) ->
  12. Base.call(this, runner)
  13. tests = []
  14. passes = []
  15. failures = []
  16. runner.on 'test end', (test) -> tests.push(test)
  17. runner.on 'pass', (test) -> passes.push(test)
  18. runner.on 'fail', (test) -> failures.push(test)
  19. runner.on 'end', () =>
  20. clean = (test) ->
  21. title: test.fullTitle()
  22. duration: test.duration
  23. err: test.err
  24. timedOut: test.timedOut
  25. results = {
  26. stats: @stats
  27. failures: failures.map(clean)
  28. passes: passes.map(clean)
  29. }
  30. res.contentType("application/json")
  31. if failures.length > 0
  32. res.send 500, JSON.stringify(results, null, 2)
  33. else
  34. res.send 200, JSON.stringify(results, null, 2)