Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 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
0503fe6
Fix XML path resolution for adapter-specific tests
kekaczma Jul 13, 2026
a25cf9c
Merge remote-tracking branch 'origin/sycl' into ur-test-summary-python
kekaczma Jul 15, 2026
f03251f
Improve adapter-specific test action: remove debug output, skip artif…
kekaczma Jul 16, 2026
5ce77fe
Remove GITHUB_STEP_SUMMARY from UR test actions
kekaczma Jul 16, 2026
f187db2
Reduce noise: collapse artifact preparation output
kekaczma Jul 16, 2026
3f05454
Remove empty artifact preparation groups
kekaczma Jul 16, 2026
7ce070c
Add filtered full log display in collapsed section
kekaczma Jul 16, 2026
f014989
Make artifact names unique with runner and config suffix
kekaczma Jul 16, 2026
8aa1bca
Update upload-artifact to v7.0.1 and remove notice annotation
kekaczma Jul 16, 2026
61e47d6
Refactor ur_test_summary.py: remove dead code and improve maintainabi…
kekaczma Jul 16, 2026
4182e53
Refactor: split show_statistics_and_lists into focused functions
kekaczma Jul 16, 2026
cf3a585
Optimize regex patterns, fix formatting, and security issues
kekaczma Jul 17, 2026
8fb5c5e
refactor: Clean up ur_test_summary.py
kekaczma Jul 17, 2026
e810a73
style: Apply black formatting to ur_test_summary.py
kekaczma Jul 17, 2026
7d77919
fix: Remove obsolete all_tests_file parameter from action calls
kekaczma Jul 21, 2026
065c314
refactor: Consolidate actions and remove CI-only boilerplate
kekaczma Jul 21, 2026
44164ee
cleanup: Remove old duplicate action files
kekaczma Jul 21, 2026
33dbf40
refactor: Move bash logic to Python helper
kekaczma Jul 21, 2026
0a868cf
fix: Apply security and code quality improvements
kekaczma Jul 21, 2026
9096dbb
perf: Simplify XML file search
kekaczma Jul 22, 2026
01206b7
perf: Optimize stats parsing with compiled regex
kekaczma Jul 22, 2026
5097048
refactor: Migrate bash logic to Python for UR test execution
kekaczma Jul 22, 2026
797b204
Fix formating, address security issues, fix xml handling
kekaczma Jul 22, 2026
3a9c220
Debug logs for xml
kekaczma Jul 22, 2026
53ee30c
Addinng flush statements to stdout
kekaczma Jul 22, 2026
d84fd40
Fix output issues
kekaczma Jul 22, 2026
e720781
Fix for output on action fail
kekaczma Jul 22, 2026
9140476
Enable debug logging
kekaczma Jul 22, 2026
2665e8a
Fix formating + debug logs for xml name
kekaczma Jul 29, 2026
61728d3
fox for xml name
kekaczma Jul 29, 2026
7c03037
Extra debug logs to track issue with uploading xml file
kekaczma Aug 3, 2026
2117ad7
Changing name of generated xml file
kekaczma Aug 3, 2026
7590c23
Exit code should be consistent with test results
kekaczma Aug 3, 2026
12cc213
Changes in report failure step - removing redundant statistics
kekaczma Aug 4, 2026
00098e1
format fix + additional logs for xml uppload
kekaczma Aug 4, 2026
2d78d3a
Fix formating, add cuda version check, setting cwd to workspace
kekaczma Aug 4, 2026
15c387c
Adapt validation to accept absolute paths
kekaczma Aug 4, 2026
60118e7
Format fix
kekaczma Aug 4, 2026
dfeacf1
changes after review
kekaczma Aug 5, 2026
8797f84
refactor after AI review part 1
kekaczma Aug 6, 2026
6119b02
Split functionallity to smaller scripts
kekaczma Aug 6, 2026
dcc1b56
Changes after AI code review part 2
kekaczma Aug 6, 2026
476f8e0
Fix issue with renamed files
kekaczma Aug 6, 2026
055d27a
black formating + updating docstrings
kekaczma Aug 6, 2026
07eea3a
Removing extra prints
kekaczma Aug 6, 2026
eaf1e10
Formating + removing backword copmatybility functions
kekaczma Aug 7, 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
49 changes: 35 additions & 14 deletions .github/workflows/ur-build-hw.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,6 @@ jobs:
run: |
sudo -E bash devops/scripts/install_drivers.sh devops/dependencies.json --igfx

