Skip to content

Commit 2fc4847

Browse files
fix: set safe directory (#1304)
* fix: set safe directory * fix: naming * fix: update tests * fix: dont even check * fix: add set safe directory * fix: write test for setSafeDirectory
1 parent 0cfda1d commit 2fc4847

File tree

9 files changed

+162
-20
lines changed

9 files changed

+162
-20
lines changed

.github/workflows/main.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,43 @@ jobs:
4242
version: v0.2.0
4343
verbose: true
4444
token: ${{ secrets.CODECOV_TOKEN }}
45+
46+
run-container:
47+
runs-on: ubuntu-latest
48+
container: node:18
49+
steps:
50+
- name: Checkout
51+
uses: actions/[email protected]
52+
- name: Install dependencies
53+
run: npm install
54+
- name: Lint
55+
run: npm run lint
56+
- name: Run tests and collect coverage
57+
run: npm run test
58+
- name: Upload coverage to Codecov (script)
59+
uses: ./
60+
with:
61+
files: ./coverage/script/coverage-final.json
62+
flags: script,${{ matrix.os }}
63+
name: codecov-script
64+
verbose: true
65+
token: ${{ secrets.CODECOV_TOKEN }}
66+
- name: Upload coverage to Codecov (demo)
67+
uses: ./
68+
with:
69+
files: ./coverage/calculator/coverage-final.json,./coverage/coverage-test/coverage-final.json
70+
file: ./coverage/coverage-final.json
71+
flags: demo,${{ matrix.os }}
72+
name: codecov-demo
73+
verbose: true
74+
token: ${{ secrets.CODECOV_TOKEN }}
75+
- name: Upload coverage to Codecov (version)
76+
uses: ./
77+
with:
78+
files: ./coverage/calculator/coverage-final.json,./coverage/coverage-test/coverage-final.json
79+
file: ./coverage/coverage-final.json
80+
flags: version,${{ matrix.os }}
81+
name: codecov-version
82+
version: v0.2.0
83+
verbose: true
84+
token: ${{ secrets.CODECOV_TOKEN }}

action.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,14 @@ inputs:
1414
directory:
1515
description: 'Directory to search for coverage reports.'
1616
required: false
17+
disable_file_fixes:
18+
description: 'Disable file fixes to ignore common lines from coverage (e.g. blank lines or empty brackets)'
19+
required: false
1720
disable_search:
1821
description: 'Disable search for coverage files. This is helpful when specifying what files you want to upload with the --file option.'
1922
required: false
20-
disable_file_fixes:
21-
description: 'Disable file fixes to ignore common lines from coverage (e.g. blank lines or empty brackets)'
23+
disable_safe_directory:
24+
description: 'Disable setting safe directory. Set to true to disable.'
2225
required: false
2326
dry_run:
2427
description: "Don't upload files to Codecov"
@@ -41,6 +44,9 @@ inputs:
4144
flags:
4245
description: 'Flag upload to group coverage metrics (e.g. unittests | integration | ui,chrome)'
4346
required: false
47+
git_service:
48+
description: 'Override the git_service (e.g. github_enterprise)'
49+
required: false
4450
handle_no_reports_found:
4551
description: 'Raise no exceptions when no coverage reports found'
4652
required: false

dist/index.js

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32261,6 +32261,7 @@ const isTrue = (variable) => {
3226132261
};
3226232262
const buildCommitExec = () => {
3226332263
const commitParent = core.getInput('commit_parent');
32264+
const gitService = core.getInput('git_service');
3226432265
const overrideBranch = core.getInput('override_branch');
3226532266
const overrideCommit = core.getInput('override_commit');
3226632267
const overridePr = core.getInput('override_pr');
@@ -32285,6 +32286,7 @@ const buildCommitExec = () => {
3228532286
if (commitParent) {
3228632287
commitExecArgs.push('--parent-sha', `${commitParent}`);
3228732288
}
32289+
commitExecArgs.push('--git-service', `${gitService ? gitService : 'github'}`);
3228832290
if (overrideBranch) {
3228932291
commitExecArgs.push('-B', `${overrideBranch}`);
3229032292
}
@@ -32329,6 +32331,7 @@ const buildGeneralExec = () => {
3232932331
return { args, verbose };
3233032332
};
3233132333
const buildReportExec = () => {
32334+
const gitService = core.getInput('git_service');
3233232335
const overrideCommit = core.getInput('override_commit');
3233332336
const overridePr = core.getInput('override_pr');
3233432337
const slug = core.getInput('slug');
@@ -32349,6 +32352,7 @@ const buildReportExec = () => {
3234932352
if (token) {
3235032353
reportOptions.env.CODECOV_TOKEN = token;
3235132354
}
32355+
reportExecArgs.push('--git-service', `${gitService ? gitService : 'github'}`);
3235232356
if (overrideCommit) {
3235332357
reportExecArgs.push('-C', `${overrideCommit}`);
3235432358
}
@@ -32375,6 +32379,7 @@ const buildReportExec = () => {
3237532379
};
3237632380
const buildUploadExec = () => {
3237732381
const disableFileFixes = isTrue(core.getInput('disable_file_fixes'));
32382+
const disableSafeDirectory = isTrue(core.getInput('diable_safe_directory'));
3237832383
const disableSearch = isTrue(core.getInput('disable_search'));
3237932384
const dryRun = isTrue(core.getInput('dry_run'));
3238032385
const envVars = core.getInput('env_vars');
@@ -32383,6 +32388,7 @@ const buildUploadExec = () => {
3238332388
const file = core.getInput('file');
3238432389
const files = core.getInput('files');
3238532390
const flags = core.getInput('flags');
32391+
const gitService = core.getInput('git_service');
3238632392
const handleNoReportsFound = isTrue(core.getInput('handle_no_reports_found'));
3238732393
const jobCode = core.getInput('job_code');
3238832394
const name = core.getInput('name');
@@ -32455,6 +32461,7 @@ const buildUploadExec = () => {
3245532461
uploadExecArgs.push('-F', `${f}`);
3245632462
});
3245732463
}
32464+
uploadExecArgs.push('--git-service', `${gitService ? gitService : 'github'}`);
3245832465
if (handleNoReportsFound) {
3245932466
uploadExecArgs.push('--handle-no-reports-found');
3246032467
}
@@ -32518,6 +32525,7 @@ const buildUploadExec = () => {
3251832525
return {
3251932526
uploadExecArgs,
3252032527
uploadOptions,
32528+
disableSafeDirectory,
3252132529
failCi,
3252232530
os,
3252332531
uploaderVersion,
@@ -32527,6 +32535,16 @@ const buildUploadExec = () => {
3252732535

3252832536

3252932537
;// CONCATENATED MODULE: ./src/helpers.ts
32538+
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
32539+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
32540+
return new (P || (P = Promise))(function (resolve, reject) {
32541+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32542+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
32543+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
32544+
step((generator = generator.apply(thisArg, _arguments || [])).next());
32545+
});
32546+
};
32547+
3253032548

3253132549
const PLATFORMS = [
3253232550
'linux',
@@ -32578,6 +32596,18 @@ const getCommand = (filename, generalArgs, command) => {
3257832596
core.info(`==> Running command '${fullCommand.join(' ')}'`);
3257932597
return fullCommand;
3258032598
};
32599+
const setSafeDirectory = () => __awaiter(void 0, void 0, void 0, function* () {
32600+
const command = ([
32601+
'git',
32602+
'config',
32603+
'--global',
32604+
'--add',
32605+
'safe.directory',
32606+
`${process.env['GITHUB_WORKSPACE']}`,
32607+
].join(' '));
32608+
core.info(`==> Running ${command}`);
32609+
yield exec.exec(command);
32610+
});
3258132611

3258232612

3258332613
// EXTERNAL MODULE: external "crypto"
@@ -32587,7 +32617,7 @@ var gpg = __nccwpck_require__(40);
3258732617
// EXTERNAL MODULE: ./node_modules/undici/index.js
3258832618
var undici = __nccwpck_require__(1773);
3258932619
;// CONCATENATED MODULE: ./src/validate.ts
32590-
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
32620+
var validate_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
3259132621
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3259232622
return new (P || (P = Promise))(function (resolve, reject) {
3259332623
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -32603,7 +32633,7 @@ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _argume
3260332633

3260432634

3260532635

32606-
const verify = (filename, platform, version, verbose, failCi) => __awaiter(void 0, void 0, void 0, function* () {
32636+
const verify = (filename, platform, version, verbose, failCi) => validate_awaiter(void 0, void 0, void 0, function* () {
3260732637
try {
3260832638
const uploaderName = getUploaderName(platform);
3260932639
// Get SHASUM and SHASUM signature files
@@ -32620,8 +32650,8 @@ const verify = (filename, platform, version, verbose, failCi) => __awaiter(void
3262032650
console.log(`Received SHA256SUM signature ${shaSig}`);
3262132651
}
3262232652
yield external_fs_.writeFileSync(external_path_.join(__dirname, `${uploaderName}.SHA256SUM.sig`), shaSig);
32623-
const validateSha = () => __awaiter(void 0, void 0, void 0, function* () {
32624-
const calculateHash = (filename) => __awaiter(void 0, void 0, void 0, function* () {
32653+
const validateSha = () => validate_awaiter(void 0, void 0, void 0, function* () {
32654+
const calculateHash = (filename) => validate_awaiter(void 0, void 0, void 0, function* () {
3262532655
const stream = external_fs_.createReadStream(filename);
3262632656
const uploaderSha = external_crypto_.createHash(`sha256`);
3262732657
stream.pipe(uploaderSha);
@@ -32646,7 +32676,7 @@ const verify = (filename, platform, version, verbose, failCi) => __awaiter(void
3264632676
'--verify',
3264732677
external_path_.join(__dirname, `${uploaderName}.SHA256SUM.sig`),
3264832678
external_path_.join(__dirname, `${uploaderName}.SHA256SUM`),
32649-
], (err, verifyResult) => __awaiter(void 0, void 0, void 0, function* () {
32679+
], (err, verifyResult) => validate_awaiter(void 0, void 0, void 0, function* () {
3265032680
if (err) {
3265132681
setFailure('Codecov: Error importing pgp key', failCi);
3265232682
}
@@ -32661,7 +32691,7 @@ const verify = (filename, platform, version, verbose, failCi) => __awaiter(void
3266132691
'--no-default-keyring',
3266232692
'--import',
3266332693
__nccwpck_require__.ab + "pgp_keys.asc",
32664-
], (err, importResult) => __awaiter(void 0, void 0, void 0, function* () {
32694+
], (err, importResult) => validate_awaiter(void 0, void 0, void 0, function* () {
3266532695
if (err) {
3266632696
setFailure('Codecov: Error importing pgp key', failCi);
3266732697
}
@@ -32726,7 +32756,7 @@ let failCi;
3272632756
try {
3272732757
const { commitExecArgs, commitOptions, commitCommand } = buildCommitExec();
3272832758
const { reportExecArgs, reportOptions, reportCommand } = buildReportExec();
32729-
const { uploadExecArgs, uploadOptions, failCi, os, uploaderVersion, uploadCommand, } = buildUploadExec();
32759+
const { uploadExecArgs, uploadOptions, disableSafeDirectory, failCi, os, uploaderVersion, uploadCommand, } = buildUploadExec();
3273032760
const { args, verbose } = buildGeneralExec();
3273132761
const platform = getPlatform(os);
3273232762
const filename = external_path_.join(__dirname, getUploaderName(platform));
@@ -32742,6 +32772,9 @@ try {
3274232772
yield validate(filename, platform, uploaderVersion, verbose, failCi);
3274332773
yield version(platform, uploaderVersion);
3274432774
yield external_fs_.chmodSync(filename, '777');
32775+
if (!disableSafeDirectory) {
32776+
yield setSafeDirectory();
32777+
}
3274532778
const unlink = () => {
3274632779
external_fs_.unlink(filename, (err) => {
3274732780
if (err) {
@@ -32752,7 +32785,7 @@ try {
3275232785
const doUpload = () => src_awaiter(void 0, void 0, void 0, function* () {
3275332786
yield exec.exec(getCommand(filename, args, uploadCommand).join(' '), uploadExecArgs, uploadOptions)
3275432787
.catch((err) => {
32755-
setFailure(`Codecov:
32788+
setFailure(`Codecov:
3275632789
Failed to properly upload report: ${err.message}`, failCi);
3275732790
});
3275832791
});
@@ -32763,7 +32796,7 @@ try {
3276332796
yield doUpload();
3276432797
}
3276532798
})).catch((err) => {
32766-
setFailure(`Codecov:
32799+
setFailure(`Codecov:
3276732800
Failed to properly create report: ${err.message}`, failCi);
3276832801
});
3276932802
});

dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/buildExec.test.ts

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ test('general args', () => {
3838

3939

4040
test('upload args using context', () => {
41-
const expectedArgs = [];
41+
const expectedArgs = [
42+
'--git-service',
43+
'github',
44+
];
4245
const {uploadExecArgs, uploadCommand} = buildUploadExec();
4346
if (context.eventName == 'pull_request') {
4447
expectedArgs.push('-C', `${context.payload.pull_request.head.sha}`);
@@ -65,6 +68,7 @@ test('upload args', () => {
6568
'file': 'coverage.xml',
6669
'files': 'dir1/coverage.xml,dir2/coverage.xml',
6770
'flags': 'test,test2',
71+
'git_service': 'github_enterprise',
6872
'handle_no_reports_found': 'true',
6973
'job_code': '32',
7074
'name': 'codecov',
@@ -110,6 +114,8 @@ test('upload args', () => {
110114
'test',
111115
'-F',
112116
'test2',
117+
'--git-service',
118+
'github_enterprise',
113119
'--handle-no-reports-found',
114120
'--job-code',
115121
'32',
@@ -152,6 +158,7 @@ test('upload args', () => {
152158

153159
test('report args', () => {
154160
const envs = {
161+
git_service: 'github_enterprise',
155162
override_commit: '9caabca5474b49de74ef5667deabaf74cdacc244',
156163
override_pr: 'fakePR',
157164
slug: 'fakeOwner/fakeRepo',
@@ -165,6 +172,8 @@ test('report args', () => {
165172
const {reportExecArgs, reportCommand} = buildReportExec();
166173

167174
const expectedArgs = [
175+
'--git-service',
176+
'github_enterprise',
168177
'-C',
169178
'9caabca5474b49de74ef5667deabaf74cdacc244',
170179
'-P',
@@ -189,7 +198,10 @@ test('report args using context', () => {
189198
for (const env of Object.keys(envs)) {
190199
process.env['INPUT_' + env.toUpperCase()] = envs[env];
191200
}
192-
const expectedArgs : string[] = [];
201+
const expectedArgs : string[] = [
202+
'--git-service',
203+
'github',
204+
];
193205
if (context.eventName == 'pull_request') {
194206
expectedArgs.push('-C', `${context.payload.pull_request.head.sha}`);
195207
}
@@ -206,6 +218,7 @@ test('report args using context', () => {
206218

207219
test('commit args', () => {
208220
const envs = {
221+
git_service: 'github_enterprise',
209222
commit_parent: '83231650328f11695dfb754ca0f540516f188d27',
210223
override_branch: 'thomasrockhu/test',
211224
override_commit: '9caabca5474b49de74ef5667deabaf74cdacc244',
@@ -222,6 +235,8 @@ test('commit args', () => {
222235
const expectedArgs = [
223236
'--parent-sha',
224237
'83231650328f11695dfb754ca0f540516f188d27',
238+
'--git-service',
239+
'github_enterprise',
225240
'-B',
226241
'thomasrockhu/test',
227242
'-C',
@@ -241,7 +256,10 @@ test('commit args', () => {
241256
});
242257

243258
test('commit args using context', () => {
244-
const expectedArgs :string[] = [];
259+
const expectedArgs :string[] = [
260+
'--git-service',
261+
'github',
262+
];
245263

246264
const {commitExecArgs, commitCommand} = buildCommitExec();
247265
if (context.eventName == 'pull_request') {

0 commit comments

Comments
 (0)