mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-05-28 03:26:15 +08:00
ci: add option to set ctest arguments
This commit is contained in:
committed by
Anonymous Maarten
parent
db1506123e
commit
9d97e663d9
@@ -7,6 +7,7 @@ import json
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import shlex
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -234,6 +235,7 @@ class JobDetails:
|
|||||||
pypi_packages: list[str] = dataclasses.field(default_factory=list)
|
pypi_packages: list[str] = dataclasses.field(default_factory=list)
|
||||||
setup_gage_sdk_path: str = ""
|
setup_gage_sdk_path: str = ""
|
||||||
binutils_strings: str = "strings"
|
binutils_strings: str = "strings"
|
||||||
|
ctest_args: str = ""
|
||||||
|
|
||||||
def to_workflow(self, enable_artifacts: bool) -> dict[str, str|bool]:
|
def to_workflow(self, enable_artifacts: bool) -> dict[str, str|bool]:
|
||||||
data = {
|
data = {
|
||||||
@@ -303,6 +305,7 @@ class JobDetails:
|
|||||||
"pypi-packages": my_shlex_join(self.pypi_packages),
|
"pypi-packages": my_shlex_join(self.pypi_packages),
|
||||||
"setup-ngage-sdk-path": self.setup_gage_sdk_path,
|
"setup-ngage-sdk-path": self.setup_gage_sdk_path,
|
||||||
"binutils-strings": self.binutils_strings,
|
"binutils-strings": self.binutils_strings,
|
||||||
|
"ctest-args": self.ctest_args,
|
||||||
}
|
}
|
||||||
return {k: v for k, v in data.items() if v != ""}
|
return {k: v for k, v in data.items() if v != ""}
|
||||||
|
|
||||||
@@ -318,7 +321,7 @@ def my_shlex_join(s):
|
|||||||
return " ".join(escape(s))
|
return " ".join(escape(s))
|
||||||
|
|
||||||
|
|
||||||
def spec_to_job(spec: JobSpec, key: str, trackmem_symbol_names: bool) -> JobDetails:
|
def spec_to_job(spec: JobSpec, key: str, trackmem_symbol_names: bool, ctest_args: list[str]) -> JobDetails:
|
||||||
job = JobDetails(
|
job = JobDetails(
|
||||||
name=spec.name,
|
name=spec.name,
|
||||||
key=key,
|
key=key,
|
||||||
@@ -828,6 +831,7 @@ def spec_to_job(spec: JobSpec, key: str, trackmem_symbol_names: bool) -> JobDeta
|
|||||||
"-DCMAKE_C_COMPILER_LAUNCHER=ccache",
|
"-DCMAKE_C_COMPILER_LAUNCHER=ccache",
|
||||||
"-DCMAKE_CXX_COMPILER_LAUNCHER=ccache",
|
"-DCMAKE_CXX_COMPILER_LAUNCHER=ccache",
|
||||||
))
|
))
|
||||||
|
job.ctest_args = shlex.join(ctest_args)
|
||||||
if not build_parallel:
|
if not build_parallel:
|
||||||
job.cmake_build_arguments.append("-j1")
|
job.cmake_build_arguments.append("-j1")
|
||||||
if job.cflags or job.cppflags:
|
if job.cflags or job.cppflags:
|
||||||
@@ -850,9 +854,14 @@ def spec_to_job(spec: JobSpec, key: str, trackmem_symbol_names: bool) -> JobDeta
|
|||||||
return job
|
return job
|
||||||
|
|
||||||
|
|
||||||
def spec_to_platform(spec: JobSpec, key: str, enable_artifacts: bool, trackmem_symbol_names: bool) -> dict[str, str|bool]:
|
def spec_to_platform(spec: JobSpec, key: str, enable_artifacts: bool, trackmem_symbol_names: bool, ctest_args:list[str]) -> dict[str, str|bool]:
|
||||||
logger.info("spec=%r", spec)
|
logger.info("spec=%r", spec)
|
||||||
job = spec_to_job(spec, key=key, trackmem_symbol_names=trackmem_symbol_names)
|
job = spec_to_job(
|
||||||
|
spec,
|
||||||
|
key=key,
|
||||||
|
trackmem_symbol_names=trackmem_symbol_names,
|
||||||
|
ctest_args=ctest_args,
|
||||||
|
)
|
||||||
logger.info("job=%r", job)
|
logger.info("job=%r", job)
|
||||||
platform = job.to_workflow(enable_artifacts=enable_artifacts)
|
platform = job.to_workflow(enable_artifacts=enable_artifacts)
|
||||||
logger.info("platform=%r", platform)
|
logger.info("platform=%r", platform)
|
||||||
@@ -881,6 +890,7 @@ def main():
|
|||||||
)
|
)
|
||||||
|
|
||||||
filters = []
|
filters = []
|
||||||
|
ctest_args = []
|
||||||
if args.commit_message_file:
|
if args.commit_message_file:
|
||||||
with open(args.commit_message_file, "r") as f:
|
with open(args.commit_message_file, "r") as f:
|
||||||
commit_message = f.read()
|
commit_message = f.read()
|
||||||
@@ -893,6 +903,9 @@ def main():
|
|||||||
if re.search(r"\[sdl-ci-(full-)?trackmem(-symbol-names)?]", commit_message, flags=re.M):
|
if re.search(r"\[sdl-ci-(full-)?trackmem(-symbol-names)?]", commit_message, flags=re.M):
|
||||||
args.trackmem_symbol_names = True
|
args.trackmem_symbol_names = True
|
||||||
|
|
||||||
|
for m in re.finditer(r"\[sdl-ci-ctest-args? (.*)]", commit_message, flags=re.M):
|
||||||
|
ctest_args.extend(shlex.split(m.group(1)))
|
||||||
|
|
||||||
if not filters:
|
if not filters:
|
||||||
filters.append("*")
|
filters.append("*")
|
||||||
|
|
||||||
@@ -900,7 +913,7 @@ def main():
|
|||||||
|
|
||||||
all_level_platforms = {}
|
all_level_platforms = {}
|
||||||
|
|
||||||
all_platforms = {key: spec_to_platform(spec, key=key, enable_artifacts=args.enable_artifacts, trackmem_symbol_names=args.trackmem_symbol_names) for key, spec in JOB_SPECS.items()}
|
all_platforms = {key: spec_to_platform(spec, key=key, enable_artifacts=args.enable_artifacts, trackmem_symbol_names=args.trackmem_symbol_names, ctest_args=ctest_args) for key, spec in JOB_SPECS.items()}
|
||||||
|
|
||||||
for level_i, level_keys in enumerate(all_level_keys, 1):
|
for level_i, level_keys in enumerate(all_level_keys, 1):
|
||||||
level_key = f"level{level_i}"
|
level_key = f"level{level_i}"
|
||||||
|
|||||||
@@ -242,7 +242,7 @@ jobs:
|
|||||||
${{ matrix.platform.pretest-cmd }}
|
${{ matrix.platform.pretest-cmd }}
|
||||||
set -eu
|
set -eu
|
||||||
export SDL_TESTS_QUICK=1
|
export SDL_TESTS_QUICK=1
|
||||||
ctest -VV --test-dir build/ -j2
|
ctest --test-dir build/ ${{ matrix.platform.ctest-args || '-VV -j2' }}
|
||||||
- name: "Build test apk's (CMake)"
|
- name: "Build test apk's (CMake)"
|
||||||
id: apks
|
id: apks
|
||||||
if: ${{ always() && steps.build.outcome == 'success' && matrix.platform.android-apks != '' }}
|
if: ${{ always() && steps.build.outcome == 'success' && matrix.platform.android-apks != '' }}
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ Its behaviour can be influenced slightly by including SDL-specific tags in your
|
|||||||
- `[sdl-ci-filter GLOB]` limits the platforms for which to run ci.
|
- `[sdl-ci-filter GLOB]` limits the platforms for which to run ci.
|
||||||
- `[sdl-ci-artifacts]` forces SDL artifacts, which can then be downloaded from the summary page.
|
- `[sdl-ci-artifacts]` forces SDL artifacts, which can then be downloaded from the summary page.
|
||||||
- `[sdl-ci-trackmem-symbol-names]` makes sure the final report generated by `--trackmem` contains symbol names.
|
- `[sdl-ci-trackmem-symbol-names]` makes sure the final report generated by `--trackmem` contains symbol names.
|
||||||
|
- `[sdl-ci-ctest-args]` allows overriding the ctest arguments. Adding `--repeat-until-fail N` and `-R NAME` is useful.
|
||||||
|
|
||||||
## Contributing to the documentation
|
## Contributing to the documentation
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user