Add basic check that resulting SARIF contains quality-queries queries
This commit is contained in:
parent
f4c96f59d9
commit
7e3bc059bb
2 changed files with 145 additions and 0 deletions
100
.github/workflows/__quality-queries.yml
generated
vendored
Normal file
100
.github/workflows/__quality-queries.yml
generated
vendored
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
# Warning: This file is generated automatically, and should not be modified.
|
||||||
|
# Instead, please modify the template in the pr-checks directory and run:
|
||||||
|
# (cd pr-checks; pip install ruamel.yaml@0.17.31 && python3 sync.py)
|
||||||
|
# to regenerate this file.
|
||||||
|
|
||||||
|
name: PR Check - Quality queries input
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
GO111MODULE: auto
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- releases/v*
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
- reopened
|
||||||
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
|
workflow_dispatch: {}
|
||||||
|
jobs:
|
||||||
|
quality-queries:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: linked
|
||||||
|
- os: macos-latest
|
||||||
|
version: linked
|
||||||
|
- os: windows-latest
|
||||||
|
version: linked
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
|
- os: macos-latest
|
||||||
|
version: nightly-latest
|
||||||
|
- os: windows-latest
|
||||||
|
version: nightly-latest
|
||||||
|
name: Quality queries input
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
security-events: read
|
||||||
|
timeout-minutes: 45
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
setup-kotlin: 'true'
|
||||||
|
- uses: ./../action/init
|
||||||
|
with:
|
||||||
|
languages: javascript
|
||||||
|
quality-queries: code-quality
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
with:
|
||||||
|
output: ${{ runner.temp }}/results
|
||||||
|
upload-database: false
|
||||||
|
- name: Upload SARIF
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: config-export-${{ matrix.os }}-${{ matrix.version }}.sarif.json
|
||||||
|
path: ${{ runner.temp }}/results/javascript.sarif
|
||||||
|
retention-days: 7
|
||||||
|
- name: Check config properties appear in SARIF
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
env:
|
||||||
|
SARIF_PATH: ${{ runner.temp }}/results/javascript.sarif
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
const sarif = JSON.parse(fs.readFileSync(process.env['SARIF_PATH'], 'utf8'));
|
||||||
|
const run = sarif.runs[0];
|
||||||
|
const configSummary = run.properties.codeqlConfigSummary;
|
||||||
|
|
||||||
|
if (configSummary === undefined) {
|
||||||
|
core.setFailed('`codeqlConfigSummary` property not found in the SARIF run property bag.');
|
||||||
|
}
|
||||||
|
if (configSummary.disableDefaultQueries !== false) {
|
||||||
|
core.setFailed('`disableDefaultQueries` property incorrect: expected false, got ' +
|
||||||
|
`${JSON.stringify(configSummary.disableDefaultQueries)}.`);
|
||||||
|
}
|
||||||
|
const expectedQueries = [{ type: 'builtinSuite', uses: 'code-quality' }];
|
||||||
|
// Use JSON.stringify to deep-equal the arrays.
|
||||||
|
if (JSON.stringify(configSummary.queries) !== JSON.stringify(expectedQueries)) {
|
||||||
|
core.setFailed(`\`queries\` property incorrect: expected ${JSON.stringify(expectedQueries)}, got ` +
|
||||||
|
`${JSON.stringify(configSummary.queries)}.`);
|
||||||
|
}
|
||||||
|
core.info('Finished config export tests.');
|
||||||
|
env:
|
||||||
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
45
pr-checks/checks/quality-queries.yml
Normal file
45
pr-checks/checks/quality-queries.yml
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
name: "Quality queries input"
|
||||||
|
description: "Tests that queries specified in the quality-queries input are used."
|
||||||
|
versions: ["linked", "nightly-latest"]
|
||||||
|
steps:
|
||||||
|
- uses: ./../action/init
|
||||||
|
with:
|
||||||
|
languages: javascript
|
||||||
|
quality-queries: code-quality
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
with:
|
||||||
|
output: "${{ runner.temp }}/results"
|
||||||
|
upload-database: false
|
||||||
|
- name: Upload SARIF
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: config-export-${{ matrix.os }}-${{ matrix.version }}.sarif.json
|
||||||
|
path: "${{ runner.temp }}/results/javascript.sarif"
|
||||||
|
retention-days: 7
|
||||||
|
- name: Check config properties appear in SARIF
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
env:
|
||||||
|
SARIF_PATH: "${{ runner.temp }}/results/javascript.sarif"
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
const sarif = JSON.parse(fs.readFileSync(process.env['SARIF_PATH'], 'utf8'));
|
||||||
|
const run = sarif.runs[0];
|
||||||
|
const configSummary = run.properties.codeqlConfigSummary;
|
||||||
|
|
||||||
|
if (configSummary === undefined) {
|
||||||
|
core.setFailed('`codeqlConfigSummary` property not found in the SARIF run property bag.');
|
||||||
|
}
|
||||||
|
if (configSummary.disableDefaultQueries !== false) {
|
||||||
|
core.setFailed('`disableDefaultQueries` property incorrect: expected false, got ' +
|
||||||
|
`${JSON.stringify(configSummary.disableDefaultQueries)}.`);
|
||||||
|
}
|
||||||
|
const expectedQueries = [{ type: 'builtinSuite', uses: 'code-quality' }];
|
||||||
|
// Use JSON.stringify to deep-equal the arrays.
|
||||||
|
if (JSON.stringify(configSummary.queries) !== JSON.stringify(expectedQueries)) {
|
||||||
|
core.setFailed(`\`queries\` property incorrect: expected ${JSON.stringify(expectedQueries)}, got ` +
|
||||||
|
`${JSON.stringify(configSummary.queries)}.`);
|
||||||
|
}
|
||||||
|
core.info('Finished config export tests.');
|
||||||
Loading…
Add table
Add a link
Reference in a new issue