Skip to content

Commit d06f45d

Browse files
committed
Add --dry-run mode for metadata and schedule output
Add a local runner dry-run mode that prints runtime metadata and the generated schedule without executing tests. Also route the option through docker -> sbin runner and document it in README files.
1 parent 5ea136f commit d06f45d

4 files changed

Lines changed: 33 additions & 2 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ Useful options:
152152
- `--coverage`
153153
- `--failfast`
154154
- `--reload-package-on-testing` (default: off)
155+
- `--dry-run` (only print runtime metadata and schedule)
155156
- `--scheduler-delay-ms 0` (default)
156157
- `--refresh-cache` (re-bootstrap cached `/root` state)
157158
- `--refresh-image` (rebuild local Docker image)

docker/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,15 @@ ut-run-tests . --refresh-cache
6767
ut-run-tests . --refresh
6868
```
6969

70+
## Dry run (metadata and schedule only)
71+
72+
Use `--dry-run` to print runner metadata (including detected Sublime
73+
Text and Package Control versions) plus the generated schedule.
74+
75+
```sh
76+
ut-run-tests . --dry-run
77+
```
78+
7079
## Run a single test file
7180

7281
```sh

docker/run_tests.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ def main(argv: list[str] | None = None) -> int:
8282
coverage=args.coverage,
8383
failfast=args.failfast,
8484
reload_package_on_testing=args.reload_package_on_testing,
85+
dry_run=args.dry_run,
8586
tests_dir=tests_dir,
8687
pattern=pattern,
8788
)
@@ -133,6 +134,11 @@ def parse_args(argv: list[str] | None) -> argparse.Namespace:
133134
default=0,
134135
help="Delay before running scheduled tests inside Sublime (default: 0).",
135136
)
137+
test_group.add_argument(
138+
"--dry-run",
139+
action="store_true",
140+
help="Only print runtime metadata and schedule.",
141+
)
136142

137143
docker_group = parser.add_argument_group("docker options")
138144
docker_group.add_argument(
@@ -182,6 +188,9 @@ def parse_args(argv: list[str] | None) -> argparse.Namespace:
182188
if args.refresh_cache and not args.cache_volume:
183189
parser.error("--refresh-cache requires a cache volume (omit --no-cache-volume)")
184190

191+
if args.dry_run and (args.refresh or args.refresh_image or args.refresh_cache):
192+
parser.error("--dry-run cannot be combined with --refresh* options")
193+
185194
return args
186195

187196

@@ -330,6 +339,7 @@ def build_docker_run_command(
330339
coverage: bool,
331340
failfast: bool,
332341
reload_package_on_testing: bool,
342+
dry_run: bool,
333343
tests_dir: str | None,
334344
pattern: str | None,
335345
) -> list[str]:
@@ -359,6 +369,9 @@ def build_docker_run_command(
359369
if reload_package_on_testing:
360370
command.append("--reload-package-on-testing")
361371

372+
if dry_run:
373+
command.append("--dry-run")
374+
362375
if tests_dir:
363376
command.extend(["--tests-dir", tests_dir])
364377

sbin/run_tests.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ def detect_package_control_version():
207207
return str(version) if version else None
208208

209209

210-
def main(default_schedule_info):
210+
def main(default_schedule_info, dry_run=False):
211211
package_under_test = default_schedule_info['package']
212212
output_dir = os.path.join(UT_OUTPUT_DIR_PATH, package_under_test)
213213
output_file = os.path.join(output_dir, "result")
@@ -217,6 +217,13 @@ def main(default_schedule_info):
217217

218218
print_runtime_metadata()
219219

220+
if dry_run:
221+
create_dir_if_not_exists(output_dir)
222+
delete_file_if_exists(output_file)
223+
delete_file_if_exists(coverage_file)
224+
create_schedule(package_under_test, output_file, default_schedule_info)
225+
return
226+
220227
for i in range(3):
221228
create_dir_if_not_exists(output_dir)
222229
delete_file_if_exists(output_file)
@@ -256,6 +263,7 @@ def main(default_schedule_info):
256263
parser.add_option('--tests-dir')
257264
parser.add_option('--failfast', action='store_true')
258265
parser.add_option('--reload-package-on-testing', action='store_true')
266+
parser.add_option('--dry-run', action='store_true')
259267

260268
options, remainder = parser.parse_args()
261269

@@ -286,4 +294,4 @@ def main(default_schedule_info):
286294
if options.reload_package_on_testing:
287295
default_schedule_info['reload_package_on_testing'] = True
288296

289-
main(default_schedule_info)
297+
main(default_schedule_info, dry_run=options.dry_run)

0 commit comments

Comments
 (0)