From d57391d098913bf85d1ef8a9c05ece8f1ae7cc67 Mon Sep 17 00:00:00 2001 From: uy_sun Date: Wed, 20 Nov 2024 23:42:30 +0800 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20=E6=B7=BB=E5=8A=A0=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E8=B0=83=E8=AF=95=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/github/plugins/publish/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/github/plugins/publish/utils.py b/src/plugins/github/plugins/publish/utils.py index 7afaf10b..994ad162 100644 --- a/src/plugins/github/plugins/publish/utils.py +++ b/src/plugins/github/plugins/publish/utils.py @@ -228,6 +228,7 @@ async def trigger_registry_update(handler: IssueHandler, publish_type: PublishTy if not result.valid or not result.info: logger.error("信息验证失败,跳过触发商店列表更新") + logger.debug(f"验证结果: {result}") return # 触发商店列表更新 From 6961c224ae320d433649a195d1f9db86a959ea3b Mon Sep 17 00:00:00 2001 From: uy_sun Date: Wed, 20 Nov 2024 23:55:57 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20registry=5Fupda?= =?UTF-8?q?te=20=E6=B2=A1=E6=B3=95=E6=AD=A3=E5=B8=B8=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 +++ src/plugins/github/plugins/publish/utils.py | 12 +++++-- .../github/plugins/publish/validation.py | 31 +++++++++++++++---- tests/conftest.py | 1 + .../utils/test_trigger_registry_update.py | 9 ++++-- 5 files changed, 45 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e152da3..2231b667 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/lang/zh-CN/ ## [Unreleased] +### Fixed + +- 修复 registry_update 没法正常触发的问题 + ## [4.0.9] - 2024-11-20 ### Fixed diff --git a/src/plugins/github/plugins/publish/utils.py b/src/plugins/github/plugins/publish/utils.py index 994ad162..f840c4c7 100644 --- a/src/plugins/github/plugins/publish/utils.py +++ b/src/plugins/github/plugins/publish/utils.py @@ -216,13 +216,19 @@ async def trigger_registry_update(handler: IssueHandler, publish_type: PublishTy issue = handler.issue # 重新验证信息 + # 这个时候已经合并了发布信息,如果还加载之前的数据则会报错重复 + # 所以这里不能加载之前的数据 match publish_type: case PublishType.ADAPTER: - result = await validate_adapter_info_from_issue(issue) + result = await validate_adapter_info_from_issue( + issue, load_previous_data=False + ) case PublishType.BOT: - result = await validate_bot_info_from_issue(issue) + result = await validate_bot_info_from_issue(issue, load_previous_data=False) case PublishType.PLUGIN: - result = await validate_plugin_info_from_issue(handler) + result = await validate_plugin_info_from_issue( + handler, load_previous_data=False + ) case _: raise ValueError("暂不支持的发布类型") diff --git a/src/plugins/github/plugins/publish/validation.py b/src/plugins/github/plugins/publish/validation.py index 6bdec5ae..04b6d9e2 100644 --- a/src/plugins/github/plugins/publish/validation.py +++ b/src/plugins/github/plugins/publish/validation.py @@ -48,7 +48,9 @@ def add_step_summary(summary: str): async def validate_plugin_info_from_issue( - handler: IssueHandler, skip_test: bool | None = None + handler: IssueHandler, + skip_test: bool | None = None, + load_previous_data: bool = True, ) -> ValidationDict: """从议题中获取插件信息,并且运行插件测试加载且获取插件元信息后进行验证""" body = handler.issue.body if handler.issue.body else "" @@ -71,7 +73,11 @@ async def validate_plugin_info_from_issue( test_config: str = raw_data.get("test_config", "") # 获取插件上次的数据 - previous_data = load_json_from_file(plugin_config.input_config.plugin_path) + previous_data = ( + load_json_from_file(plugin_config.input_config.plugin_path) + if load_previous_data + else [] + ) # 决定是否跳过插件测试 # 因为在上一步可能已经知道了是否跳过插件测试,所以这里可以传入 @@ -144,7 +150,9 @@ async def validate_plugin_info_from_issue( return result -async def validate_adapter_info_from_issue(issue: Issue) -> ValidationDict: +async def validate_adapter_info_from_issue( + issue: Issue, load_previous_data: bool = True +) -> ValidationDict: """从议题中提取适配器信息""" body = issue.body if issue.body else "" raw_data: dict[str, Any] = extract_issue_info_from_issue( @@ -160,12 +168,19 @@ async def validate_adapter_info_from_issue(issue: Issue) -> ValidationDict: ) raw_data.update(AuthorInfo.from_issue(issue).model_dump()) - previous_data = load_json_from_file(plugin_config.input_config.adapter_path) + previous_data = ( + load_json_from_file(plugin_config.input_config.adapter_path) + if load_previous_data + else [] + ) return validate_info(PublishType.ADAPTER, raw_data, previous_data) -async def validate_bot_info_from_issue(issue: Issue) -> ValidationDict: +async def validate_bot_info_from_issue( + issue: Issue, + load_previous_data: bool = True, +) -> ValidationDict: """从议题中提取机器人信息""" body = issue.body if issue.body else "" raw_data: dict[str, Any] = extract_issue_info_from_issue( @@ -180,6 +195,10 @@ async def validate_bot_info_from_issue(issue: Issue) -> ValidationDict: raw_data.update(AuthorInfo.from_issue(issue).model_dump()) - previous_data = load_json_from_file(plugin_config.input_config.bot_path) + previous_data = ( + load_json_from_file(plugin_config.input_config.bot_path) + if load_previous_data + else [] + ) return validate_info(PublishType.BOT, raw_data, previous_data) diff --git a/tests/conftest.py b/tests/conftest.py index 12f676a5..8ec2c55a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -178,6 +178,7 @@ def mocked_api(respx_mock: MockRouter): ) respx_mock.get("https://www.baidu.com", name="homepage_failed").respond(404) respx_mock.get("https://nonebot.dev/", name="homepage").respond() + respx_mock.get("https://v2.nonebot.dev", name="homepage").respond() respx_mock.get(STORE_ADAPTERS_URL, name="store_adapters").respond( json=[ { diff --git a/tests/github/publish/utils/test_trigger_registry_update.py b/tests/github/publish/utils/test_trigger_registry_update.py index 263920c5..0d152011 100644 --- a/tests/github/publish/utils/test_trigger_registry_update.py +++ b/tests/github/publish/utils/test_trigger_registry_update.py @@ -217,13 +217,16 @@ async def test_trigger_registry_update_skip_test( async def test_trigger_registry_update_bot(app: App, mocker: MockerFixture): - """机器人发布的情况""" + """机器人发布的情况 + + 已经有相同机器人的时候,registry_update 不会影响到机器人的测试 + """ from src.plugins.github.models import IssueHandler, RepoInfo from src.plugins.github.plugins.publish.utils import trigger_registry_update from src.providers.validation import PublishType mock_issue = MockIssue( - body=MockBody(type="bot").generate(), + body=MockBody(type="bot", homepage="https://v2.nonebot.dev").generate(), number=1, ).as_mock(mocker) @@ -243,7 +246,7 @@ async def test_trigger_registry_update_bot(app: App, mocker: MockerFixture): "name": "name", "desc": "desc", "author": "test", - "homepage": "https://nonebot.dev", + "homepage": "https://v2.nonebot.dev", "tags": [{"label": "test", "color": "#ffffff"}], "is_official": False, }, From 54b6184b473e25f36d0f94585946d61281ecdb97 Mon Sep 17 00:00:00 2001 From: uy_sun Date: Thu, 21 Nov 2024 00:09:33 +0800 Subject: [PATCH 3/3] =?UTF-8?q?test:=20=E4=BF=AE=E5=A4=8D=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 8ec2c55a..4e79b8cb 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -178,7 +178,7 @@ def mocked_api(respx_mock: MockRouter): ) respx_mock.get("https://www.baidu.com", name="homepage_failed").respond(404) respx_mock.get("https://nonebot.dev/", name="homepage").respond() - respx_mock.get("https://v2.nonebot.dev", name="homepage").respond() + respx_mock.get("https://v2.nonebot.dev", name="homepage_v2").respond() respx_mock.get(STORE_ADAPTERS_URL, name="store_adapters").respond( json=[ {