Skip to content

Commit f5f9571

Browse files
committed
Configure temp dependency dir for C# extractor when FF is enabled
And also clean it up.
1 parent ecaa6db commit f5f9571

File tree

7 files changed

+93
-37
lines changed

7 files changed

+93
-37
lines changed

lib/analyze-action-post.js

Lines changed: 16 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/analyze-action.js

Lines changed: 9 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/analyze-action-env.test.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,20 @@ test("analyze action with RAM & threads from environment variables", async (t) =
7474
// wait for the action promise to complete before starting verification.
7575
await analyzeAction.runPromise;
7676

77-
t.assert(runFinalizeStub.calledOnce);
78-
t.deepEqual(runFinalizeStub.firstCall.args[1], "--threads=-1");
79-
t.deepEqual(runFinalizeStub.firstCall.args[2], "--ram=4992");
80-
t.assert(runQueriesStub.calledOnce);
81-
t.deepEqual(runQueriesStub.firstCall.args[2], "--threads=-1");
82-
t.deepEqual(runQueriesStub.firstCall.args[1], "--ram=4992");
77+
t.assert(
78+
runFinalizeStub.calledOnceWith(
79+
sinon.match.any,
80+
sinon.match.any,
81+
"--threads=-1",
82+
"--ram=4992",
83+
),
84+
);
85+
t.assert(
86+
runQueriesStub.calledOnceWith(
87+
sinon.match.any,
88+
"--ram=4992",
89+
"--threads=-1",
90+
),
91+
);
8392
});
8493
});

src/analyze-action-input.test.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,20 @@ test("analyze action with RAM & threads from action inputs", async (t) => {
7272
// wait for the action promise to complete before starting verification.
7373
await analyzeAction.runPromise;
7474

75-
t.assert(runFinalizeStub.calledOnce);
76-
t.deepEqual(runFinalizeStub.firstCall.args[1], "--threads=-1");
77-
t.deepEqual(runFinalizeStub.firstCall.args[2], "--ram=3012");
78-
t.assert(runQueriesStub.calledOnce);
79-
t.deepEqual(runQueriesStub.firstCall.args[2], "--threads=-1");
80-
t.deepEqual(runQueriesStub.firstCall.args[1], "--ram=3012");
75+
t.assert(
76+
runFinalizeStub.calledOnceWith(
77+
sinon.match.any,
78+
sinon.match.any,
79+
"--threads=-1",
80+
"--ram=3012",
81+
),
82+
);
83+
t.assert(
84+
runQueriesStub.calledOnceWith(
85+
sinon.match.any,
86+
"--ram=3012",
87+
"--threads=-1",
88+
),
89+
);
8190
});
8291
});

src/analyze-action-post.ts

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ import { getGitHubVersion } from "./api-client";
1212
import { getCodeQL } from "./codeql";
1313
import { getConfig } from "./config-utils";
1414
import * as debugArtifacts from "./debug-artifacts";
15-
import { getJavaTempDependencyDir } from "./dependency-caching";
15+
import {
16+
getCsharpTempDependencyDir,
17+
getJavaTempDependencyDir,
18+
} from "./dependency-caching";
1619
import { EnvVar } from "./environment";
1720
import { getActionsLogger } from "./logging";
1821
import { checkGitHubVersionInRange, getErrorMessage } from "./util";
@@ -42,17 +45,22 @@ async function runWrapper() {
4245
}
4346
}
4447

