mirror of
https://github.com/astral-sh/ruff.git
synced 2025-11-19 03:48:29 +00:00
[ty] Press 'enter' to rerun all mdtests (#21427)
## Summary Allow users of `mdtest.py` to press enter to rerun all mdtests without recompiling (thanks @AlexWaygood). I swear I tried three other approaches (including a fully async version) before I settled on this solution. It is indeed silly, but works just fine. ## Test Plan Interactive playing around
This commit is contained in:
parent
04ab9170d6
commit
a01b0d7780
1 changed files with 18 additions and 0 deletions
|
|
@ -13,6 +13,8 @@ import argparse
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import threading
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Final, Literal, assert_never
|
from typing import Final, Literal, assert_never
|
||||||
|
|
||||||
|
|
@ -28,6 +30,7 @@ DIRS_TO_WATCH: Final = (
|
||||||
CRATE_ROOT.parent / "ty_test/src",
|
CRATE_ROOT.parent / "ty_test/src",
|
||||||
)
|
)
|
||||||
MDTEST_DIR: Final = CRATE_ROOT / "resources" / "mdtest"
|
MDTEST_DIR: Final = CRATE_ROOT / "resources" / "mdtest"
|
||||||
|
MDTEST_README: Final = CRATE_ROOT / "resources" / "README.md"
|
||||||
|
|
||||||
|
|
||||||
class MDTestRunner:
|
class MDTestRunner:
|
||||||
|
|
@ -175,6 +178,16 @@ class MDTestRunner:
|
||||||
print(line)
|
print(line)
|
||||||
|
|
||||||
def watch(self):
|
def watch(self):
|
||||||
|
def keyboard_input() -> None:
|
||||||
|
for _ in sys.stdin:
|
||||||
|
# This is silly, but there is no other way to inject events into
|
||||||
|
# the main `watch` loop. We use changes to the `README.md` file
|
||||||
|
# as a trigger to re-run all mdtests:
|
||||||
|
MDTEST_README.touch()
|
||||||
|
|
||||||
|
input_thread = threading.Thread(target=keyboard_input, daemon=True)
|
||||||
|
input_thread.start()
|
||||||
|
|
||||||
self._recompile_tests("Compiling tests...", message_on_success=False)
|
self._recompile_tests("Compiling tests...", message_on_success=False)
|
||||||
self._run_mdtest(self.filters)
|
self._run_mdtest(self.filters)
|
||||||
self.console.print("[dim]Ready to watch for changes...[/dim]")
|
self.console.print("[dim]Ready to watch for changes...[/dim]")
|
||||||
|
|
@ -188,6 +201,11 @@ class MDTestRunner:
|
||||||
for change, path_str in changes:
|
for change, path_str in changes:
|
||||||
path = Path(path_str)
|
path = Path(path_str)
|
||||||
|
|
||||||
|
# See above: `README.md` changes trigger a full re-run of all tests
|
||||||
|
if path == MDTEST_README:
|
||||||
|
self._run_mdtest(self.filters)
|
||||||
|
continue
|
||||||
|
|
||||||
match path.suffix:
|
match path.suffix:
|
||||||
case ".rs":
|
case ".rs":
|
||||||
rust_code_has_changed = True
|
rust_code_has_changed = True
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue