fix: refresh astrbot root path resolution

This commit is contained in:
LIghtJUNction
2026-03-18 20:12:30 +08:00
parent 1b9820af44
commit 884efd47cd
2 changed files with 38 additions and 3 deletions

View File

@@ -96,7 +96,7 @@ class AstrbotPaths:
"""Astrbot 项目路径管理类"""
def __init__(self) -> None:
self._root = self._resolve_root()
self._root_override: Path | None = None
def _resolve_root(self) -> Path:
if path := os.environ.get("ASTRBOT_ROOT"):
@@ -108,11 +108,13 @@ class AstrbotPaths:
@property
def root(self) -> Path:
return self._root
if self._root_override is not None:
return self._root_override
return self._resolve_root()
@root.setter
def root(self, value: Path) -> None:
self._root = value
self._root_override = value
@property
def project_root(self) -> Path:

View File

@@ -0,0 +1,33 @@
from __future__ import annotations
from pathlib import Path
from astrbot.core.utils.astrbot_path import AstrbotPaths
def test_astrbot_paths_root_tracks_environment_updates(monkeypatch, tmp_path: Path):
first_root = tmp_path / "first-root"
second_root = tmp_path / "second-root"
monkeypatch.setenv("ASTRBOT_ROOT", str(first_root))
paths = AstrbotPaths()
assert paths.root == first_root
assert paths.skills == first_root / "data" / "skills"
monkeypatch.setenv("ASTRBOT_ROOT", str(second_root))
assert paths.root == second_root
assert paths.skills == second_root / "data" / "skills"
def test_astrbot_paths_root_override_remains_explicit(monkeypatch, tmp_path: Path):
monkeypatch.delenv("ASTRBOT_ROOT", raising=False)
paths = AstrbotPaths()
override_root = tmp_path / "override-root"
paths.root = override_root
monkeypatch.setenv("ASTRBOT_ROOT", str(tmp_path / "env-root"))
assert paths.root == override_root
assert paths.skills == override_root / "data" / "skills"