mirror of
https://github.com/github/codeql-action.git
synced 2025-12-21 23:00:14 +08:00
Address review comments
This commit is contained in:
1
lib/actions-util.js
generated
1
lib/actions-util.js
generated
@@ -678,7 +678,6 @@ async function isAnalyzingDefaultBranch() {
|
|||||||
}
|
}
|
||||||
exports.isAnalyzingDefaultBranch = isAnalyzingDefaultBranch;
|
exports.isAnalyzingDefaultBranch = isAnalyzingDefaultBranch;
|
||||||
async function printDebugLogs(config) {
|
async function printDebugLogs(config) {
|
||||||
core.info("Debug mode is on. Printing CodeQL debug logs...");
|
|
||||||
for (const language of config.languages) {
|
for (const language of config.languages) {
|
||||||
const databaseDirectory = (0, util_1.getCodeQLDatabasePath)(config, language);
|
const databaseDirectory = (0, util_1.getCodeQLDatabasePath)(config, language);
|
||||||
const logsDirectory = path.join(databaseDirectory, "log");
|
const logsDirectory = path.join(databaseDirectory, "log");
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
2
lib/analyze-action-post.js
generated
2
lib/analyze-action-post.js
generated
@@ -47,7 +47,7 @@ async function runWrapper() {
|
|||||||
await run(debugArtifacts.uploadSarifDebugArtifact);
|
await run(debugArtifacts.uploadSarifDebugArtifact);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
core.setFailed(`analyze action cleanup failed: ${error}`);
|
core.setFailed(`analyze post-action step failed: ${error}`);
|
||||||
console.log(error);
|
console.log(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"analyze-action-post.js","sourceRoot":"","sources":["../src/analyze-action-post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,oDAAsC;AAEtC,4DAA8C;AAC9C,iDAA2C;AAC3C,kEAAoD;AACpD,uCAA6C;AAE7C,KAAK,UAAU,GAAG,CAAC,wBAAkC;IACnD,MAAM,MAAM,GAAG,IAAA,0BAAgB,GAAE,CAAC;IAElC,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAS,EAAC,WAAW,CAAC,qBAAqB,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5E,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;KACH;IAED,+CAA+C;IAC/C,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAAE;QACrB,IAAI,CAAC,IAAI,CACP,oFAAoF,CACrF,CAAC;QACF,MAAM,SAAS,GAAG,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,wBAAwB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;KACnD;AACH,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,IAAI;QACF,MAAM,GAAG,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;KACpD;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,SAAS,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACpB;AACH,CAAC;AAED,KAAK,UAAU,EAAE,CAAC"}
|
{"version":3,"file":"analyze-action-post.js","sourceRoot":"","sources":["../src/analyze-action-post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,oDAAsC;AAEtC,4DAA8C;AAC9C,iDAA2C;AAC3C,kEAAoD;AACpD,uCAA6C;AAE7C,KAAK,UAAU,GAAG,CAAC,wBAAkC;IACnD,MAAM,MAAM,GAAG,IAAA,0BAAgB,GAAE,CAAC;IAElC,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAS,EAAC,WAAW,CAAC,qBAAqB,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5E,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;KACH;IAED,+CAA+C;IAC/C,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAAE;QACrB,IAAI,CAAC,IAAI,CACP,oFAAoF,CACrF,CAAC;QACF,MAAM,SAAS,GAAG,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,wBAAwB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;KACnD;AACH,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,IAAI;QACF,MAAM,GAAG,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;KACpD;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,SAAS,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACpB;AACH,CAAC;AAED,KAAK,UAAU,EAAE,CAAC"}
|
||||||
31
lib/debug-artifacts.js
generated
31
lib/debug-artifacts.js
generated
@@ -99,9 +99,9 @@ exports.uploadLogsDebugArtifact = uploadLogsDebugArtifact;
|
|||||||
/**
|
/**
|
||||||
* If a database has not been finalized, we cannot run the `codeql database bundle`
|
* If a database has not been finalized, we cannot run the `codeql database bundle`
|
||||||
* command in the CLI because it will return an error. Instead we directly zip
|
* command in the CLI because it will return an error. Instead we directly zip
|
||||||
* all files in the database folder and upload it as an artifact.
|
* all files in the database folder and return the path.
|
||||||
*/
|
*/
|
||||||
async function uploadPartialDatabaseBundle(config, language) {
|
async function createPartialDatabaseBundle(config, language) {
|
||||||
const databasePath = (0, util_1.getCodeQLDatabasePath)(config, language);
|
const databasePath = (0, util_1.getCodeQLDatabasePath)(config, language);
|
||||||
const databaseBundlePath = path.resolve(config.dbLocation, `${config.debugDatabaseName}-${language}-partial.zip`);
|
const databaseBundlePath = path.resolve(config.dbLocation, `${config.debugDatabaseName}-${language}-partial.zip`);
|
||||||
core.info(`${config.debugDatabaseName}-${language} is not finalized. Uploading partial database bundle at ${databaseBundlePath}...`);
|
core.info(`${config.debugDatabaseName}-${language} is not finalized. Uploading partial database bundle at ${databaseBundlePath}...`);
|
||||||
@@ -112,21 +112,30 @@ async function uploadPartialDatabaseBundle(config, language) {
|
|||||||
const zip = new adm_zip_1.default();
|
const zip = new adm_zip_1.default();
|
||||||
zip.addLocalFolder(databasePath);
|
zip.addLocalFolder(databasePath);
|
||||||
zip.writeZip(databaseBundlePath);
|
zip.writeZip(databaseBundlePath);
|
||||||
await uploadDebugArtifacts([databaseBundlePath], config.dbLocation, config.debugArtifactName);
|
return databaseBundlePath;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Runs `codeql database bundle` command and returns the path.
|
||||||
|
*/
|
||||||
|
async function createDatabaseBundleCli(config, language) {
|
||||||
|
// Otherwise run `codeql database bundle` command.
|
||||||
|
const databaseBundlePath = await (0, util_1.bundleDb)(config, language, await (0, codeql_1.getCodeQL)(config.codeQLCmd), `${config.debugDatabaseName}-${language}`);
|
||||||
|
return databaseBundlePath;
|
||||||
}
|
}
|
||||||
async function uploadDatabaseBundleDebugArtifact(config, logger) {
|
async function uploadDatabaseBundleDebugArtifact(config, logger) {
|
||||||
for (const language of config.languages) {
|
for (const language of config.languages) {
|
||||||
if (!(0, analyze_1.dbIsFinalized)(config, language, logger)) {
|
|
||||||
await uploadPartialDatabaseBundle(config, language);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
// Otherwise run `codeql database bundle` command.
|
let databaseBundlePath;
|
||||||
const bundlePath = await (0, util_1.bundleDb)(config, language, await (0, codeql_1.getCodeQL)(config.codeQLCmd), `${config.debugDatabaseName}-${language}`);
|
if (!(0, analyze_1.dbIsFinalized)(config, language, logger)) {
|
||||||
await uploadDebugArtifacts([bundlePath], config.dbLocation, config.debugArtifactName);
|
databaseBundlePath = await createPartialDatabaseBundle(config, language);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
databaseBundlePath = await createDatabaseBundleCli(config, language);
|
||||||
|
}
|
||||||
|
await uploadDebugArtifacts([databaseBundlePath], config.dbLocation, config.debugArtifactName);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
core.info(`Failed to upload database debug bundles for ${config.debugDatabaseName}-${language}: ${error}`);
|
core.info(`Failed to upload database debug bundle for ${config.debugDatabaseName}-${language}: ${error}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"debug-artifacts.js","sourceRoot":"","sources":["../src/debug-artifacts.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"debug-artifacts.js","sourceRoot":"","sources":["../src/debug-artifacts.ts"],"names":[],"mappings":"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"}
|
||||||
2
lib/init-action-post.js
generated
2
lib/init-action-post.js
generated
@@ -48,7 +48,7 @@ async function runWrapper() {
|
|||||||
await run(debugArtifacts.uploadDatabaseBundleDebugArtifact, debugArtifacts.uploadLogsDebugArtifact, actionsUtil.printDebugLogs);
|
await run(debugArtifacts.uploadDatabaseBundleDebugArtifact, debugArtifacts.uploadLogsDebugArtifact, actionsUtil.printDebugLogs);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
core.setFailed(`init action cleanup failed: ${error}`);
|
core.setFailed(`init post-action step failed: ${error}`);
|
||||||
console.log(error);
|
console.log(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"init-action-post.js","sourceRoot":"","sources":["../src/init-action-post.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;AAEH,oDAAsC;AAEtC,4DAA8C;AAC9C,iDAA2C;AAC3C,kEAAoD;AACpD,uCAA6C;AAE7C,KAAK,UAAU,GAAG,CAChB,iCAA2C,EAC3C,uBAAiC,EACjC,cAAwB;IAExB,MAAM,MAAM,GAAG,IAAA,0BAAgB,GAAE,CAAC;IAElC,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAS,EAAC,WAAW,CAAC,qBAAqB,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5E,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;KACH;IAED,qDAAqD;IACrD,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAAE;QACrB,IAAI,CAAC,IAAI,CACP,mGAAmG,CACpG,CAAC;QACF,MAAM,iCAAiC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;KAC9B;AACH,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,IAAI;QACF,MAAM,GAAG,CACP,cAAc,CAAC,iCAAiC,EAChD,cAAc,CAAC,uBAAuB,EACtC,WAAW,CAAC,cAAc,CAC3B,CAAC;KACH;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,SAAS,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACpB;AACH,CAAC;AAED,KAAK,UAAU,EAAE,CAAC"}
|
{"version":3,"file":"init-action-post.js","sourceRoot":"","sources":["../src/init-action-post.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;AAEH,oDAAsC;AAEtC,4DAA8C;AAC9C,iDAA2C;AAC3C,kEAAoD;AACpD,uCAA6C;AAE7C,KAAK,UAAU,GAAG,CAChB,iCAA2C,EAC3C,uBAAiC,EACjC,cAAwB;IAExB,MAAM,MAAM,GAAG,IAAA,0BAAgB,GAAE,CAAC;IAElC,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAS,EAAC,WAAW,CAAC,qBAAqB,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5E,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;KACH;IAED,qDAAqD;IACrD,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAAE;QACrB,IAAI,CAAC,IAAI,CACP,mGAAmG,CACpG,CAAC;QACF,MAAM,iCAAiC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;KAC9B;AACH,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,IAAI;QACF,MAAM,GAAG,CACP,cAAc,CAAC,iCAAiC,EAChD,cAAc,CAAC,uBAAuB,EACtC,WAAW,CAAC,cAAc,CAC3B,CAAC;KACH;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,SAAS,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACpB;AACH,CAAC;AAED,KAAK,UAAU,EAAE,CAAC"}
|
||||||
62
lib/util.test.js
generated
62
lib/util.test.js
generated
@@ -317,37 +317,37 @@ for (const [version, githubVersion, shouldReportWarning,] of CHECK_ACTION_VERSIO
|
|||||||
isActionsStub.restore();
|
isActionsStub.restore();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
(0, ava_1.default)("doesDirectoryExist", (t) => {
|
(0, ava_1.default)("doesDirectoryExist", async (t) => {
|
||||||
const tmpDir = fs.mkdtempSync(path_1.default.join(os.tmpdir(), "does-dir-exist-"));
|
await util.withTmpDir(async (tmpDir) => {
|
||||||
const topLevelFile = "top-level-test-file.txt";
|
const topLevelFile = "top-level-test-file.txt";
|
||||||
fs.writeFileSync(topLevelFile, "");
|
fs.writeFileSync(topLevelFile, "");
|
||||||
fs.writeFileSync(`${tmpDir}/nested-test-file.txt`, "");
|
fs.writeFileSync(`${tmpDir}/nested-test-file.txt`, "");
|
||||||
// Returns true if directory
|
// Returns true if directory
|
||||||
t.true(util.doesDirectoryExist(tmpDir));
|
t.true(util.doesDirectoryExist(tmpDir));
|
||||||
// Returns false if file
|
// Returns false if file
|
||||||
t.false(util.doesDirectoryExist(topLevelFile));
|
t.false(util.doesDirectoryExist(topLevelFile));
|
||||||
// Returns false if no file of this type exists
|
// Returns false if no file of this type exists
|
||||||
t.false(util.doesDirectoryExist("non-existent-file.txt"));
|
t.false(util.doesDirectoryExist("non-existent-file.txt"));
|
||||||
// Clean up test files.
|
});
|
||||||
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
||||||
fs.unlinkSync(topLevelFile);
|
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("listFolder", (t) => {
|
(0, ava_1.default)("listFolder", async (t) => {
|
||||||
// Returns empty if not a directory
|
await util.withTmpDir(async (tmpDir) => {
|
||||||
t.deepEqual(util.listFolder("not-a-directory"), []);
|
// Returns empty if not a directory
|
||||||
// Returns empty if directory is empty
|
t.deepEqual(util.listFolder("not-a-directory"), []);
|
||||||
const emptyTmpDir = fs.mkdtempSync(path_1.default.join(os.tmpdir(), "list-folder-empty-"));
|
// Returns empty if directory is empty
|
||||||
t.deepEqual(util.listFolder(emptyTmpDir), []);
|
const emptyTmpDir = fs.mkdtempSync(path_1.default.join(os.tmpdir(), "list-folder-empty-"));
|
||||||
fs.rmSync(emptyTmpDir, { recursive: true, force: true });
|
t.deepEqual(util.listFolder(emptyTmpDir), []);
|
||||||
// Returns all file names in directory
|
fs.rmSync(emptyTmpDir, { recursive: true, force: true });
|
||||||
const tmpDir = fs.mkdtempSync(path_1.default.join(os.tmpdir(), "list-folder-"));
|
// Returns all file names in directory
|
||||||
fs.writeFileSync(`${tmpDir}/test-file-1.txt`, "");
|
tmpDir = fs.mkdtempSync(path_1.default.join(os.tmpdir(), "list-folder-"));
|
||||||
fs.writeFileSync(`${tmpDir}/test-file-2.txt`, "");
|
fs.writeFileSync(`${tmpDir}/test-file-1.txt`, "");
|
||||||
fs.writeFileSync(`${tmpDir}/test-file-3.txt`, "");
|
fs.writeFileSync(`${tmpDir}/test-file-2.txt`, "");
|
||||||
t.deepEqual(util.listFolder(tmpDir), [
|
fs.writeFileSync(`${tmpDir}/test-file-3.txt`, "");
|
||||||
`${tmpDir}/test-file-1.txt`,
|
t.deepEqual(util.listFolder(tmpDir), [
|
||||||
`${tmpDir}/test-file-2.txt`,
|
`${tmpDir}/test-file-1.txt`,
|
||||||
`${tmpDir}/test-file-3.txt`,
|
`${tmpDir}/test-file-2.txt`,
|
||||||
]);
|
`${tmpDir}/test-file-3.txt`,
|
||||||
|
]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
//# sourceMappingURL=util.test.js.map
|
//# sourceMappingURL=util.test.js.map
|
||||||
File diff suppressed because one or more lines are too long
@@ -876,7 +876,6 @@ export async function isAnalyzingDefaultBranch(): Promise<boolean> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function printDebugLogs(config: Config) {
|
export async function printDebugLogs(config: Config) {
|
||||||
core.info("Debug mode is on. Printing CodeQL debug logs...");
|
|
||||||
for (const language of config.languages) {
|
for (const language of config.languages) {
|
||||||
const databaseDirectory = getCodeQLDatabasePath(config, language);
|
const databaseDirectory = getCodeQLDatabasePath(config, language);
|
||||||
const logsDirectory = path.join(databaseDirectory, "log");
|
const logsDirectory = path.join(databaseDirectory, "log");
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ async function runWrapper() {
|
|||||||
try {
|
try {
|
||||||
await run(debugArtifacts.uploadSarifDebugArtifact);
|
await run(debugArtifacts.uploadSarifDebugArtifact);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(`analyze action cleanup failed: ${error}`);
|
core.setFailed(`analyze post-action step failed: ${error}`);
|
||||||
console.log(error);
|
console.log(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,9 +116,12 @@ export async function uploadLogsDebugArtifact(config: Config) {
|
|||||||
/**
|
/**
|
||||||
* If a database has not been finalized, we cannot run the `codeql database bundle`
|
* If a database has not been finalized, we cannot run the `codeql database bundle`
|
||||||
* command in the CLI because it will return an error. Instead we directly zip
|
* command in the CLI because it will return an error. Instead we directly zip
|
||||||
* all files in the database folder and upload it as an artifact.
|
* all files in the database folder and return the path.
|
||||||
*/
|
*/
|
||||||
async function uploadPartialDatabaseBundle(config: Config, language: Language) {
|
async function createPartialDatabaseBundle(
|
||||||
|
config: Config,
|
||||||
|
language: Language
|
||||||
|
): Promise<string> {
|
||||||
const databasePath = getCodeQLDatabasePath(config, language);
|
const databasePath = getCodeQLDatabasePath(config, language);
|
||||||
const databaseBundlePath = path.resolve(
|
const databaseBundlePath = path.resolve(
|
||||||
config.dbLocation,
|
config.dbLocation,
|
||||||
@@ -134,11 +137,24 @@ async function uploadPartialDatabaseBundle(config: Config, language: Language) {
|
|||||||
const zip = new AdmZip();
|
const zip = new AdmZip();
|
||||||
zip.addLocalFolder(databasePath);
|
zip.addLocalFolder(databasePath);
|
||||||
zip.writeZip(databaseBundlePath);
|
zip.writeZip(databaseBundlePath);
|
||||||
await uploadDebugArtifacts(
|
return databaseBundlePath;
|
||||||
[databaseBundlePath],
|
}
|
||||||
config.dbLocation,
|
|
||||||
config.debugArtifactName
|
/**
|
||||||
|
* Runs `codeql database bundle` command and returns the path.
|
||||||
|
*/
|
||||||
|
async function createDatabaseBundleCli(
|
||||||
|
config: Config,
|
||||||
|
language: Language
|
||||||
|
): Promise<string> {
|
||||||
|
// Otherwise run `codeql database bundle` command.
|
||||||
|
const databaseBundlePath = await bundleDb(
|
||||||
|
config,
|
||||||
|
language,
|
||||||
|
await getCodeQL(config.codeQLCmd),
|
||||||
|
`${config.debugDatabaseName}-${language}`
|
||||||
);
|
);
|
||||||
|
return databaseBundlePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function uploadDatabaseBundleDebugArtifact(
|
export async function uploadDatabaseBundleDebugArtifact(
|
||||||
@@ -146,26 +162,24 @@ export async function uploadDatabaseBundleDebugArtifact(
|
|||||||
logger: Logger
|
logger: Logger
|
||||||
) {
|
) {
|
||||||
for (const language of config.languages) {
|
for (const language of config.languages) {
|
||||||
if (!dbIsFinalized(config, language, logger)) {
|
|
||||||
await uploadPartialDatabaseBundle(config, language);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
// Otherwise run `codeql database bundle` command.
|
let databaseBundlePath;
|
||||||
const bundlePath = await bundleDb(
|
if (!dbIsFinalized(config, language, logger)) {
|
||||||
config,
|
databaseBundlePath = await createPartialDatabaseBundle(
|
||||||
language,
|
config,
|
||||||
await getCodeQL(config.codeQLCmd),
|
language
|
||||||
`${config.debugDatabaseName}-${language}`
|
);
|
||||||
);
|
} else {
|
||||||
|
databaseBundlePath = await createDatabaseBundleCli(config, language);
|
||||||
|
}
|
||||||
await uploadDebugArtifacts(
|
await uploadDebugArtifacts(
|
||||||
[bundlePath],
|
[databaseBundlePath],
|
||||||
config.dbLocation,
|
config.dbLocation,
|
||||||
config.debugArtifactName
|
config.debugArtifactName
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.info(
|
core.info(
|
||||||
`Failed to upload database debug bundles for ${config.debugDatabaseName}-${language}: ${error}`
|
`Failed to upload database debug bundle for ${config.debugDatabaseName}-${language}: ${error}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ async function runWrapper() {
|
|||||||
actionsUtil.printDebugLogs
|
actionsUtil.printDebugLogs
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(`init action cleanup failed: ${error}`);
|
core.setFailed(`init post-action step failed: ${error}`);
|
||||||
console.log(error);
|
console.log(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -442,46 +442,44 @@ for (const [
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
test("doesDirectoryExist", (t) => {
|
test("doesDirectoryExist", async (t) => {
|
||||||
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "does-dir-exist-"));
|
await util.withTmpDir(async (tmpDir: string) => {
|
||||||
|
const topLevelFile = "top-level-test-file.txt";
|
||||||
|
fs.writeFileSync(topLevelFile, "");
|
||||||
|
fs.writeFileSync(`${tmpDir}/nested-test-file.txt`, "");
|
||||||
|
|
||||||
const topLevelFile = "top-level-test-file.txt";
|
// Returns true if directory
|
||||||
fs.writeFileSync(topLevelFile, "");
|
t.true(util.doesDirectoryExist(tmpDir));
|
||||||
fs.writeFileSync(`${tmpDir}/nested-test-file.txt`, "");
|
|
||||||
|
|
||||||
// Returns true if directory
|
// Returns false if file
|
||||||
t.true(util.doesDirectoryExist(tmpDir));
|
t.false(util.doesDirectoryExist(topLevelFile));
|
||||||
|
|
||||||
// Returns false if file
|
// Returns false if no file of this type exists
|
||||||
t.false(util.doesDirectoryExist(topLevelFile));
|
t.false(util.doesDirectoryExist("non-existent-file.txt"));
|
||||||
|
});
|
||||||
// Returns false if no file of this type exists
|
|
||||||
t.false(util.doesDirectoryExist("non-existent-file.txt"));
|
|
||||||
|
|
||||||
// Clean up test files.
|
|
||||||
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
||||||
fs.unlinkSync(topLevelFile);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("listFolder", (t) => {
|
test("listFolder", async (t) => {
|
||||||
// Returns empty if not a directory
|
await util.withTmpDir(async (tmpDir: string) => {
|
||||||
t.deepEqual(util.listFolder("not-a-directory"), []);
|
// Returns empty if not a directory
|
||||||
|
t.deepEqual(util.listFolder("not-a-directory"), []);
|
||||||
|
|
||||||
// Returns empty if directory is empty
|
// Returns empty if directory is empty
|
||||||
const emptyTmpDir = fs.mkdtempSync(
|
const emptyTmpDir = fs.mkdtempSync(
|
||||||
path.join(os.tmpdir(), "list-folder-empty-")
|
path.join(os.tmpdir(), "list-folder-empty-")
|
||||||
);
|
);
|
||||||
t.deepEqual(util.listFolder(emptyTmpDir), []);
|
t.deepEqual(util.listFolder(emptyTmpDir), []);
|
||||||
fs.rmSync(emptyTmpDir, { recursive: true, force: true });
|
fs.rmSync(emptyTmpDir, { recursive: true, force: true });
|
||||||
|
|
||||||
// Returns all file names in directory
|
// Returns all file names in directory
|
||||||
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "list-folder-"));
|
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "list-folder-"));
|
||||||
fs.writeFileSync(`${tmpDir}/test-file-1.txt`, "");
|
fs.writeFileSync(`${tmpDir}/test-file-1.txt`, "");
|
||||||
fs.writeFileSync(`${tmpDir}/test-file-2.txt`, "");
|
fs.writeFileSync(`${tmpDir}/test-file-2.txt`, "");
|
||||||
fs.writeFileSync(`${tmpDir}/test-file-3.txt`, "");
|
fs.writeFileSync(`${tmpDir}/test-file-3.txt`, "");
|
||||||
t.deepEqual(util.listFolder(tmpDir), [
|
t.deepEqual(util.listFolder(tmpDir), [
|
||||||
`${tmpDir}/test-file-1.txt`,
|
`${tmpDir}/test-file-1.txt`,
|
||||||
`${tmpDir}/test-file-2.txt`,
|
`${tmpDir}/test-file-2.txt`,
|
||||||
`${tmpDir}/test-file-3.txt`,
|
`${tmpDir}/test-file-3.txt`,
|
||||||
]);
|
]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
0
top-level-test-file.txt
Normal file
0
top-level-test-file.txt
Normal file
Reference in New Issue
Block a user