- name: Check NVML version compatibility
if: ${{ inputs.adapter_name == 'CUDA' }}
run: python3 devops/scripts/check_nvml_version.py

- name: Configure Unified Runtime project
# ">" is used to avoid adding "\" at the end of each line; this command is quite long
run: >
Expand Down Expand Up @@ -145,21 +141,46 @@ jobs:
# This is to check that install command does not fail
run: cmake --install build

- name: Test adapter specific
- name: Build artifact name suffix
id: artifact_suffix
shell: bash
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
RUNNER_NAME: ${{ inputs.runner_name }}
STATIC_LOADER: ${{ matrix.adapter.static_Loader }}
OTHER_NAME: ${{ matrix.adapter.other_name }}
run: |
RUNNER_SUFFIX=$(echo "${RUNNER_NAME}" | sed 's/^UR_//')
SUFFIX="${RUNNER_SUFFIX}"

if [ "${STATIC_LOADER}" = "ON" ]; then
SUFFIX="${SUFFIX}-static"
fi

if [ -n "${OTHER_NAME}" ]; then
SUFFIX="${SUFFIX}-${OTHER_NAME}"
fi

Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
echo "suffix=${SUFFIX}" >> $GITHUB_OUTPUT

- name: Check NVML version compatibility
if: ${{ inputs.adapter_name == 'CUDA' }}
run: python3 devops/scripts/check_nvml_version.py

- name: Test adapter specific
uses: ./devops/actions/run-tests/ur
with:
test_type: 'adapter-specific'
build_dir: build
artifact_name: 'ur-${{matrix.adapter.name}}-${{steps.artifact_suffix.outputs.suffix}}-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
with:
test_type: 'conformance'
build_dir: build
artifact_name: 'ur-${{matrix.adapter.name}}-${{steps.artifact_suffix.outputs.suffix}}-conformance'

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

inputs:
test_type:
description: 'Type of tests to run (adapter-specific or conformance)'
required: true
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 ${{ inputs.test_type }} tests
id: run_tests
continue-on-error: true
shell: bash
env:
BUILD_DIR: ${{ inputs.build_dir }}
TEST_TYPE: ${{ inputs.test_type }}
run: |
# Run tests via unified CLI (handles validation, config, cmake execution)
# Use temp file instead of command substitution to preserve outputs even on error
OUTPUTS_FILE=$(mktemp)
set +e # Don't exit on error
devops/scripts/ur-test run "$TEST_TYPE" "$BUILD_DIR" "$GITHUB_WORKSPACE" > "$OUTPUTS_FILE" 2>&1
EXIT_CODE=$?
set -e # Re-enable exit on error

# Parse Python output and set GitHub Actions outputs (not env for security)
while IFS='=' read -r key value; do
if [ -n "$key" ] && [ -n "$value" ]; then
echo "$key=$value" >> $GITHUB_OUTPUT
echo " Set output: $key=$value"
fi
done < <(grep -E "^(log-file|xml-file|skip-artifacts)=" "$OUTPUTS_FILE")

rm -f "$OUTPUTS_FILE"
exit $EXIT_CODE

- name: Filter test log
if: ${{ always() && steps.run_tests.outputs['skip-artifacts'] != '1' }}
shell: bash
env:
LOG_FILE: ${{ steps.run_tests.outputs['log-file'] || 'adapter_tests.log' }}
run: |
if [ ! -f "$LOG_FILE" ]; then
echo "::warning::Test log not found"
exit 0
fi

