forked from jestjs/jest
/
getChangedFilesPromise.ts
44 lines (39 loc) 路 1.32 KB
/
getChangedFilesPromise.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/**
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import chalk = require('chalk');
import type {Config} from '@jest/types';
import {ChangedFilesPromise, getChangedFilesForRoots} from 'jest-changed-files';
import {formatExecError} from 'jest-message-util';
export default function getChangedFilesPromise(
globalConfig: Config.GlobalConfig,
configs: Array<Config.ProjectConfig>,
): ChangedFilesPromise | undefined {
if (globalConfig.onlyChanged) {
const allRootsForAllProjects = configs.reduce<Array<Config.Path>>(
(roots, config) => {
if (config.roots) {
roots.push(...config.roots);
}
return roots;
},
[],
);
return getChangedFilesForRoots(allRootsForAllProjects, {
changedSince: globalConfig.changedSince,
lastCommit: globalConfig.lastCommit,
withAncestor: globalConfig.changedFilesWithAncestor,
}).catch(e => {
const message = formatExecError(e, configs[0], {noStackTrace: true})
.split('\n')
.filter(line => !line.includes('Command failed:'))
.join('\n');
console.error(chalk.red(`\n\n${message}`));
process.exit(1);
});
}
return undefined;
}