Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
e1ab440
[CI][UR] Add detailed test summary reporting to UR conformance tests
kekaczma Mar 27, 2026
af576bd
[CI][UR] Add detailed test lists for passed/failed/unsupported tests
kekaczma Mar 31, 2026
4196034
feat(ci): Add comprehensive UR test summary with collapsible sections
kekaczma Mar 31, 2026
ccbe962
fix(ci): Improve UR test summary - use code blocks and add debug output
kekaczma Apr 24, 2026
d0232d9
Add debug output to investigate test log format
kekaczma Apr 27, 2026
7d7638b
Parse LIT summary statistics for accurate test counts
kekaczma Apr 27, 2026
f4ea15e
Add tail debug to see LIT summary in logs
kekaczma Apr 27, 2026
d2c1b18
Remove -v from LIT_OPTS to get full test lists instead of verbose per…
kekaczma Apr 27, 2026
2a98284
Use --show-* flags like SYCL E2E to get full test lists
kekaczma Apr 27, 2026
09d48fc
Use --show-* flags consistently in CMakeLists to match SYCL E2E format
kekaczma Apr 28, 2026
96e2082
Wrap test output in collapsible groups
kekaczma Apr 28, 2026
da84618
Simplify comments and align step names with original workflow
kekaczma Apr 28, 2026
f68cd49
[UR][CI] Improve test logging with statistics and failed tests display
kekaczma Apr 28, 2026
bd3f332
[UR][CI] Fix test logging - restore live output and fix AWK patterns.
kekaczma May 13, 2026
a0a0a51
[UR][CI] Fix shell and add collapsible test output
kekaczma May 13, 2026
743f0a8
[UR][CI] Remove redundant Report summary steps.
kekaczma May 13, 2026
703cfee
[UR][CI] Refactor to match E2E test reporting pattern
kekaczma May 15, 2026
81ee326
[UR][CI] Add composite actions for test execution matching E2E pattern
kekaczma May 19, 2026
554d50a
[UR][CI] Add security hardening, fix statistics extraction, and CI va…
kekaczma May 19, 2026
0f42d15
[UR][CI] Fix code injection, add collapsed sections for all test cate…
kekaczma May 19, 2026
057e52e
[UR][CI] Run ci-validation as part of adapter tests to validate logging
kekaczma May 19, 2026
e2559a3
[UR][CI] Fix ci-validation to use add_ur_lit_testsuite
kekaczma May 19, 2026
e27c023
[UR][CI] Use lit.local.cfg.py for ci-validation like other .test suites
kekaczma May 20, 2026
19e6924
[UR][CI] Fix test category names and Report failures AWK patterns
kekaczma May 20, 2026
fe01aa4
[UR][CI] Show full test summary in Report failures like E2E
kekaczma May 20, 2026
f309004
Move CI validation tests to cuda/ci-validation subdirectory
kekaczma May 20, 2026
a00d86a
Fix CI validation tests to run together with CUDA tests
kekaczma May 20, 2026
f31095d
[UR][CI] Convert ci-validation from ShTest to GoogleTest format
kekaczma May 21, 2026
7f34e69
Remove duplicate test logging from workflow
kekaczma May 22, 2026
fa3d1e6
Fix log duplication and Report failures output
kekaczma May 22, 2026
761195f
Refactor test summary logic from AWK to Python
kekaczma May 22, 2026
64b389a
Use Python script with full log output instead of cutting
kekaczma Jun 9, 2026
31dfcfb
Code quality improvements
kekaczma Jun 9, 2026
6d8135b
Apply darker formatting to ur_test_summary.py
kekaczma Jun 12, 2026
9f685e6
Add GoogleTest SKIPPED tests extraction
kekaczma Jun 16, 2026
82be624
Extract UNSUPPORTED tests from LIT inline output + darker fixes
kekaczma Jun 16, 2026
5da6219
Generate skipped test list for conformance tests
kekaczma Jun 16, 2026
3eee82e
Hide statistics and test lists in full log to avoid duplication
kekaczma Jun 16, 2026
1813d70
Fix SIGPIPE error - use sed instead of awk
kekaczma Jun 17, 2026
979e322
Apply darker formatting fixes
kekaczma Jun 17, 2026
6eec541
Fix sed pattern - use asterisk separator instead of Testing Time
kekaczma Jun 18, 2026
3e9bfa8
Fix skipped tests deduplication - exclude all categories not just Passed
kekaczma Jun 19, 2026
82904bc
Fix skipped test list parsing
kekaczma Jun 19, 2026
7a69983
Extract skipped tests from LIT inline output
kekaczma Jun 19, 2026
859d5f1
Fix test count mismatch and missing test categories
kekaczma Jun 19, 2026
8ab56f7
Fix darker formatting issues
kekaczma Jun 19, 2026
f07a2bb
Fix validation to include separately displayed skipped tests
kekaczma Jun 23, 2026
1474106
Fix UnboundLocalError and darker formatting
kekaczma Jun 23, 2026
b59e0af
Filter out GoogleTest warnings and errors from test list parsingentri…
kekaczma Jul 1, 2026
7c87931
Fix fallback message for missing skipped tests and add debug output
kekaczma Jul 1, 2026
8b017f3
Add debug output and catch all LIT test categories
kekaczma Jul 1, 2026
77bebfd
Fix SIGPIPE and darker formatting
kekaczma Jul 3, 2026
e92974d
Remove --succinct to get per-test output with skipped test names
kekaczma Jul 3, 2026
8570ad5
Fix trailing whitespace in comment
kekaczma Jul 3, 2026
8235cd4
Fix SIGPIPE in main test log pipe chains
kekaczma Jul 3, 2026
7d81302
Ignore SIGPIPE from tee when GitHub Actions closes stdout
kekaczma Jul 3, 2026
c23c19f
Remove tee to avoid SIGPIPE completely
kekaczma Jul 3, 2026
ed618ba
Show only head/tail of logs to avoid SIGPIPE
kekaczma Jul 6, 2026
8fd35ec
Restore --succinct with XML output for test details
kekaczma Jul 6, 2026
35aff3d
Remove verbose debug output from test listing
kekaczma Jul 6, 2026
443282f
Remove verbose debug info from fallback message (keep validation)
kekaczma Jul 6, 2026
18b69c3
Enable full test lists display by default for adapter-specific (debug…
kekaczma Jul 6, 2026
13bc406
Add XML parsing for skipped tests in GoogleTest format
kekaczma Jul 6, 2026
7d0cafe
Add support for Excluded tests category
kekaczma Jul 7, 2026
003d29a
Add support for Passed With Retry (FLAKYPASS) test category
kekaczma Jul 7, 2026
b8a49f7
Add debug output for XML parsing to diagnose missing skipped tests
kekaczma Jul 7, 2026
8a769f4
Fix darker formatting
kekaczma Jul 7, 2026
92bd7b8
Fix XML file path - LIT generates XML in test directory not workspace…
kekaczma Jul 7, 2026
079e221
Add LIT performance and debugging flags to UR tests
kekaczma Jul 9, 2026
c823fff
devops: Add artifact upload for UR test logs
kekaczma Jul 9, 2026
0cd0d4a
Add XML security fixes and missing XML argument
kekaczma Jul 10, 2026
8b0ccd0
devops: Fix security scanner warnings in UR test summary
kekaczma Jul 10, 2026
8bff8bc
devops: Add defusedxml to UR test requirements
kekaczma Jul 10, 2026
03a14ed
ci: Enable artifact upload in UR hardware tests
kekaczma Jul 10, 2026
8014caf
devops: Improve artifact handling and add debug logging
kekaczma Jul 13, 2026
8df0f5b
Fix XML path for adapter-specific tests
kekaczma Jul 13, 2026
88a5659
Add support for extracting Excluded tests from XML
kekaczma Jul 13, 2026
493de67
Add test timing summary to GitHub Actions output
kekaczma Jul 13, 2026
ca625d7
Fix darker formatting issues in ur_test_summary.py
kekaczma Jul 13, 2026
1e06bba
Fix histogram extraction to stop at section boundary
kekaczma Jul 13, 2026
708e63a
Fix test summary display and add Testing Time
kekaczma Jul 13, 2026
e415187
Fix darker formatting - remove trailing whitespace
kekaczma Jul 13, 2026
8da33a8
Remove .venv/ from both .gitignore files
kekaczma Jul 13, 2026
ef51ca8
Remove debug output from test action files
kekaczma Jul 13, 2026
e728d49
Fix XML path resolution for adapter-specific tests
kekaczma Jul 13, 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
1 change: 1 addition & 0 deletions .ci/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
junitparser==3.2.0
google-cloud-storage==3.3.0
PyGithub==2.8.1
defusedxml==0.7.1
18 changes: 8 additions & 10 deletions .github/workflows/ur-build-hw.yml
Original file line number Diff line number Diff line change
Expand Up @@ -142,20 +142,18 @@ jobs:
run: cmake --install build

- name: Test adapter specific
env:
ZE_ENABLE_LOADER_DEBUG_TRACE: 1
LIT_OPTS: "--timeout 120 -j 50"
# These tests cause timeouts on CI
LIT_FILTER_OUT: "(adapters/level_zero/memcheck.test|adapters/level_zero/v2/deferred_kernel_memcheck.test)"
run: cmake --build build -j $(($(nproc)/3)) -- check-unified-runtime-adapter
uses: ./devops/actions/run-tests/ur/adapter-specific
with:
build_dir: build
artifact_name: 'ur-${{matrix.adapter.name}}-adapter-specific'
# Don't run adapter specific tests when building multiple adapters
if: ${{ matrix.adapter.other_name == '' }}

- name: Test adapters
env:
ZE_ENABLE_LOADER_DEBUG_TRACE: 1
LIT_OPTS: "--timeout 120 -j 50"
run: cmake --build build -j $(($(nproc)/3)) -- check-unified-runtime-conformance
uses: ./devops/actions/run-tests/ur/adapters
with:
build_dir: build
artifact_name: 'ur-${{matrix.adapter.name}}-conformance'

- name: Debug CI platform information
if: ${{ always() }}
Expand Down
122 changes: 122 additions & 0 deletions devops/actions/run-tests/ur/adapter-specific/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
name: 'Run UR Adapter Specific Tests'

inputs:
build_dir:
required: false
default: 'build'
artifact_name:
description: 'Name for uploaded test artifacts (logs, XML)'
required: false
default: ''

runs:
using: "composite"
steps:
- name: Run adapter specific tests
id: run_tests
continue-on-error: true
shell: bash
env:
BUILD_DIR: ${{ inputs.build_dir }}
ZE_ENABLE_LOADER_DEBUG_TRACE: 1
LIT_OPTS: "--show-unsupported --show-pass --show-xfail --no-progress-bar --succinct --timeout 120 -j 50 --time-tests --show-flakypass --show-skipped --xunit-xml-output adapter_results.xml"
LIT_FILTER_OUT: "(adapters/level_zero/memcheck.test|adapters/level_zero/v2/deferred_kernel_memcheck.test)"
run: |
if [[ "$BUILD_DIR" =~ [^a-zA-Z0-9/_-] ]] || [[ "$BUILD_DIR" =~ \.\. ]]; then
echo "::error::Invalid build_dir: contains disallowed characters or path traversal"
exit 1
fi

echo "::group::Show Full Test Adapter Specific Logs"
# Write directly to file to avoid SIGPIPE from GitHub Actions closing stdout
# (output is too large without --succinct, causing GitHub to close pipe)
cmake --build "$BUILD_DIR" -j $(($(nproc)/3)) -- check-unified-runtime-adapter > adapter_tests.log 2>&1
EXIT_CODE=$?

# Optionally show full LIT output including test lists from summary
# Set SHOW_FULL_TEST_LISTS=0 to filter out duplicate test lists (default: show all for debugging)
if [ "${SHOW_FULL_TEST_LISTS:-1}" = "1" ]; then
echo "=== Full test execution log (including LIT summary lists) ===" || true
cat adapter_tests.log || true
else
# Filtered: Show only summary without duplicate test lists
# (LIT summary with asterisks is filtered out to avoid duplication with collapsed lists below)
echo "=== Test execution log (filtered - lists shown in collapsed sections below) ===" || true
sed '/^\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/,$d' adapter_tests.log || true
fi
echo "::endgroup::"

# Only fail if cmake actually failed, not if test failed (continue-on-error handles that)
# Check that log was created successfully
if [ ! -f adapter_tests.log ] || [ ! -s adapter_tests.log ]; then
echo "::error::Test execution failed - no log generated"
exit 1
fi

exit $EXIT_CODE

- name: Report adapter specific failures
if: steps.run_tests.outcome != 'success'
shell: bash
run: |
python3 devops/scripts/ur_test_summary.py extract-errors adapter_tests.log | tee -a $GITHUB_STEP_SUMMARY
exit 1

- name: Show adapter specific test statistics and lists
if: ${{ always() }}
shell: bash
env:
BUILD_DIR: ${{ inputs.build_dir }}
run: |
if [ ! -f adapter_tests.log ]; then
echo "::warning::Adapter specific test log not found - no tests may be available for this adapter"
echo "## Adapter Specific Tests Not Available" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "No adapter-specific tests were found or executed for this configuration." >> $GITHUB_STEP_SUMMARY
exit 0
fi

if [ ! -s adapter_tests.log ]; then
echo "::warning::Adapter specific test log is empty"
echo "## Adapter Specific Tests Log Empty" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "The adapter-specific test log exists but is empty." >> $GITHUB_STEP_SUMMARY
exit 0
fi

# Find actual XML file path (wildcard doesn't work in Python)
XML_FILE=$(find "$BUILD_DIR/test/adapters" -name "adapter_results.xml" 2>/dev/null | head -1)
if [ -z "$XML_FILE" ]; then
XML_FILE=""
fi

python3 devops/scripts/ur_test_summary.py show-summary adapter_tests.log "" "$XML_FILE" | tee -a $GITHUB_STEP_SUMMARY

- name: Prepare adapter specific test artifacts
if: ${{ always() && inputs.artifact_name != '' }}
shell: bash
env:
BUILD_DIR: ${{ inputs.build_dir }}
run: |
mkdir -p adapter_artifacts

# Copy log file
if [ -f adapter_tests.log ]; then
cp adapter_tests.log adapter_artifacts/
fi

# Copy XML file
# Use find since we have wildcard
FOUND_XML=$(find "$BUILD_DIR/test/adapters" -name "adapter_results.xml" 2>/dev/null | head -1)
if [ -n "$FOUND_XML" ]; then
cp "$FOUND_XML" adapter_artifacts/adapter_results.xml
fi

- name: Upload adapter specific test artifacts
if: ${{ always() && inputs.artifact_name != '' }}
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.5.2
with:
name: ${{ inputs.artifact_name }}
path: adapter_artifacts/
retention-days: 7
if-no-files-found: warn
127 changes: 127 additions & 0 deletions devops/actions/run-tests/ur/adapters/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
name: 'Run UR Adapter Conformance Tests'

inputs:
build_dir:
required: false
default: 'build'
artifact_name:
description: 'Name for uploaded test artifacts (logs, XML)'
required: false
default: ''

runs:
using: "composite"
steps:
- name: Run conformance tests
id: run_tests
continue-on-error: true
shell: bash
env:
BUILD_DIR: ${{ inputs.build_dir }}
ZE_ENABLE_LOADER_DEBUG_TRACE: 1
LIT_OPTS: "--show-unsupported --show-pass --show-xfail --no-progress-bar --succinct --timeout 120 -j 50 --time-tests --show-flakypass --show-skipped --xunit-xml-output conformance_results.xml"
run: |
if [[ "$BUILD_DIR" =~ [^a-zA-Z0-9/_-] ]] || [[ "$BUILD_DIR" =~ \.\. ]]; then
echo "::error::Invalid build_dir: contains disallowed characters or path traversal"
exit 1
fi

# Write directly to file to avoid SIGPIPE from GitHub Actions closing stdout
# (output is too large without --succinct, causing GitHub to close pipe)
cmake --build "$BUILD_DIR" -j $(($(nproc)/3)) -- check-unified-runtime-conformance > conformance_tests.log 2>&1
EXIT_CODE=$?

# Only fail if cmake actually failed, not if test failed (continue-on-error handles that)
# Check that log was created successfully
if [ ! -f conformance_tests.log ] || [ ! -s conformance_tests.log ]; then
echo "::error::Test execution failed - no log generated"
exit 1
fi

exit $EXIT_CODE

- name: Report conformance failures
if: steps.run_tests.outcome != 'success'
shell: bash
run: |
python3 devops/scripts/ur_test_summary.py extract-errors conformance_tests.log | tee -a $GITHUB_STEP_SUMMARY
exit 1

- name: List all conformance tests
if: ${{ always() }}
shell: bash
env:
BUILD_DIR: ${{ inputs.build_dir }}
run: |
> all_conformance_tests.txt
binary_count=0

# Use process substitution to avoid subshell issues with pipe
while IFS= read -r binary; do
binary_count=$((binary_count + 1))

# Capture output to temp file to avoid SIGPIPE
temp_output=$(mktemp)
"$binary" --gtest_list_tests > "$temp_output" 2>&1 || true

# Filter and append to all_conformance_tests.txt
grep -v "^$" "$temp_output" >> all_conformance_tests.txt 2>/dev/null || true
rm -f "$temp_output"
done < <(find "$BUILD_DIR/test/conformance" -name "*-test" -type f -executable 2>/dev/null)

test_count=$(wc -l < all_conformance_tests.txt 2>/dev/null || echo 0)
echo "Summary: Processed $binary_count binaries, collected $test_count test definition lines" >&2

- name: Show conformance test statistics and lists
if: ${{ always() }}
shell: bash
env:
BUILD_DIR: ${{ inputs.build_dir }}
run: |
if [ ! -f conformance_tests.log ]; then
echo "Log file not found"
exit 0
fi

# XML file is generated by LIT in the test directory
XML_FILE="$BUILD_DIR/test/conformance/conformance_results.xml"
if [ ! -f "$XML_FILE" ]; then
echo "Note: XML file not found at $XML_FILE, skipped test names will not be available"
XML_FILE=""
fi

python3 devops/scripts/ur_test_summary.py show-summary conformance_tests.log all_conformance_tests.txt "$XML_FILE" | tee -a $GITHUB_STEP_SUMMARY

- name: Prepare conformance test artifacts
if: ${{ always() && inputs.artifact_name != '' }}
shell: bash
env:
BUILD_DIR: ${{ inputs.build_dir }}
run: |
mkdir -p conformance_artifacts

# Copy log file
if [ -f conformance_tests.log ]; then
cp conformance_tests.log conformance_artifacts/
fi

# Copy XML file
XML_PATH="$BUILD_DIR/test/conformance/conformance_results.xml"
if [ -f "$XML_PATH" ]; then
cp "$XML_PATH" conformance_artifacts/
else
# Try to find it elsewhere
FOUND_XML=$(find "$BUILD_DIR" -name "conformance_results.xml" 2>/dev/null | head -1)
if [ -n "$FOUND_XML" ]; then
cp "$FOUND_XML" conformance_artifacts/conformance_results.xml
fi
fi

- name: Upload conformance test artifacts
if: ${{ always() && inputs.artifact_name != '' }}
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.5.2
with:
name: ${{ inputs.artifact_name }}
path: conformance_artifacts/
retention-days: 7
if-no-files-found: warn
Loading
Loading