echo "::group::Test Log"
devops/scripts/ur-test filter-log "$LOG_FILE" || { echo "::error::Filter failed"; head -1000 "$LOG_FILE"; }
echo "::endgroup::"

- name: Report test failures
if: steps.run_tests.outcome != 'success'
shell: bash
env:
LOG_FILE: ${{ steps.run_tests.outputs['log-file'] || 'adapter_tests.log' }}
run: |
devops/scripts/ur-test extract-errors "$LOG_FILE"
exit 1

- name: Test summary
if: ${{ always() && steps.run_tests.outputs['skip-artifacts'] != '1' }}
shell: bash
env:
LOG_FILE: ${{ steps.run_tests.outputs['log-file'] || 'adapter_tests.log' }}
XML_FILE: ${{ steps.run_tests.outputs['xml-file'] || 'adapter_tests_results.xml' }}
ARTIFACT_NAME: ${{ inputs.artifact_name }}
WORKFLOW_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
run: |
if [ ! -f "$LOG_FILE" ]; then
echo "::warning::Test log not found"
exit 0
fi

if [ ! -s "$LOG_FILE" ]; then
echo "::warning::Test log is empty"
exit 0
fi

devops/scripts/ur-test summary "$LOG_FILE" "${XML_FILE:-}"

# Add link to artifacts if they will be uploaded
if [ -n "$ARTIFACT_NAME" ]; then
echo ""
echo "---"
echo ""
echo "Test artifacts (full logs, XML) will be available at:"
echo "$WORKFLOW_URL"
fi

- name: Copy artifacts
if: ${{ always() && inputs.artifact_name != '' && (inputs.test_type != 'adapter-specific' || steps.run_tests.outputs['skip-artifacts'] != '1') }}
shell: bash
env:
LOG_FILE: ${{ steps.run_tests.outputs['log-file'] || 'adapter_tests.log' }}
XML_FILE: ${{ steps.run_tests.outputs['xml-file'] || 'adapter_tests_results.xml' }}
run: |
set -f # Disable glob expansion

# Clean artifacts directory to avoid mixing files from different test runs
rm -rf test_artifacts
mkdir -p test_artifacts

if [ -f "$LOG_FILE" ]; then
cp "$LOG_FILE" test_artifacts/
fi

if [ -n "$XML_FILE" ] && [ -f "$XML_FILE" ]; then
cp "$XML_FILE" test_artifacts/
fi

