Skip to content

Commit

Permalink
Add an integration test for uploading SARIF when the run fails
Browse files Browse the repository at this point in the history
  • Loading branch information
henrymercer committed Nov 25, 2022
1 parent f890f6d commit 7cef3cf
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 23 deletions.
34 changes: 34 additions & 0 deletions .github/workflows/submit-sarif-failure.yml
@@ -0,0 +1,34 @@
name: Submit SARIF after failure
on: push

env:
# Internal-only environment variable used to indicate that the post-init Action
# should expect to upload a SARIF file for the failed run.
CODEQL_ACTION_EXPECT_UPLOAD_FAILED_SARIF: true
# Make sure the uploading SARIF files feature is enabled.
CODEQL_ACTION_UPLOAD_FAILED_SARIF: true

jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
language: [javascript]
steps:
- uses: actions/checkout@v3
- uses: ./init
with:
languages: ${{ matrix.language }}
- name: Fail
# We want this job to pass if the Action correctly uploads the SARIF file for
# the failed run.
# Setting this step to continue on error means that it is marked as completing
# successfully, so will not fail the job.
continue-on-error: true
run: exit 1
- uses: ./analyze
# In a real workflow, this step wouldn't run. Since we used `continue-on-error`
# above, we manually disable it with an `if` condition.
if: false
with:
category: "/language:${{ matrix.language }}"
22 changes: 0 additions & 22 deletions .github/workflows/test-report-failed-run.yml

This file was deleted.

9 changes: 9 additions & 0 deletions lib/init-action-post-helper.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion lib/init-action-post-helper.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions src/init-action-post-helper.ts
Expand Up @@ -87,14 +87,28 @@ export async function run(
return;
}

// Environment variable used to integration test uploading a SARIF file for failed runs
const expectFailedSarifUpload =
process.env["CODEQL_ACTION_EXPECT_UPLOAD_FAILED_SARIF"] === "true";

if (process.env[CODEQL_ACTION_ANALYZE_DID_UPLOAD_SARIF] !== "true") {
try {
await uploadFailedSarif(config, repositoryNwo, featureEnablement, logger);
} catch (e) {
if (expectFailedSarifUpload) {
throw new Error(
"Expected to upload a SARIF file for the failed run, but encountered " +
`the following error: ${e}`
);
}
logger.warning(
`Failed to upload a SARIF file for the failed run. Error: ${e}`
);
}
} else if (expectFailedSarifUpload) {
throw new Error(
"Expected to upload a SARIF file for the failed run, but didn't."
);
}

// Upload appropriate Actions artifacts for debugging
Expand Down

0 comments on commit 7cef3cf

Please sign in to comment.