Skip to content

Commit f0c0a79

Browse files
ref: Swap empty strings to nulls (#149)
Update bundler plugin core provider helpers to return nulls instead of empty strings.
1 parent 22c99a7 commit f0c0a79

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+739
-589
lines changed

.changeset/early-years-walk.md

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
"@codecov/bundler-plugin-core": patch
3+
"@codecov/nuxt-plugin": patch
4+
"@codecov/remix-vite-plugin": patch
5+
"@codecov/rollup-plugin": patch
6+
"@codecov/solidstart-plugin": patch
7+
"@codecov/sveltekit-plugin": patch
8+
"@codecov/vite-plugin": patch
9+
"@codecov/webpack-plugin": patch
10+
---
11+
12+
Swap from using empty strings to null values for CI providers

packages/bundler-plugin-core/src/types.ts

+9-9
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,14 @@ export interface ProviderUtil {
151151
}
152152

153153
export interface ProviderServiceParams {
154-
branch: string;
155-
build: string;
156-
buildURL: string;
157-
commit: string;
154+
branch: string | null;
155+
build: string | null;
156+
buildURL: string | null;
157+
commit: string | null;
158158
// this is a custom field that is only used for GH pre-merge commits
159-
compareSha?: string;
160-
job: string;
161-
pr: string;
162-
service: string;
163-
slug: string;
159+
compareSha?: string | null;
160+
job: string | null;
161+
pr: string | null;
162+
service: string | null;
163+
slug: string | null;
164164
}

packages/bundler-plugin-core/src/utils/__tests__/provider.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ describe("setSlug", () => {
109109
describe("all values are undefined", () => {
110110
it("returns an empty string", () => {
111111
const result = setSlug(undefined, undefined, undefined);
112-
expect(result).toEqual("");
112+
expect(result).toEqual(null);
113113
});
114114
});
115115
});

packages/bundler-plugin-core/src/utils/git.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ export function parseSlug(slug: unknown): string {
2525
throw new Error(`Unable to parse slug URL: ${slug}`);
2626
}
2727

28-
export function parseSlugFromRemoteAddr(remoteAddr?: string): string {
29-
let slug = "";
28+
export function parseSlugFromRemoteAddr(remoteAddr?: string) {
29+
let slug = null;
3030
if (!remoteAddr) {
3131
remoteAddr =
3232
runExternalProgram("git", ["config", "--get", "remote.origin.url"]) || "";
@@ -37,7 +37,7 @@ export function parseSlugFromRemoteAddr(remoteAddr?: string): string {
3737
}
3838

3939
if (slug === "/") {
40-
slug = "";
40+
slug = null;
4141
}
4242
return slug;
4343
}

packages/bundler-plugin-core/src/utils/provider.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ export function setSlug(
3939
return `${orgEnv}/${repoEnv}`;
4040
}
4141

42-
return "";
42+
return null;
4343
}

packages/bundler-plugin-core/src/utils/providers/AppVeyorCI.ts

+24-17
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,17 @@ export function detect(envs: ProviderEnvs): boolean {
1313
);
1414
}
1515

16-
function _getBuild(inputs: ProviderUtilInputs) {
16+
function _getBuild(inputs: ProviderUtilInputs): ProviderServiceParams["build"] {
1717
const { args, envs } = inputs;
1818
if (args?.build && args.build !== "") {
1919
return args.build;
2020
}
21-
return envs?.APPVEYOR_JOB_ID ?? "";
21+
return envs?.APPVEYOR_JOB_ID ?? null;
2222
}
2323

24-
function _getBuildURL(inputs: ProviderUtilInputs) {
24+
function _getBuildURL(
25+
inputs: ProviderUtilInputs,
26+
): ProviderServiceParams["buildURL"] {
2527
const { envs } = inputs;
2628
if (
2729
envs?.APPVEYOR_URL &&
@@ -31,67 +33,72 @@ function _getBuildURL(inputs: ProviderUtilInputs) {
3133
) {
3234
return `${envs?.APPVEYOR_URL}/project/${envs?.APPVEYOR_REPO_NAME}/builds/${envs?.APPVEYOR_BUILD_ID}/job/${envs?.APPVEYOR_JOB_ID}`;
3335
}
34-
return "";
36+
return null;
3537
}
3638

37-
function _getBranch(inputs: ProviderUtilInputs) {
39+
function _getBranch(
40+
inputs: ProviderUtilInputs,
41+
): ProviderServiceParams["branch"] {
3842
const { args, envs } = inputs;
3943
if (args?.branch && args.branch !== "") {
4044
return args.branch;
4145
}
42-
return envs?.APPVEYOR_REPO_BRANCH ?? "";
46+
return envs?.APPVEYOR_REPO_BRANCH ?? null;
4347
}
4448

45-
function _getJob(envs: ProviderEnvs) {
49+
function _getJob(envs: ProviderEnvs): ProviderServiceParams["job"] {
4650
if (
4751
envs?.APPVEYOR_ACCOUNT_NAME &&
4852
envs?.APPVEYOR_PROJECT_SLUG &&
4953
envs?.APPVEYOR_BUILD_VERSION
5054
) {
5155
return `${envs?.APPVEYOR_ACCOUNT_NAME}/${envs?.APPVEYOR_PROJECT_SLUG}/${envs?.APPVEYOR_BUILD_VERSION}`;
5256
}
53-
return "";
57+
return null;
5458
}
5559

56-
function _getPR(inputs: ProviderUtilInputs): string {
60+
function _getPR(inputs: ProviderUtilInputs): ProviderServiceParams["pr"] {
5761
const { args, envs } = inputs;
5862
if (args?.pr && args.pr !== "") {
5963
return args.pr;
6064
}
61-
return envs?.APPVEYOR_PULL_REQUEST_NUMBER ?? "";
65+
return envs?.APPVEYOR_PULL_REQUEST_NUMBER ?? null;
6266
}
6367

64-
function _getService() {
68+
function _getService(): ProviderServiceParams["service"] {
6569
return "appveyor";
6670
}
6771

6872
export function getServiceName(): string {
6973
return "Appveyor CI";
7074
}
7175

72-
function _getSHA(inputs: ProviderUtilInputs, output: Output) {
76+
function _getSHA(
77+
inputs: ProviderUtilInputs,
78+
output: Output,
79+
): ProviderServiceParams["commit"] {
7380
const { args, envs } = inputs;
7481
if (args?.sha && args.sha !== "") {
7582
debug(`Using commit: ${args.sha}`, { enabled: output.debug });
7683
return args.sha;
7784
}
7885

7986
const commitSha =
80-
envs?.APPVEYOR_PULL_REQUEST_HEAD_COMMIT ?? envs?.APPVEYOR_REPO_COMMIT ?? "";
87+
envs?.APPVEYOR_PULL_REQUEST_HEAD_COMMIT ?? envs?.APPVEYOR_REPO_COMMIT;
8188

8289
debug(`Using commit: ${commitSha ?? ""}`, {
8390
enabled: output.debug,
8491
});
8592

86-
return commitSha;
93+
return commitSha ?? null;
8794
}
8895

89-
function _getSlug(inputs: ProviderUtilInputs) {
96+
function _getSlug(inputs: ProviderUtilInputs): ProviderServiceParams["slug"] {
9097
const { args, envs } = inputs;
9198
if (args?.slug && args.slug !== "") {
9299
return args.slug;
93100
}
94-
return envs?.APPVEYOR_REPO_NAME ?? "";
101+
return envs?.APPVEYOR_REPO_NAME ?? null;
95102
}
96103

97104
// eslint-disable-next-line @typescript-eslint/require-await
@@ -111,7 +118,7 @@ export async function getServiceParams(
111118
};
112119
}
113120

114-
export function getEnvVarNames(): string[] {
121+
export function getEnvVarNames() {
115122
return [
116123
"APPVEYOR",
117124
"APPVEYOR_ACCOUNT_NAME",

packages/bundler-plugin-core/src/utils/providers/AzurePipelines.ts

+25-18
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,27 @@ export function detect(envs: ProviderEnvs): boolean {
1212
return Boolean(envs?.SYSTEM_TEAMFOUNDATIONSERVERURI);
1313
}
1414

15-
function _getBuild(inputs: ProviderUtilInputs): string {
15+
function _getBuild(inputs: ProviderUtilInputs): ProviderServiceParams["build"] {
1616
const { args, envs } = inputs;
1717
if (args?.build && args.build !== "") {
1818
return args.build;
1919
}
20-
return envs?.BUILD_BUILDNUMBER ?? "";
20+
return envs?.BUILD_BUILDNUMBER ?? null;
2121
}
2222

23-
function _getBuildURL(inputs: ProviderUtilInputs): string {
23+
function _getBuildURL(
24+
inputs: ProviderUtilInputs,
25+
): ProviderServiceParams["buildURL"] {
2426
const { envs } = inputs;
2527
if (envs?.SYSTEM_TEAMPROJECT && envs?.BUILD_BUILDID) {
2628
return `${envs?.SYSTEM_TEAMFOUNDATIONSERVERURI}${envs?.SYSTEM_TEAMPROJECT}/_build/results?buildId=${envs?.BUILD_BUILDID}`;
2729
}
28-
return "";
30+
return null;
2931
}
3032

31-
function _getBranch(inputs: ProviderUtilInputs): string {
33+
function _getBranch(
34+
inputs: ProviderUtilInputs,
35+
): ProviderServiceParams["branch"] {
3236
const { args, envs } = inputs;
3337
if (args?.branch && args.branch !== "") {
3438
return args.branch;
@@ -38,35 +42,38 @@ function _getBranch(inputs: ProviderUtilInputs): string {
3842
return envs?.BUILD_SOURCEBRANCH.toString().replace("refs/heads/", "");
3943
}
4044

41-
return "";
45+
return null;
4246
}
4347

44-
function _getJob(envs: ProviderEnvs): string {
45-
return envs?.BUILD_BUILDID ?? "";
48+
function _getJob(envs: ProviderEnvs): ProviderServiceParams["job"] {
49+
return envs?.BUILD_BUILDID ?? null;
4650
}
4751

48-
function _getPR(inputs: ProviderUtilInputs): string {
52+
function _getPR(inputs: ProviderUtilInputs): ProviderServiceParams["pr"] {
4953
const { args, envs } = inputs;
5054
if (args?.pr && args.pr !== "") {
5155
return args.pr;
5256
}
5357

54-
const pr =
58+
return (
5559
envs?.SYSTEM_PULLREQUEST_PULLREQUESTNUMBER ??
5660
envs?.SYSTEM_PULLREQUEST_PULLREQUESTID ??
57-
"";
58-
return pr;
61+
null
62+
);
5963
}
6064

61-
function _getService(): string {
65+
function _getService(): ProviderServiceParams["service"] {
6266
return "azure_pipelines";
6367
}
6468

6569
export function getServiceName(): string {
6670
return "Azure Pipelines";
6771
}
6872

69-
function _getSHA(inputs: ProviderUtilInputs, output: Output): string {
73+
function _getSHA(
74+
inputs: ProviderUtilInputs,
75+
output: Output,
76+
): ProviderServiceParams["commit"] {
7077
const { args, envs } = inputs;
7178
if (args?.sha && args.sha !== "") {
7279
debug(`Using commit: ${args?.sha}`, {
@@ -75,7 +82,7 @@ function _getSHA(inputs: ProviderUtilInputs, output: Output): string {
7582
return args.sha;
7683
}
7784

78-
let commit = envs?.BUILD_SOURCEVERSION ?? "";
85+
let commit = envs?.BUILD_SOURCEVERSION ?? null;
7986

8087
if (_getPR(inputs)) {
8188
const mergeCommitRegex = /^[a-z0-9]{40} [a-z0-9]{40}$/;
@@ -105,13 +112,13 @@ function _getSHA(inputs: ProviderUtilInputs, output: Output): string {
105112
return commit;
106113
}
107114

108-
function _getSlug(inputs: ProviderUtilInputs): string {
115+
function _getSlug(inputs: ProviderUtilInputs): ProviderServiceParams["slug"] {
109116
const { args, envs } = inputs;
110117
if (args?.slug && args.slug !== "") {
111118
return args.slug;
112119
}
113120

114-
return envs?.BUILD_REPOSITORY_NAME ?? parseSlugFromRemoteAddr("") ?? "";
121+
return envs?.BUILD_REPOSITORY_NAME ?? parseSlugFromRemoteAddr("") ?? null;
115122
}
116123

117124
// eslint-disable-next-line @typescript-eslint/require-await
@@ -131,7 +138,7 @@ export async function getServiceParams(
131138
};
132139
}
133140

134-
export function getEnvVarNames(): string[] {
141+
export function getEnvVarNames() {
135142
return [
136143
"BUILD_BUILDID",
137144
"BUILD_BUILDNUMBER",

packages/bundler-plugin-core/src/utils/providers/Bitbucket.ts

+21-16
Original file line numberDiff line numberDiff line change
@@ -12,48 +12,53 @@ export function detect(envs: ProviderEnvs): boolean {
1212
return Boolean(envs?.CI) && Boolean(envs?.BITBUCKET_BUILD_NUMBER);
1313
}
1414

15-
function _getBuild(inputs: ProviderUtilInputs): string {
15+
function _getBuild(inputs: ProviderUtilInputs): ProviderServiceParams["build"] {
1616
const { args, envs } = inputs;
1717
if (args?.build && args.build !== "") {
1818
return args.build;
1919
}
20-
return envs?.BITBUCKET_BUILD_NUMBER ?? "";
20+
return envs?.BITBUCKET_BUILD_NUMBER ?? null;
2121
}
2222

23-
function _getBuildURL(): string {
23+
function _getBuildURL(): ProviderServiceParams["buildURL"] {
2424
// TODO: https://github.com/codecov/uploader/issues/267
25-
return "";
25+
return null;
2626
}
2727

28-
function _getBranch(inputs: ProviderUtilInputs): string {
28+
function _getBranch(
29+
inputs: ProviderUtilInputs,
30+
): ProviderServiceParams["branch"] {
2931
const { args, envs } = inputs;
3032
if (args?.branch && args?.branch !== "") {
3133
return args?.branch;
3234
}
33-
return envs?.BITBUCKET_BRANCH ?? "";
35+
return envs?.BITBUCKET_BRANCH ?? null;
3436
}
3537

36-
function _getJob(envs: ProviderEnvs): string {
37-
return envs?.BITBUCKET_BUILD_NUMBER ?? "";
38+
function _getJob(envs: ProviderEnvs): ProviderServiceParams["job"] {
39+
return envs?.BITBUCKET_BUILD_NUMBER ?? null;
3840
}
3941

40-
function _getPR(inputs: ProviderUtilInputs): string {
42+
function _getPR(inputs: ProviderUtilInputs): ProviderServiceParams["pr"] {
4143
const { args, envs } = inputs;
4244
if (args?.pr && args.pr !== "") {
4345
return args.pr;
4446
}
45-
return envs?.BITBUCKET_PR_ID ?? "";
47+
return envs?.BITBUCKET_PR_ID ?? null;
4648
}
4749

48-
function _getService(): string {
50+
function _getService(): ProviderServiceParams["service"] {
4951
return "bitbucket";
5052
}
5153

5254
export function getServiceName(): string {
5355
return "Bitbucket";
5456
}
5557

56-
function _getSHA(inputs: ProviderUtilInputs, output: Output): string {
58+
function _getSHA(
59+
inputs: ProviderUtilInputs,
60+
output: Output,
61+
): ProviderServiceParams["commit"] {
5762
const { args, envs } = inputs;
5863
if (args?.sha && args.sha !== "") {
5964
debug(`Using commit: ${args.sha}`, { enabled: output.debug });
@@ -66,15 +71,15 @@ function _getSHA(inputs: ProviderUtilInputs, output: Output): string {
6671
}
6772

6873
debug(`Using commit: ${commit ?? ""}`, { enabled: output.debug });
69-
return commit ?? "";
74+
return commit ?? null;
7075
}
7176

72-
function _getSlug(inputs: ProviderUtilInputs): string {
77+
function _getSlug(inputs: ProviderUtilInputs): ProviderServiceParams["slug"] {
7378
const { args, envs } = inputs;
7479
if (args?.slug && args.slug !== "") {
7580
return args.slug;
7681
}
77-
return envs?.BITBUCKET_REPO_FULL_NAME ?? "";
82+
return envs?.BITBUCKET_REPO_FULL_NAME ?? null;
7883
}
7984

8085
// eslint-disable-next-line @typescript-eslint/require-await
@@ -94,6 +99,6 @@ export async function getServiceParams(
9499
};
95100
}
96101

97-
export function getEnvVarNames(): string[] {
102+
export function getEnvVarNames() {
98103
return ["CI", "BITBUCKET_BUILD_NUMBER"];
99104
}

0 commit comments

Comments
 (0)