wmakeev
7/20/2014 - 9:39 AM

Dirty hack to make 'source-map-support' work with mocha in PhantomJS

Dirty hack to make 'source-map-support' work with mocha in PhantomJS

sourceMapper = require 'source-map-support'

Dot = require '../../../node_modules/grunt-mocha/node_modules/mocha/lib/reporters/dot.js'
module.exports = Dot
##

parseLine = (line) ->
  [_, file, row] = line.match /file:\/\/\/(.*):(\d*)/
  frame =
    getFileName: -> file
    getLineNumber: -> row
    getColumnNumber: -> 1

superEpilogue = Dot.prototype.epilogue
Dot.prototype.epilogue = ->
  for test in @failures
    test.err.stack = test.err.stack.split('\n').map((line)->
      if line.match /^    at /
        mapped = sourceMapper.wrapCallSite parseLine line
        line.replace /file:\/\/\/(.*):(\d*)/,
          "file:///#{mapped.getFileName()}:#{mapped.getLineNumber()}"
      else
        line
    ).join('\n')
  superEpilogue.bind(@)()