( pad: number, config: Config.ProjectConfig | Config.GlobalConfig, testPath: string, columns: number, )
| 12 | import relativePath from './relativePath'; |
| 13 | |
| 14 | export default function trimAndFormatPath( |
| 15 | pad: number, |
| 16 | config: Config.ProjectConfig | Config.GlobalConfig, |
| 17 | testPath: string, |
| 18 | columns: number, |
| 19 | ): string { |
| 20 | const maxLength = columns - pad; |
| 21 | const relative = relativePath(config, testPath); |
| 22 | const {basename} = relative; |
| 23 | let {dirname} = relative; |
| 24 | |
| 25 | // length is ok |
| 26 | if ((dirname + path.sep + basename).length <= maxLength) { |
| 27 | return slash(chalk.dim(dirname + path.sep) + chalk.bold(basename)); |
| 28 | } |
| 29 | |
| 30 | // we can fit trimmed dirname and full basename |
| 31 | const basenameLength = basename.length; |
| 32 | if (basenameLength + 4 < maxLength) { |
| 33 | const dirnameLength = maxLength - 4 - basenameLength; |
| 34 | dirname = `...${dirname.slice(dirname.length - dirnameLength)}`; |
| 35 | return slash(chalk.dim(dirname + path.sep) + chalk.bold(basename)); |
| 36 | } |
| 37 | |
| 38 | if (basenameLength + 4 === maxLength) { |
| 39 | return slash(chalk.dim(`...${path.sep}`) + chalk.bold(basename)); |
| 40 | } |
| 41 | |
| 42 | // can't fit dirname, but can fit trimmed basename |
| 43 | return slash( |
| 44 | chalk.bold(`...${basename.slice(basename.length - maxLength - 4)}`), |
| 45 | ); |
| 46 | } |
no test coverage detected