tunnckoCore/clean-stacktrace-relative-paths

View on GitHub
test.js

Summary

Maintainability
A
0 mins
Test Coverage
/*!
 * clean-stacktrace-relative-paths <https://github.com/tunnckoCore/clean-stacktrace-relative-paths>
 *
 * Copyright (c) Charlike Mike Reagent <@tunnckoCore> (https://i.am.charlike.online)
 * Released under the MIT license.
 */

/* jshint asi:true */

'use strict'

var path = require('path')
var isCI = require('is-ci')
var test = require('mukla')
var cleanStack = require('clean-stacktrace')
var relativePaths = require('./index')

test('should export a function that returns a mapper function', function (done) {
  var mapper = relativePaths()
  test.strictEqual(typeof mapper, 'function')
  done()
})

test('should allow passing custom cwd', function (done) {
  var er = new Error('abc error foo')
  var mapper = relativePaths('../qux')
  var stack = cleanStack(er.stack, mapper)

  var fp = '..' + path.sep + 'clean-stacktrace-relative-paths' + path.sep + 'test.js'
  test.strictEqual(stack.indexOf(fp) > 5, true)
  done()
})

test('should be used as `mapper` function to `clean-stacktrace`', function (done) {
  var error = new Error('fixture err')
  var stack = cleanStack(error.stack, relativePaths())
  test.ok(/\(test\.js:/.test(stack))
  done()
})

test('should work for paths non in parens', function qxu (done) {
  var line = 'at Function.qxu (/home/charlike/apps/clean-stacktrace-relative-paths/test.js:44:15)'
  var relative = relativePaths()
  var res = relative(line)

  if (isCI) {
    test.strictEqual(/at Function\.qxu/.test(res), true)
    test.strictEqual(/\.\./.test(res), true)
    test.strictEqual(/test\.js:44:15/.test(res), true)
  } else {
    test.strictEqual(res, 'at Function.qxu (test.js:44:15)')
  }
  done()
})

test('should work for lines like "at /full/absolute/path.js:3:1" with no "place"', function (done) {
  var line = 'at /home/charlike/apps/clean-stacktrace-relative-paths/test.js:3:1'
  var res = relativePaths()(line)

  if (isCI) {
    test.strictEqual(/at \.\./i.test(res), true)
    test.strictEqual(/test\.js:3:1/i.test(res), true)
  } else {
    test.strictEqual(res, 'at test.js:3:1')
  }
  done()
})