add nice error message
This commit is contained in:
parent
5cb24de3ac
commit
5b758230d4
|
|
@ -82,7 +82,29 @@ export type TestFileFilter = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export async function detectChangedFiles(baseCommit: string): Promise<string[]> {
|
export async function detectChangedFiles(baseCommit: string): Promise<string[]> {
|
||||||
const gitFileList = (command: string) => childProcess.execSync(`git ${command}`, { encoding: 'utf-8' }).split('\n').filter(Boolean).map(file => path.resolve(file));
|
function gitFileList(command: string) {
|
||||||
|
try {
|
||||||
|
return childProcess.execSync(
|
||||||
|
`git ${command}`,
|
||||||
|
{ encoding: 'utf-8', stdio: 'pipe' }
|
||||||
|
).split('\n').filter(Boolean).map(file => path.resolve(file));
|
||||||
|
} catch (_error) {
|
||||||
|
const error = _error as childProcess.SpawnSyncReturns<string>;
|
||||||
|
throw new Error([
|
||||||
|
`Encountered error while detecting changed files.`,
|
||||||
|
`--only-changed only works with Git repositories.`,
|
||||||
|
`Make sure that:`,
|
||||||
|
` - You are running the test in a Git repository.`,
|
||||||
|
` - The Git binary is in your PATH.`,
|
||||||
|
` - The passed Git Ref exists in the repository. You passed '${baseCommit}'.`,
|
||||||
|
``,
|
||||||
|
`Command Output:`,
|
||||||
|
``,
|
||||||
|
...error.output,
|
||||||
|
].join('\n'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const untrackedFiles = gitFileList(`ls-files --others --exclude-standard`);
|
const untrackedFiles = gitFileList(`ls-files --others --exclude-standard`);
|
||||||
const trackedFilesWithChanges = gitFileList(`diff ${baseCommit} --name-only`);
|
const trackedFilesWithChanges = gitFileList(`diff ${baseCommit} --name-only`);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -155,4 +155,12 @@ test('should support watch mode', async ({ setupRepository, writeFiles, runWatch
|
||||||
|
|
||||||
await testProcess.waitForOutput('b.spec.ts:3:13 › fails');
|
await testProcess.waitForOutput('b.spec.ts:3:13 › fails');
|
||||||
expect(testProcess.output).not.toContain('a.spec');
|
expect(testProcess.output).not.toContain('a.spec');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should throw nice error message if git doesnt work', async ({ setupRepository, runInlineTest }) => {
|
||||||
|
await setupRepository();
|
||||||
|
const result = await runInlineTest({}, { 'only-changed': `this-commit-does-not-exist` });
|
||||||
|
|
||||||
|
expect(result.exitCode).toBe(1);
|
||||||
|
expect(result.output).toContain('only works with Git repositories');
|
||||||
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue