Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8a22232
Improve CDS extractor support for Windows OS
data-douser Dec 30, 2025
de18b40
Upgrade CDS Node.js dependencies to latest versions
data-douser Dec 30, 2025
b1fa87f
Add push/pull_request triggers to codeql-test-run-windows.yml
data-douser Dec 30, 2025
c7ab45d
Improve CDS extractor support for Windows OS
data-douser Dec 30, 2025
467d7c2
Upgrade CDS Node.js dependencies to latest versions
data-douser Dec 30, 2025
86efeec
Add push/pull_request triggers to codeql-test-run-windows.yml
data-douser Dec 30, 2025
e8cbe1e
Merge branch 'data-douser/cds-extractor-windows-os-3' of github.com:a…
data-douser Jan 7, 2026
c323e89
Rename unit testing workflows for Linux & Windows
data-douser Jan 8, 2026
4ed14b1
Use strict test discovery in Windows workflow
data-douser Jan 8, 2026
a8ee2c2
Init .gitattributes
data-douser Jan 8, 2026
8ac497a
Renormalize after .gitattributes update
data-douser Jan 8, 2026
ec2b702
Merge branch 'main' into data-douser/cds-extractor-windows-os-3
data-douser Jan 28, 2026
865e2e8
Merge branch 'main' into data-douser/cds-extractor-windows-os-3
data-douser Jan 30, 2026
52b7eed
Merge branch 'main' into data-douser/cds-extractor-windows-os-3
data-douser Feb 3, 2026
644ac55
Merge branch 'main' into data-douser/cds-extractor-windows-os-3
data-douser Feb 14, 2026
11d6035
Windows OS compatibility test 1
data-douser Feb 14, 2026
c62ef9e
Improve debug of ql-unit-tests-windows.yml workflow
data-douser Feb 14, 2026
7f7d44d
Fix Windows cds compile for loop
data-douser Feb 14, 2026
337de12
fix: normalize CDS $location.file paths for Windows
data-douser Feb 15, 2026
e2d0cae
Fix CDS extractor package dist sync
data-douser Feb 15, 2026
bd5443c
Refactor CDS compilation within actions workflows
data-douser Feb 15, 2026
0d56b6a
Upgrade NodeJS deps for CDS extractor
data-douser Feb 15, 2026
2c0f858
Apply suggestion from @Copilot
data-douser Feb 15, 2026
5db6dd2
Merge branch 'main' into dd/cds-extractor-windows-debug/1
data-douser Feb 15, 2026
bb4d45c
Apply suggestion from @data-douser
data-douser Feb 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
* text=auto eol=lf
Comment thread
data-douser marked this conversation as resolved.
*.cmd text eol=crlf
*.bat text eol=crlf
Original file line number Diff line number Diff line change
@@ -1,157 +1,156 @@
name: ⚙️ CodeQL - Run Unit Tests (javascript)


on:
push:
branches:
- 'main'
pull_request:
branches:
- 'main'
workflow_dispatch:

permissions:
contents: read

jobs:
create-unit-test-matrix:
name: Create CodeQL Unit Test Matrix
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.export-unit-test-matrix.outputs.matrix }}
steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Install QLT
id: install-qlt
uses: advanced-security/codeql-development-toolkit/.github/actions/install-qlt@main
with:
qlt-version: 'latest'
add-to-path: true

- name: Export unit test matrix
id: export-unit-test-matrix
run: |
qlt test run get-matrix --os-version ubuntu-latest

run-test-suites:
name: Run Unit Tests
needs: create-unit-test-matrix

runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.create-unit-test-matrix.outputs.matrix) }}

steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Install QLT
id: install-qlt
uses: advanced-security/codeql-development-toolkit/.github/actions/install-qlt@main
with:
qlt-version: 'latest'
add-to-path: true

- name: Install CodeQL
id: install-codeql
shell: bash
run: |
echo "Installing CodeQL"
qlt codeql run install
echo "-----------------------------"
echo "CodeQL Home: $QLT_CODEQL_HOME"
echo "CodeQL Binary: $QLT_CODEQL_PATH"

- name: Verify Versions of Tooling
shell: bash
run: |
echo -e "Checking CodeQL Version:"
$QLT_CODEQL_PATH --version

echo -e "Checking QLT Version:"
echo "QLT Home: ${{ steps.install-qlt.outputs.qlt-home }}"
qlt version

- name: Install QL Packs
shell: bash
run: |
qlt query run install-packs

- name: Setup Node.js for CDS compilation
uses: actions/setup-node@v6
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: 'extractors/cds/tools/package-lock.json'

- name: Verify Node.js and npm tools
run: |
echo "Node.js version: $(node --version)"
echo "npm version: $(npm --version)"
echo "npx version: $(npx --version)"
# Verify npx can access @sap/cds-dk without installing globally
echo "Testing npx access to @sap/cds-dk..."
npx --yes --package @sap/cds-dk@latest cds --version || echo "CDS will be installed per-project as needed"

# Compile .cds files to .cds.json files using the dedicated test script
- name: Compile CAP CDS files
run: |
# Use the dedicated CDS compilation script that includes proper version resolution
# This script follows the same logic as the CDS extractor's resolveCdsVersions function
./extractors/cds/tools/workflow/cds-compilation-for-actions.sh

- name: Run test suites
id: run-test-suites
env:
RUNNER_OS: ${{ runner.os }}
CODEQL_CLI: ${{ matrix.codeql_cli }}
CODEQL_STDLIB: ${{ matrix.codeql_standard_library }}
CODEQL_STDLIB_IDENT: ${{matrix.codeql_standard_library_ident}}
RUNNER_TMP: ${{ runner.temp }}
LGTM_INDEX_XML_MODE: all
LGTM_INDEX_FILETYPES: ".json:JSON\n.cds:JSON"

shell: bash
run: >
qlt test run execute-unit-tests
--codeql-args "--threads=0 --strict-test-discovery"
--num-threads 2
--language javascript
--runner-os $RUNNER_OS
--work-dir $RUNNER_TMP

- name: Upload test results
uses: actions/upload-artifact@v6
with:
name: test-results-${{ runner.os }}-${{ matrix.codeql_cli }}-${{ matrix.codeql_standard_library_ident }}
path: |
${{ runner.temp }}/test_report_${{ runner.os }}_${{ matrix.codeql_cli }}_${{ matrix.codeql_standard_library_ident }}_slice_*.json
if-no-files-found: error

validate-test-results:
name: Validate test results
needs: [run-test-suites]
runs-on: ubuntu-latest
steps:

- name: Checkout repository
uses: actions/checkout@v6

- name: Install QLT
id: install-qlt
uses: advanced-security/codeql-development-toolkit/.github/actions/install-qlt@main
with:
qlt-version: 'latest'
add-to-path: true


- name: Collect test results
uses: actions/download-artifact@v7

- name: Validate test results
run: |
qlt test run validate-unit-tests --pretty-print --results-directory . >> $GITHUB_STEP_SUMMARY
qlt test run validate-unit-tests --results-directory .
name: QL Unit Tests (Linux)

on:
push:
branches:
- 'main'
pull_request:
branches:
- 'main'
workflow_dispatch:

permissions:
contents: read

jobs:
create-unit-test-matrix:
name: Create CodeQL Unit Test Matrix
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.export-unit-test-matrix.outputs.matrix }}
steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Install QLT
id: install-qlt
uses: advanced-security/codeql-development-toolkit/.github/actions/install-qlt@main
with:
qlt-version: 'latest'
add-to-path: true

- name: Export unit test matrix
id: export-unit-test-matrix
run: |
qlt test run get-matrix --os-version ubuntu-latest

run-test-suites:
name: Run Unit Tests
needs: create-unit-test-matrix

runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.create-unit-test-matrix.outputs.matrix) }}

steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Install QLT
id: install-qlt
uses: advanced-security/codeql-development-toolkit/.github/actions/install-qlt@main
with:
qlt-version: 'latest'
add-to-path: true

- name: Install CodeQL
id: install-codeql
shell: bash
run: |
echo "Installing CodeQL"
qlt codeql run install
echo "-----------------------------"
echo "CodeQL Home: $QLT_CODEQL_HOME"
echo "CodeQL Binary: $QLT_CODEQL_PATH"

- name: Verify Versions of Tooling
shell: bash
run: |
echo -e "Checking CodeQL Version:"
$QLT_CODEQL_PATH --version

echo -e "Checking QLT Version:"
echo "QLT Home: ${{ steps.install-qlt.outputs.qlt-home }}"
qlt version

- name: Install QL Packs
shell: bash
run: |
qlt query run install-packs

- name: Setup Node.js for CDS compilation
uses: actions/setup-node@v6
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: 'extractors/cds/tools/package-lock.json'

- name: Verify Node.js and npm tools
run: |
echo "Node.js version: $(node --version)"
echo "npm version: $(npm --version)"
echo "npx version: $(npx --version)"
# Verify npx can access @sap/cds-dk without installing globally
echo "Testing npx access to @sap/cds-dk..."
npx --yes --package @sap/cds-dk@latest cds --version || echo "CDS will be installed per-project as needed"

# Compile .cds files to .cds.json files using the dedicated test script
- name: Compile CAP CDS files
run: |
# Use the dedicated CDS compilation script that includes proper version resolution
# This script follows the same logic as the CDS extractor's resolveCdsVersions function
./extractors/cds/tools/workflow/cds-compilation-for-actions.sh

- name: Run test suites
id: run-test-suites
env:
RUNNER_OS: ${{ runner.os }}
CODEQL_CLI: ${{ matrix.codeql_cli }}
CODEQL_STDLIB: ${{ matrix.codeql_standard_library }}
CODEQL_STDLIB_IDENT: ${{matrix.codeql_standard_library_ident}}
RUNNER_TMP: ${{ runner.temp }}
LGTM_INDEX_XML_MODE: all
LGTM_INDEX_FILETYPES: ".json:JSON\n.cds:JSON"

shell: bash
run: >
qlt test run execute-unit-tests
--codeql-args "--threads=0 --strict-test-discovery"
--num-threads 2
--language javascript
--runner-os $RUNNER_OS
--work-dir $RUNNER_TMP

- name: Upload test results
uses: actions/upload-artifact@v6
with:
name: test-results-${{ runner.os }}-${{ matrix.codeql_cli }}-${{ matrix.codeql_standard_library_ident }}
path: |
${{ runner.temp }}/test_report_${{ runner.os }}_${{ matrix.codeql_cli }}_${{ matrix.codeql_standard_library_ident }}_slice_*.json
if-no-files-found: error

validate-test-results:
name: Validate test results
needs: [run-test-suites]
runs-on: ubuntu-latest
steps:

- name: Checkout repository
uses: actions/checkout@v6

- name: Install QLT
id: install-qlt
uses: advanced-security/codeql-development-toolkit/.github/actions/install-qlt@main
with:
qlt-version: 'latest'
add-to-path: true


- name: Collect test results
uses: actions/download-artifact@v7

- name: Validate test results
run: |
qlt test run validate-unit-tests --pretty-print --results-directory . >> $GITHUB_STEP_SUMMARY
qlt test run validate-unit-tests --results-directory .
Loading
Loading