- name: Upload test artifacts
if: ${{ always() && inputs.artifact_name != '' && (inputs.test_type != 'adapter-specific' || steps.run_tests.outputs['skip-artifacts'] != '1') }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ${{ inputs.artifact_name }}
path: test_artifacts/
retention-days: 7
if-no-files-found: warn
8 changes: 8 additions & 0 deletions devops/scripts/ur-test
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/usr/bin/env python3
"""Unified Runtime test management CLI."""

import sys
from ur_test_tools.cli import main

if __name__ == "__main__":
sys.exit(main())
36 changes: 36 additions & 0 deletions devops/scripts/ur_test_tools/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
"""UR Test Tools - Modular test orchestration and summary generation."""

__version__ = "1.0.0"
__author__ = "Unified Runtime Team"

from .models import (
TestLists,
TestCounts,
TimingSummary,
TestConfig,
SummaryConfigFromLines,
)
from .test_runner import TestRunner
from .summary_generator import SummaryReporter
from .validation import (
PathValidator,
)
from .outputs import (
ConsoleOutput,
GitHubActionsOutput,
)

__all__ = [
"__version__",
"__author__",
"TestLists",
"TestCounts",
"TimingSummary",
"TestConfig",
"SummaryConfigFromLines",
"TestRunner",
"SummaryReporter",
"PathValidator",
"ConsoleOutput",
"GitHubActionsOutput",
]
151 changes: 151 additions & 0 deletions devops/scripts/ur_test_tools/cli.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
"""CLI entry points for UR test tools."""

import sys
import os
from pathlib import Path

from .models.config import SummaryConfigFromLines, TestConfig, TestExecutionContext
from .validation.path_validator import PathValidator
from .parsers.log_parser import (
LITLogParser,
read_log_file,
)
from .outputs.console import ConsoleOutput
from .summary_generator import SummaryReporter
from .test_runner import (
TestRunner,
get_test_config,
)
from .outputs.github_actions import GitHubActionsOutput


def main() -> int:
"""Unified CLI entry point."""
if len(sys.argv) < 2:
print("Error: Missing command", file=sys.stderr)
return 1

command = sys.argv[1]

if command == "run":
return main_ci_utils("run-tests")

elif command in ("summary", "extract-errors", "filter-log"):
internal_cmd = "show-summary" if command == "summary" else command
return main_test_summary(internal_cmd)

else:
print(f"Error: Unknown command '{command}'", file=sys.stderr)
return 1


def main_test_summary(command: str) -> int:
"""Entry point for ur_test_summary CLI."""
try:
if len(sys.argv) < 3:
print(
f"Error: {sys.argv[0]} <command> <log_file> [xml_file]",
file=sys.stderr,
)
return 1

log_file = sys.argv[2]
PathValidator.validate_log_path(log_file)
lines = read_log_file(log_file)
parser = LITLogParser(lines)

if command == "extract-errors":
for line in parser.extract_error_details():
print(line, end="")

elif command == "filter-log":
for line in ConsoleOutput.filter_log_for_display(lines):
print(line, end="")

elif command == "show-summary":
xml_file = PathValidator.validate_optional_path(
sys.argv[3] if len(sys.argv) > 3 else "", "XML", allow_absolute=True
)
config = SummaryConfigFromLines(
log_lines=lines, xml_file=xml_file or None
)
SummaryReporter(config).generate()

else:
print(f"Error: Unknown command '{command}'", file=sys.stderr)
return 1

return 0

except (OSError, ValueError) as e:
print(f"Error: {e}", file=sys.stderr)
return 1


def main_ci_utils(command: str) -> int:
"""Entry point for ur_ci_utils CLI."""
if command == "run-tests":
return _run_tests_command()

else:
print(f"Error: Unknown command '{command}'", file=sys.stderr)
return 1


def _run_tests_command() -> int:
"""Execute run-tests command."""
if len(sys.argv) < 5:
print(
f"Error: run-tests <test_type> <build_dir> <workspace>",
file=sys.stderr,
)
return 1

test_type = sys.argv[2]
build_dir = sys.argv[3]
workspace = sys.argv[4]

# Validate inputs
gha = GitHubActionsOutput()
if not PathValidator.validate_build_dir(build_dir, workspace):
gha.print_error("Invalid build_dir")
return 1

try:
config = get_test_config(test_type)
except ValueError as e:
gha.print_error(str(e))
return 1

# Convert to paths and create context
workspace_path = Path(workspace).resolve()
build_dir_path = workspace_path / build_dir

xml_output_name = f"{test_type.replace('-', '_')}_results.xml"
xml_output_path = (build_dir_path / xml_output_name).absolute()
xml_output_path.parent.mkdir(parents=True, exist_ok=True)

log_file_path = workspace_path / config.log_file

env = os.environ.copy()

context = TestExecutionContext(
test_type=test_type,
build_dir=build_dir_path,
workspace=workspace_path,
xml_output_path=xml_output_path,
log_file_path=log_file_path,
config=config,
env=env,
)

# Validate context
try:
context.validate()
except ValueError as e:
gha.print_error(str(e))
return 1

# Run tests
runner = TestRunner(context)
return runner.run()
Loading
Loading