name: "C#: Run QL Tests" on: push: paths: - "csharp/**" - "shared/**" - .github/actions/fetch-codeql/action.yml - codeql-workspace.yml branches: - main - "rc/*" pull_request: paths: - "csharp/**" - "shared/**" - .github/workflows/csharp-qltest.yml - .github/actions/fetch-codeql/action.yml - codeql-workspace.yml branches: - main - "rc/*" defaults: run: working-directory: csharp permissions: contents: read jobs: qlupgrade: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ./.github/actions/fetch-codeql - name: Check DB upgrade scripts run: | echo >empty.trap codeql dataset import -S ql/lib/upgrades/initial/semmlecode.csharp.dbscheme testdb empty.trap codeql dataset upgrade testdb --additional-packs ql/lib diff -q testdb/semmlecode.csharp.dbscheme ql/lib/semmlecode.csharp.dbscheme - name: Check DB downgrade scripts run: | echo >empty.trap rm -rf testdb; codeql dataset import -S ql/lib/semmlecode.csharp.dbscheme testdb empty.trap codeql resolve upgrades --format=lines --allow-downgrades --additional-packs downgrades \ --dbscheme=ql/lib/semmlecode.csharp.dbscheme --target-dbscheme=downgrades/initial/semmlecode.csharp.dbscheme | xargs codeql execute upgrades testdb diff -q testdb/semmlecode.csharp.dbscheme downgrades/initial/semmlecode.csharp.dbscheme qltest: if: github.repository_owner == 'github' runs-on: ubuntu-latest-xl strategy: fail-fast: false matrix: slice: ["1/2", "2/2"] steps: - uses: actions/checkout@v4 - uses: ./csharp/actions/create-extractor-pack - name: Cache compilation cache id: query-cache uses: ./.github/actions/cache-query-compilation with: key: csharp-qltest-${{ matrix.slice }} - name: Run QL tests run: | codeql test run --threads=0 --ram 50000 --slice ${{ matrix.slice }} --search-path extractor-pack --check-databases --check-undefined-labels --check-repeated-labels --check-redefined-labels --consistency-queries ql/consistency-queries ql/test --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" env: GITHUB_TOKEN: ${{ github.token }} unit-tests: strategy: matrix: os: [ubuntu-latest, windows-2019] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - name: Setup dotnet uses: actions/setup-dotnet@v4 with: dotnet-version: 8.0.101 - name: Extractor unit tests run: | dotnet test -p:RuntimeFrameworkVersion=8.0.1 extractor/Semmle.Util.Tests dotnet test -p:RuntimeFrameworkVersion=8.0.1 extractor/Semmle.Extraction.Tests dotnet test -p:RuntimeFrameworkVersion=8.0.1 autobuilder/Semmle.Autobuild.CSharp.Tests dotnet test -p:RuntimeFrameworkVersion=8.0.1 "${{ github.workspace }}/cpp/autobuilder/Semmle.Autobuild.Cpp.Tests" shell: bash stubgentest: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ./csharp/actions/create-extractor-pack - name: Run stub generator tests run: | # Generate (Asp)NetCore stubs STUBS_PATH=stubs_output python3 scripts/stubs/make_stubs_nuget.py webapp Swashbuckle.AspNetCore.Swagger 6.5.0 "$STUBS_PATH" rm -rf ql/test/resources/stubs/_frameworks # Update existing stubs in the repo with the freshly generated ones mv "$STUBS_PATH/output/stubs/_frameworks" ql/test/resources/stubs/ git status codeql test run --threads=0 --search-path extractor-pack --check-databases --check-undefined-labels --check-repeated-labels --check-redefined-labels --consistency-queries ql/consistency-queries -- ql/test/library-tests/dataflow/flowsources/aspremote env: GITHUB_TOKEN: ${{ github.token }}