45-
// If we analysed Java in build-mode: none, we may have downloaded dependencies
48+
// If we analysed Java or C# in build-mode: none, we may have downloaded dependencies
4649
// to the temp directory. Clean these up so they don't persist unnecessarily
4750
// long on self-hosted runners.
48-
const javaTempDependencyDir = getJavaTempDependencyDir();
49-
if (fs.existsSync(javaTempDependencyDir)) {
50-
try {
51-
fs.rmSync(javaTempDependencyDir, { recursive: true });
52-
} catch (error) {
53-
logger.info(
54-
`Failed to remove temporary Java dependencies directory: ${getErrorMessage(error)}`,
55-
);
51+
const tempDependencyDirs = [
52+
getJavaTempDependencyDir(),
53+
getCsharpTempDependencyDir(),
54+
];
55+
for (const tempDependencyDir of tempDependencyDirs) {
56+
if (fs.existsSync(tempDependencyDir)) {
57+
try {
58+
fs.rmSync(tempDependencyDir, { recursive: true });
59+
} catch (error) {
60+
logger.info(
61+
`Failed to remove temporary dependencies directory: ${getErrorMessage(error)}`,
62+
);
63+
}
5664
}
5765
}
5866
} catch (error) {

src/analyze-action.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,7 @@ async function run() {
315315
await runAutobuildIfLegacyGoWorkflow(config, logger);
316316

317317
dbCreationTimings = await runFinalize(
318+
features,
318319
outputDir,
319320
threads,
320321
memory,

src/analyze.ts

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ import * as analyses from "./analyses";
1010
import { setupCppAutobuild } from "./autobuild";
1111
import { type CodeQL } from "./codeql";
1212
import * as configUtils from "./config-utils";
13-
import { getJavaTempDependencyDir } from "./dependency-caching";
13+
import {
14+
getCsharpTempDependencyDir,
15+
getJavaTempDependencyDir,
16+
} from "./dependency-caching";
1417
import { addDiagnostic, makeDiagnostic } from "./diagnostics";
1518
import {
1619
DiffThunkRange,
@@ -98,6 +101,7 @@ async function setupPythonExtractor(logger: Logger) {
98101

99102
export async function runExtraction(
100103
codeql: CodeQL,
104+
features: FeatureEnablement,
101105
config: configUtils.Config,
102106
logger: Logger,
103107
) {
@@ -122,7 +126,7 @@ export async function runExtraction(
122126
await setupCppAutobuild(codeql, logger);
123127
}
124128

125-
// The Java `build-mode: none` extractor places dependencies (.jar files) in the
129+
// The Java and C# `build-mode: none` extractors place dependencies in the
126130
// database scratch directory by default. For dependency caching purposes, we want
127131
// a stable path that caches can be restored into and that we can cache at the
128132
// end of the workflow (i.e. that does not get removed when the scratch directory is).
@@ -133,6 +137,15 @@ export async function runExtraction(
133137
process.env["CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_DEPENDENCY_DIR"] =
134138
getJavaTempDependencyDir();
135139
}
140+
if (
141+
language === KnownLanguage.csharp &&
142+
config.buildMode === BuildMode.None &&
143+
(await features.getValue(Feature.CsharpCacheBuildModeNone))
144+
) {
145+
process.env[
146+
"CODEQL_EXTRACTOR_CSHARP_OPTION_BUILDLESS_DEPENDENCY_DIR"
147+
] = getCsharpTempDependencyDir();
148+
}
136149

137150
await codeql.extractUsingBuildMode(config, language);
138151
} else {
@@ -177,13 +190,14 @@ export function dbIsFinalized(
177190

178191
async function finalizeDatabaseCreation(
179192
codeql: CodeQL,
193+
features: FeatureEnablement,
180194
config: configUtils.Config,
181195
threadsFlag: string,
182196
memoryFlag: string,
183197
logger: Logger,
184198
): Promise<DatabaseCreationTimings> {
185199
const extractionStart = performance.now();
186-
await runExtraction(codeql, config, logger);
200+
await runExtraction(codeql, features, config, logger);
187201
const extractionTime = performance.now() - extractionStart;
188202

189203
const trapImportStart = performance.now();
@@ -597,6 +611,7 @@ export async function runQueries(
597611
}
598612

599613
export async function runFinalize(
614+
features: FeatureEnablement,
600615
outputDir: string,
601616
threadsFlag: string,
602617
memoryFlag: string,
@@ -615,6 +630,7 @@ export async function runFinalize(
615630

616631
const timings = await finalizeDatabaseCreation(
617632
codeql,
633+
features,
618634
config,
619635
threadsFlag,
620636
memoryFlag,

0 commit comments

Comments
 (0)