Skip to content

Commit 362ebf8

Browse files
committed
Check both SARIF files in quality-queries.yml test
1 parent 10a3e4b commit 362ebf8

File tree

2 files changed

+70
-47
lines changed

2 files changed

+70
-47
lines changed

.github/workflows/__quality-queries.yml

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

pr-checks/checks/quality-queries.yml

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,30 @@
11
name: "Quality queries input"
22
description: "Tests that queries specified in the quality-queries input are used."
33
versions: ["linked", "nightly-latest"]
4+
env:
5+
CHECK_SCRIPT: |
6+
const fs = require('fs');
7+
8+
const sarif = JSON.parse(fs.readFileSync(process.env['SARIF_PATH'], 'utf8'));
9+
const expectPresent = JSON.parse(process.env['EXPECT_PRESENT']);
10+
const run = sarif.runs[0];
11+
const extensions = run.tool.extensions;
12+
13+
if (extensions === undefined) {
14+
core.setFailed('`extensions` property not found in the SARIF run property bag.');
15+
}
16+
17+
// ID of a query we want to check the presence for
18+
const targetId = 'js/regex/always-matches';
19+
const found = extensions.find(extension => extension.rules && extension.rules.find(rule => rule.id === targetId));
20+
21+
if (found && expectPresent) {
22+
console.log(`Found rule with id '${targetId}'.`);
23+
} else if (!found && !expectPresent) {
24+
console.log(`Rule with id '${targetId}' was not found.`);
25+
} else {
26+
core.setFailed(`${ found ? "Found" : "Didn't find" } rule ${targetId}`);
27+
}
428
steps:
529
- uses: ./../action/init
630
with:
@@ -14,38 +38,26 @@ steps:
1438
- name: Upload security SARIF
1539
uses: actions/upload-artifact@v4
1640
with:
17-
name: config-export-${{ matrix.os }}-${{ matrix.version }}.sarif.json
41+
name: quality-queries-${{ matrix.os }}-${{ matrix.version }}.sarif.json
1842
path: "${{ runner.temp }}/results/javascript.sarif"
1943
retention-days: 7
2044
- name: Upload quality SARIF
2145
uses: actions/upload-artifact@v4
2246
with:
23-
name: config-export-${{ matrix.os }}-${{ matrix.version }}.quality.sarif.json
47+
name: quality-queries-${{ matrix.os }}-${{ matrix.version }}.quality.sarif.json
2448
path: "${{ runner.temp }}/results/javascript.quality.sarif"
2549
retention-days: 7
26-
- name: Check config properties appear in SARIF
50+
- name: Check quality query does not appear in security SARIF
51+
uses: actions/github-script@v7
52+
env:
53+
SARIF_PATH: "${{ runner.temp }}/results/javascript.sarif"
54+
EXPECT_PRESENT: "false"
55+
with:
56+
script: ${{ env.CHECK_SCRIPT }}
57+
- name: Check quality query appears in quality SARIF
2758
uses: actions/github-script@v7
2859
env:
2960
SARIF_PATH: "${{ runner.temp }}/results/javascript.quality.sarif"
61+
EXPECT_PRESENT: "true"
3062
with:
31-
script: |
32-
const fs = require('fs');
33-
34-
const sarif = JSON.parse(fs.readFileSync(process.env['SARIF_PATH'], 'utf8'));
35-
const run = sarif.runs[0];
36-
const configSummary = run.properties.codeqlConfigSummary;
37-
38-
if (configSummary === undefined) {
39-
core.setFailed('`codeqlConfigSummary` property not found in the SARIF run property bag.');
40-
}
41-
if (configSummary.disableDefaultQueries !== false) {
42-
core.setFailed('`disableDefaultQueries` property incorrect: expected false, got ' +
43-
`${JSON.stringify(configSummary.disableDefaultQueries)}.`);
44-
}
45-
const expectedQueries = [{ type: 'builtinSuite', uses: 'code-quality' }];
46-
// Use JSON.stringify to deep-equal the arrays.
47-
if (JSON.stringify(configSummary.queries) !== JSON.stringify(expectedQueries)) {
48-
core.setFailed(`\`queries\` property incorrect: expected ${JSON.stringify(expectedQueries)}, got ` +
49-
`${JSON.stringify(configSummary.queries)}.`);
50-
}
51-
core.info('Finished config export tests.');
63+
script: ${{ env.CHECK_SCRIPT }}

0 commit comments

Comments
 (0)