fix(only-changed): show nice error message about shallow clones (#32189)

Closes https://github.com/microsoft/playwright/issues/32188

---------

Signed-off-by: Simon Knott <info@simonknott.de>
Co-authored-by: Max Schmitt <max@schmitt.mx>
This commit is contained in:
Simon Knott 2024-08-16 11:41:01 +02:00 committed by GitHub
parent 1537d3c2de
commit 06ffdd61c9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -27,6 +27,18 @@ export async function detectChangedTestFiles(baseCommit: string, configDir: stri
).split('\n').filter(Boolean); ).split('\n').filter(Boolean);
} catch (_error) { } catch (_error) {
const error = _error as childProcess.SpawnSyncReturns<string>; const error = _error as childProcess.SpawnSyncReturns<string>;
const unknownRevision = error.output.some(line => line?.includes('unknown revision'));
if (unknownRevision) {
const isShallowClone = childProcess.execSync('git rev-parse --is-shallow-repository', { encoding: 'utf-8', stdio: 'pipe' }).trim() === 'true';
if (isShallowClone) {
throw new Error([
`The repository is a shallow clone and does not have '${baseCommit}' available locally.`,
`Note that GitHub Actions checkout is shallow by default: https://github.com/actions/checkout`
].join('\n'));
}
}
throw new Error([ throw new Error([
`Cannot detect changed files for --only-changed mode:`, `Cannot detect changed files for --only-changed mode:`,
`git ${command}`, `git ${command}`,