jest-standard-reporter
Version:
Jest reporter that uses stdout for messages and stderr for errors
42 lines (34 loc) • 1.22 kB
JavaScript
const path = require('path');
const chalk = require('chalk');
const slash = require('slash');
const relativePath = require('./relativePath');
const trimAndFormatPath = (pad, config, testPath, columns) => {
const maxLength = columns - pad;
const relative = relativePath(config, testPath);
const { basename } = relative;
let { dirname } = relative;
// length is ok
if ((dirname + path.sep + basename).length <= maxLength) {
return slash(chalk.dim(dirname + path.sep) + chalk.bold(basename));
}
// we can fit trimmed dirname and full basename
const basenameLength = basename.length;
if (basenameLength + 4 < maxLength) {
const dirnameLength = maxLength - 4 - basenameLength;
dirname = `...${dirname.slice(
dirname.length - dirnameLength,
dirname.length
)}`;
return slash(chalk.dim(dirname + path.sep) + chalk.bold(basename));
}
if (basenameLength + 4 === maxLength) {
return slash(chalk.dim(`...${path.sep}`) + chalk.bold(basename));
}
// can't fit dirname, but can fit trimmed basename
return slash(
chalk.bold(
`...${basename.slice(basename.length - maxLength - 4, basename.length)}`
)
);
};
module.exports = trimAndFormatPath;