also check CI env var

This commit is contained in:
Simon Knott 2024-07-17 14:55:59 +02:00
parent ce788a6a1f
commit 5d2da71fb8
No known key found for this signature in database
GPG key ID: 8CEDC00028084AEC
2 changed files with 26 additions and 3 deletions

View file

@ -156,8 +156,15 @@ Examples:
function getOnlyChangedArg(input: string | boolean | undefined): string | undefined { function getOnlyChangedArg(input: string | boolean | undefined): string | undefined {
if (typeof input === 'string') if (typeof input === 'string')
return input; return input;
if (input === true) if (input === true) {
return process.env.GITHUB_BASE_REF ?? process.env['Build.PullRequest.TargetBranch'] ?? 'HEAD'; if (process.env.CI) {
const baseRef = process.env.GITHUB_BASE_REF ?? process.env.BITBUCKET_BRANCH ?? process.env['Build.PullRequest.TargetBranch'];
if (!baseRef)
throw new Error('You specified --only-changed in a CI environment, but the base reference can not be inferred. Please specify it explicitly, e.g. by setting --only-changed=main');
return baseRef;
}
return 'HEAD';
}
} }

View file

@ -111,7 +111,7 @@ test.describe('should be smart about PR base reference from CI', () => {
`, `,
}); });
git('commit -a -m update'); git('commit -a -m update');
const result = await runInlineTest({}, { 'only-changed': true }, { [envVar]: 'HEAD~1' }); const result = await runInlineTest({}, { 'only-changed': true }, { CI: 'true', [envVar]: 'HEAD~1' });
expect(result.exitCode).toBe(1); expect(result.exitCode).toBe(1);
expect(result.failed).toBe(1); expect(result.failed).toBe(1);
@ -120,7 +120,23 @@ test.describe('should be smart about PR base reference from CI', () => {
} }
testCIEnvironment('Github Actions', 'GITHUB_BASE_REF'); testCIEnvironment('Github Actions', 'GITHUB_BASE_REF');
testCIEnvironment('Bitbucket', 'BITBUCKET_BRANCH');
testCIEnvironment('Azure DevOps', 'Build.PullRequest.TargetBranch'); testCIEnvironment('Azure DevOps', 'Build.PullRequest.TargetBranch');
test("throws error if ref isn't available", async ({ runInlineTest, setupRepository, writeFiles }) => {
const git = await setupRepository();
await writeFiles({
'b.spec.ts': `
import { test, expect } from '@playwright/test';
test('fails', () => { expect(1).toBe(3); });
`,
});
git('commit -a -m update');
const result = await runInlineTest({}, { 'only-changed': true }, { CI: 'true' });
expect(result.exitCode).toBe(1);
expect(result.output).toContain('You specified --only-changed in a CI environment, but the base reference can not be inferred.');
});
}); });
test('should understand dependency structure', async ({ runInlineTest, setupRepository, writeFiles }) => { test('should understand dependency structure', async ({ runInlineTest, setupRepository, writeFiles }) => {