Browse Source

RunStatus#prefixTitle should remove this.base only if it occurs at the beginning of the path (#844)

* RunStatus#prefixTitle(), replace this.base only if it occurs at the beggining of path

* RunStatus#prefixTitle, filter out __tests__ from path

* added tests for RunStatus#prefixTitle
browser-support
Nuno Campos 9 years ago
committed by James Talmage
parent
commit
f35da7e10d
  1. 8
      lib/run-status.js
  2. 70
      test/run-status.js

8
lib/run-status.js

@ -134,12 +134,18 @@ RunStatus.prototype.prefixTitle = function (file) {
var separator = ' ' + chalk.gray.dim(figures.pointerSmall) + ' ';
var prefix = path.relative('.', file)
.replace(this.base, '')
.replace(this.base, function (match, offset) {
// only replace this.base if it is found at the start of the path
return offset === 0 ? '' : match;
})
.replace(/\.spec/, '')
.replace(/\.test/, '')
.replace(/test\-/g, '')
.replace(/\.js$/, '')
.split(path.sep)
.filter(function (p) {
return p !== '__tests__';
})
.join(separator);
if (prefix.length > 0) {

70
test/run-status.js

@ -0,0 +1,70 @@
'use strict';
var path = require('path');
var test = require('tap').test;
var chalk = require('chalk');
var figures = require('figures');
var RunStatus = require('../lib/run-status');
var sep = ' ' + chalk.gray.dim(figures.pointerSmall) + ' ';
test('requires new', function (t) {
var runStatus = RunStatus;
t.throws(function () {
runStatus({});
}, 'Class constructor RunStatus cannot be invoked without \'new\'');
t.end();
});
test('prefixTitle returns empty if prefixTitles == false', function (t) {
var runStatus = new RunStatus({prefixTitles: false});
t.is(runStatus.prefixTitle('test/run-status.js'), '');
t.end();
});
test('prefixTitle removes base if found at start of path', function (t) {
var runStatus = new RunStatus({base: 'test' + path.sep});
t.is(runStatus.prefixTitle('test/run-status.js'), 'run-status' + sep);
t.end();
});
test('prefixTitle does not remove base if found but not at start of path', function (t) {
var runStatus = new RunStatus({base: path.sep});
t.is(runStatus.prefixTitle('test/run-status.js'), 'test' + sep + 'run-status' + sep);
t.end();
});
test('prefixTitle removes .js extension', function (t) {
var runStatus = new RunStatus({base: path.sep});
t.is(runStatus.prefixTitle('run-status.js'), 'run-status' + sep);
t.end();
});
test('prefixTitle does not remove .js from middle of path', function (t) {
var runStatus = new RunStatus({base: path.sep});
t.is(runStatus.prefixTitle('run-.js-status.js'), 'run-.js-status' + sep);
t.end();
});
test('prefixTitle removes __tests__ from path', function (t) {
var runStatus = new RunStatus({base: path.sep});
t.is(runStatus.prefixTitle('backend/__tests__/run-status.js'), 'backend' + sep + 'run-status' + sep);
t.end();
});
test('prefixTitle removes .spec from path', function (t) {
var runStatus = new RunStatus({base: path.sep});
t.is(runStatus.prefixTitle('backend/run-status.spec.js'), 'backend' + sep + 'run-status' + sep);
t.end();
});
test('prefixTitle removes .test from path', function (t) {
var runStatus = new RunStatus({base: path.sep});
t.is(runStatus.prefixTitle('backend/run-status.test.js'), 'backend' + sep + 'run-status' + sep);
t.end();
});
test('prefixTitle removes test- from path', function (t) {
var runStatus = new RunStatus({base: path.sep});
t.is(runStatus.prefixTitle('backend/test-run-status.js'), 'backend' + sep + 'run-status' + sep);
t.end();
});
Loading…
Cancel
Save