30 lines
1.3 KiB
Python
30 lines
1.3 KiB
Python
"""R11: the screen ranks targets by failed tries and lists the tries of the chosen one."""
|
|
from textual.widgets import DataTable
|
|
|
|
from tretry import log
|
|
from tretry.app import LogApp
|
|
from tretry.retry import Attempt, Result
|
|
|
|
|
|
def make_log(tmp_path):
|
|
path = tmp_path / "log.jsonl"
|
|
log.write(path, "http", "POST http://x/tickets", Result(False, attempts=[Attempt(1, 0, 3, False, "timeout"), Attempt(2, 3.5, 3, False, "timeout")],
|
|
stopped="tries", seconds=6.5), now=100)
|
|
log.write(path, "command", "curl ok", Result(True, attempts=[Attempt(1, 0, 0.1, True)], stopped="success", seconds=0.1), now=101)
|
|
return path
|
|
|
|
|
|
async def test_tables(tmp_path):
|
|
app = LogApp(make_log(tmp_path))
|
|
async with app.run_test() as pilot:
|
|
await pilot.pause()
|
|
targets = app.query_one("#targets", DataTable)
|
|
assert targets.row_count == 2 and targets.get_row_at(0)[0] == "POST http://x/tickets" # most failures first
|
|
assert app.query_one("#tries", DataTable).row_count == 2
|
|
await pilot.press("down")
|
|
await pilot.pause()
|
|
assert app.query_one("#tries", DataTable).row_count == 1
|
|
await pilot.press("f")
|
|
await pilot.pause()
|
|
assert app.query_one("#tries", DataTable).row_count == 0
|