1
1
name : " Quality queries input"
2
2
description : " Tests that queries specified in the quality-queries input are used."
3
3
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
+ }
4
28
steps :
5
29
- uses : ./../action/init
6
30
with :
@@ -14,38 +38,26 @@ steps:
14
38
- name : Upload security SARIF
15
39
uses : actions/upload-artifact@v4
16
40
with :
17
- name : config-export -${{ matrix.os }}-${{ matrix.version }}.sarif.json
41
+ name : quality-queries -${{ matrix.os }}-${{ matrix.version }}.sarif.json
18
42
path : " ${{ runner.temp }}/results/javascript.sarif"
19
43
retention-days : 7
20
44
- name : Upload quality SARIF
21
45
uses : actions/upload-artifact@v4
22
46
with :
23
- name : config-export -${{ matrix.os }}-${{ matrix.version }}.quality.sarif.json
47
+ name : quality-queries -${{ matrix.os }}-${{ matrix.version }}.quality.sarif.json
24
48
path : " ${{ runner.temp }}/results/javascript.quality.sarif"
25
49
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
27
58
uses : actions/github-script@v7
28
59
env :
29
60
SARIF_PATH : " ${{ runner.temp }}/results/javascript.quality.sarif"
61
+ EXPECT_PRESENT : " true"
30
62
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