Repository navigation
Re-enable passing the codescanning config file to the CLI #1105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
237260b
6fabde2
8688a09
01d16b1
4e46a69
907f1de
0403fb7
2314063
a09a029
d74f663
fa2bc21
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
This commit adds the packs and queries from the actions input to the config file used by the CodeQL CLI. When the `+` is used, the actions input value is combined with the config value and when it is not used, the input value overrides the config value. This commit also adds a bunch of integration tests for this feature. In order to avoid adding too many new jobs, all of the tests are run sequentially in a single job (matrixed across relevant operating systems and OSes).
- Loading branch information
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,60 @@ | ||
| name: Check Code-Scanning Config | ||
| description: | | ||
| Checks the code scanning configuration file generated by the | ||
| action to ensure it contains the expected contents | ||
| inputs: | ||
| languages: | ||
| required: false | ||
| description: The languages field passed to the init action. | ||
|
|
||
| packs: | ||
| required: false | ||
| description: The packs field passed to the init action. | ||
|
|
||
| queries: | ||
| required: false | ||
| description: The queries field passed to the init action. | ||
|
|
||
| config-file-test: | ||
| required: false | ||
| description: | | ||
| The location of the config file to use. If empty, | ||
| then no config file is used. | ||
|
|
||
| expected-config-file-contents: | ||
| required: true | ||
| description: | | ||
| A JSON string containing the exact contents of the config file. | ||
|
|
||
| tools: | ||
| required: true | ||
| description: | | ||
| The url of codeql to use. | ||
|
|
||
| runs: | ||
| using: composite | ||
| steps: | ||
| - uses: ./../action/init | ||
| with: | ||
| languages: ${{ inputs.languages }} | ||
| config-file: ${{ inputs.config-file-test }} | ||
| queries: ${{ inputs.queries }} | ||
| packs: ${{ inputs.packs }} | ||
| tools: ${{ inputs.tools }} | ||
| db-location: ${{ runner.temp }}/codescanning-config-cli-test | ||
|
|
||
| - name: Install dependencies | ||
| shell: bash | ||
| run: npm install --location=global ts-node js-yaml | ||
|
|
||
| - name: Check config | ||
| working-directory: ${{ github.action_path }} | ||
| shell: bash | ||
| run: ts-node ./index.ts "${{ runner.temp }}/user-config.yaml" '${{ inputs.expected-config-file-contents }}' | ||
|
|
||
| - name: Clean up | ||
| shell: bash | ||
| if: always() | ||
| run: | | ||
| rm -rf ${{ runner.temp }}/codescanning-config-cli-test | ||
| rm -rf ${{ runner.temp }}/user-config.yaml | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,39 @@ | ||
|
|
||
| import * as core from '@actions/core' | ||
| import * as yaml from 'js-yaml' | ||
| import * as fs from 'fs' | ||
| import * as assert from 'assert' | ||
|
|
||
| const actualConfig = loadActualConfig() | ||
|
|
||
| const rawExpectedConfig = process.argv[3].trim() | ||
| if (!rawExpectedConfig) { | ||
| core.info('No expected configuration provided') | ||
| } else { | ||
| core.startGroup('Expected generated user config') | ||
| core.info(yaml.dump(JSON.parse(rawExpectedConfig))) | ||
| core.endGroup() | ||
| } | ||
|
|
||
| const expectedConfig = rawExpectedConfig ? JSON.parse(rawExpectedConfig) : undefined; | ||
|
|
||
| assert.deepStrictEqual( | ||
| actualConfig, | ||
| expectedConfig, | ||
| 'Expected configuration does not match actual configuration' | ||
| ); | ||
|
|
||
|
|
||
| function loadActualConfig() { | ||
| if (!fs.existsSync(process.argv[2])) { | ||
| core.info('No configuration file found') | ||
| return undefined | ||
| } else { | ||
| const rawActualConfig = fs.readFileSync(process.argv[2], 'utf8') | ||
| core.startGroup('Actual generated user config') | ||
| core.info(rawActualConfig) | ||
| core.endGroup() | ||
|
|
||
| return yaml.load(rawActualConfig) | ||
| } | ||
| } |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Check failure
Code scanning / CodeQL
Inconsistent action input