Build the test command to run inside Docker. Args: args: Test arguments Returns: List of command parts for the test invocation
(args: TestArgs)
| 164 | |
| 165 | |
| 166 | def _build_test_command(args: TestArgs) -> list[str]: |
| 167 | """Build the test command to run inside Docker. |
| 168 | |
| 169 | Args: |
| 170 | args: Test arguments |
| 171 | |
| 172 | Returns: |
| 173 | List of command parts for the test invocation |
| 174 | """ |
| 175 | cmd = ["uv", "run", "test.py"] |
| 176 | |
| 177 | # Pass through relevant flags |
| 178 | if args.cpp: |
| 179 | cmd.append("--cpp") |
| 180 | if args.unit: |
| 181 | cmd.append("--unit") |
| 182 | if args.examples is not None: |
| 183 | cmd.append("--examples") |
| 184 | if args.examples: # Non-empty list |
| 185 | cmd.extend(args.examples) |
| 186 | # Use raw_test_query (before disambiguation) so inner test.py can do its |
| 187 | # own discovery. The outer test.py converts the query to a meson target |
| 188 | # name (e.g. fl_audio_fft_count_diagnostic) which the inner smart selector |
| 189 | # can't match well. |
| 190 | test_query = getattr(args, "raw_test_query", None) or args.test |
| 191 | if test_query: |
| 192 | cmd.append(test_query) |
| 193 | if args.verbose: |
| 194 | cmd.append("--verbose") |
| 195 | if args.clean: |
| 196 | cmd.append("--clean") |
| 197 | if args.no_parallel: |
| 198 | cmd.append("--no-parallel") |
| 199 | if args.full: |
| 200 | cmd.append("--full") |
| 201 | if args.no_fingerprint or args.force: |
| 202 | cmd.append("--no-fingerprint") |
| 203 | |
| 204 | # Handle build mode |
| 205 | if args.build_mode: |
| 206 | cmd.extend(["--build-mode", args.build_mode]) |
| 207 | elif args.debug: |
| 208 | cmd.append("--debug") |
| 209 | elif args.quick: |
| 210 | cmd.append("--quick") |
| 211 | |
| 212 | return cmd |
| 213 | |
| 214 | |
| 215 | def _run_garbage_collection() -> None: |
no test coverage detected