From 9581887994a00235a002df44e037e48444f1098a Mon Sep 17 00:00:00 2001 From: uy/sun Date: Thu, 9 Mar 2023 17:58:26 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E8=B0=83=E6=95=B4=E6=97=A7=E7=89=88?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E5=8A=A0=E8=BD=BD=E9=80=BB=E8=BE=91?= =?UTF-8?q?=20(#212)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot_bison/config/config_legacy.py | 8 ++------ nonebot_bison/config/db.py | 3 ++- tests/config/test_config_legacy.py | 3 +-- tests/config/test_data_migration.py | 6 ++++-- tests/conftest.py | 17 ++++++++++++++--- 5 files changed, 23 insertions(+), 14 deletions(-) diff --git a/nonebot_bison/config/config_legacy.py b/nonebot_bison/config/config_legacy.py index 87cf5a3..d892b5c 100644 --- a/nonebot_bison/config/config_legacy.py +++ b/nonebot_bison/config/config_legacy.py @@ -25,8 +25,6 @@ def get_config_path() -> tuple[str, str]: else: working_dir = os.getcwd() data_dir = path.join(working_dir, "data") - if not path.isdir(data_dir): - os.makedirs(data_dir) old_path = path.join(data_dir, "hk_reporter.json") new_path = path.join(data_dir, "bison.json") deprecated_maker_path = path.join(data_dir, "bison.json.deprecated") @@ -36,6 +34,7 @@ def get_config_path() -> tuple[str, str]: def drop(): + config = Config() if plugin_config.bison_config_path: data_dir = plugin_config.bison_config_path else: @@ -252,7 +251,7 @@ def start_up(): return if not (search_res := config.kv_config.search(Query().name == "version")): config.kv_config.insert({"name": "version", "value": config.migrate_version}) - elif search_res[0].get("value") < config.migrate_version: + elif search_res[0].get("value") < config.migrate_version: # type: ignore query = Query() version_query = query.name == "version" cur_version = search_res[0].get("value") @@ -268,6 +267,3 @@ def start_up(): config.kv_config.update({"value": config.migrate_version}, version_query) # do migration config.update_send_cache() - - -config = Config() diff --git a/nonebot_bison/config/db.py b/nonebot_bison/config/db.py index 06aaa26..e305927 100644 --- a/nonebot_bison/config/db.py +++ b/nonebot_bison/config/db.py @@ -2,11 +2,12 @@ from nonebot.log import logger from nonebot_plugin_datastore.db import get_engine from sqlalchemy.ext.asyncio.session import AsyncSession -from .config_legacy import ConfigContent, config, drop +from .config_legacy import Config, ConfigContent, drop from .db_model import Subscribe, Target, User async def data_migrate(): + config = Config() if config.available: logger.warning("You are still using legacy db, migrating to sqlite") all_subs: list[ConfigContent] = list( diff --git a/tests/config/test_config_legacy.py b/tests/config/test_config_legacy.py index 9d7d10a..d6e90a9 100644 --- a/tests/config/test_config_legacy.py +++ b/tests/config/test_config_legacy.py @@ -17,11 +17,10 @@ def config_legacy(app: App, use_legacy_config): from nonebot_bison.config import config_legacy as config config.start_up() + yield config.Config() config.Config().db.close() - legacy_config = Path(config.get_config_path()[0]) - legacy_config.unlink(missing_ok=True) def test_create_and_get(config_legacy: "Config", app: App): diff --git a/tests/config/test_data_migration.py b/tests/config/test_data_migration.py index d8c64bd..c0d0df6 100644 --- a/tests/config/test_data_migration.py +++ b/tests/config/test_data_migration.py @@ -1,9 +1,10 @@ async def test_migration(use_legacy_config): from nonebot_plugin_datastore.db import init_db - from nonebot_bison.config.config_legacy import config as config_legacy + from nonebot_bison.config.config_legacy import Config from nonebot_bison.config.db_config import config + config_legacy = Config() config_legacy.add_subscribe( user=123, user_type="group", @@ -57,9 +58,10 @@ async def test_migration(use_legacy_config): async def test_migrate_dup(use_legacy_config): from nonebot_plugin_datastore.db import init_db - from nonebot_bison.config.config_legacy import config as config_legacy + from nonebot_bison.config.config_legacy import Config from nonebot_bison.config.db_config import config + config_legacy = Config() config_legacy.add_subscribe( user=123, user_type="group", diff --git a/tests/conftest.py b/tests/conftest.py index 0b177e5..0d0c7d7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -84,9 +84,20 @@ async def init_scheduler(app: App): async def use_legacy_config(app: App): import aiofiles - from nonebot_bison.config.config_legacy import config, get_config_path + from nonebot_bison.config.config_legacy import Config, get_config_path + from nonebot_bison.utils import Singleton - async with aiofiles.open(get_config_path()[0], "w") as f: + # 默认不创建配置所在的文件夹 + # 如果需要测试需要手动创建相关文件夹 + path = Path(get_config_path()[0]) + path.parent.mkdir(parents=True, exist_ok=True) + + async with aiofiles.open(path, "w") as f: await f.write("{}") - config._do_init() + Config()._do_init() + + yield + + # 清除单例的缓存 + Singleton._instances.clear()