import os from kda.training.swanlab_env import prepare_swanlab_env, swanlab_run_id def test_prepare_drops_string_project(monkeypatch): monkeypatch.setenv("SWANLAB_PROJECT", "kda") monkeypatch.delenv("SWANLAB_PROJ_NAME", raising=False) assert prepare_swanlab_env() == "kda" assert "SWANLAB_PROJECT" not in os.environ assert os.environ["SWANLAB_PROJ_NAME"] == "kda" def test_prepare_strips_quotes(monkeypatch): monkeypatch.setenv("SWANLAB_PROJECT", '"kda"') monkeypatch.delenv("SWANLAB_PROJ_NAME", raising=False) assert prepare_swanlab_env() == "kda" assert "SWANLAB_PROJECT" not in os.environ def test_prepare_prefers_proj_name(monkeypatch): monkeypatch.setenv("SWANLAB_PROJECT", "ignored") monkeypatch.setenv("SWANLAB_PROJ_NAME", "mine") assert prepare_swanlab_env() == "mine" assert os.environ["SWANLAB_PROJ_NAME"] == "mine" def test_prepare_rejects_json_blob(monkeypatch): monkeypatch.setenv("SWANLAB_PROJECT", '{"name": "x"}') monkeypatch.delenv("SWANLAB_PROJ_NAME", raising=False) assert prepare_swanlab_env() == "kda" def test_swanlab_run_id(): class _Run: id = "ilgne5ro" assert swanlab_run_id(_Run()) == "ilgne5ro" assert swanlab_run_id(object()) is None