Skip to content

Commit 0463321

Browse files
author
benoit-cty
committed
Add tests
1 parent 7094f40 commit 0463321

2 files changed

Lines changed: 67 additions & 0 deletions

File tree

tests/cli/test_cli_main.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,24 @@ def fake_run_and_monitor(ctx, offline=False, **kwargs):
324324
assert captured["kwargs"]["country_iso_code"] == "FRA"
325325

326326

327+
def test_monitor_delegates_online_mode_to_run_and_monitor(monkeypatch):
328+
captured = {}
329+
330+
def fake_run_and_monitor(ctx, offline=False, **kwargs):
331+
captured["offline"] = offline
332+
captured["kwargs"] = kwargs
333+
return "ok"
334+
335+
monkeypatch.setattr(cli_main, "run_and_monitor", fake_run_and_monitor)
336+
monkeypatch.setattr(cli_main, "get_existing_exp_id", lambda: "exp-1")
337+
338+
ctx = SimpleNamespace(args=["python", "train.py"])
339+
result = cli_main.monitor(ctx=ctx, api=True)
340+
assert result == "ok"
341+
assert captured["offline"] is False
342+
assert captured["kwargs"]["save_to_api"] is True
343+
344+
327345
def test_monitor_delegates_to_run_and_monitor_with_extra_args(monkeypatch):
328346
captured = {}
329347

@@ -340,3 +358,21 @@ def fake_run_and_monitor(ctx, **kwargs):
340358
assert result == "ok"
341359
assert captured["args"] == ["python", "train.py"]
342360
assert captured["kwargs"]["save_to_api"] is False
361+
362+
363+
def test_monitor_no_api_skips_experiment_id_requirement(monkeypatch):
364+
captured = {}
365+
366+
def fake_run_and_monitor(ctx, offline=False, **kwargs):
367+
captured["offline"] = offline
368+
captured["kwargs"] = kwargs
369+
return "ok"
370+
371+
monkeypatch.setattr(cli_main, "run_and_monitor", fake_run_and_monitor)
372+
monkeypatch.setattr(cli_main, "get_existing_exp_id", lambda: None)
373+
374+
ctx = SimpleNamespace(args=["python", "train.py"])
375+
result = cli_main.monitor(ctx=ctx, api=False)
376+
assert result == "ok"
377+
assert captured["offline"] is False
378+
assert captured["kwargs"]["save_to_api"] is False

tests/cli/test_monitor.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,37 @@ def wait(self):
9191
assert captured["kwargs"]["country_iso_code"] == "FRA"
9292

9393

94+
def test_run_and_monitor_uses_online_tracker_by_default(monkeypatch):
95+
captured = {}
96+
97+
class FakeOnlineTracker(FakeTracker):
98+
def __init__(self, **kwargs):
99+
captured["kwargs"] = kwargs
100+
super().__init__()
101+
102+
class FakePopen:
103+
def __init__(self, command, text=True):
104+
pass
105+
106+
def wait(self):
107+
return 0
108+
109+
monkeypatch.setattr(monitor_module, "EmissionsTracker", FakeOnlineTracker)
110+
monkeypatch.setattr(monitor_module, "OfflineEmissionsTracker", FakeTracker)
111+
monkeypatch.setattr(monitor_module.subprocess, "Popen", FakePopen)
112+
monkeypatch.setattr(monitor_module, "print", lambda *args, **kwargs: None)
113+
114+
with pytest.raises(typer.Exit) as exc_info:
115+
monitor_module.run_and_monitor(
116+
SimpleNamespace(args=["echo", "hi"]),
117+
save_to_api=True,
118+
)
119+
120+
assert exc_info.value.exit_code == 0
121+
assert captured["kwargs"]["tracking_mode"] == "process"
122+
assert captured["kwargs"]["save_to_api"] is True
123+
124+
94125
def test_run_and_monitor_handles_keyboard_interrupt(monkeypatch):
95126
process_info = {"terminated": 0, "killed": 0}
96127

0 commit comments

Comments
 (0)