Files
K3/tests/integration/test_swanlab_env.py
T
dela 071dfaf42c Sanitize SwanLab env before login so 0.9 nested project does not crash
OpenBayes sets SWANLAB_PROJECT as a string; swanlab>=0.9 parses that as
ProjectSettings and raises QuoteAwareEnvSettingsSource. Drop it, keep
SWANLAB_PROJ_NAME, and share run-id extraction with train_k3.
2026-08-26 10:00:06 +08:00

40 lines
1.2 KiB
Python

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