diff --git a/src/providers/docker_test/__init__.py b/src/providers/docker_test/__init__.py index bd511037..6d26d7e4 100644 --- a/src/providers/docker_test/__init__.py +++ b/src/providers/docker_test/__init__.py @@ -77,7 +77,15 @@ async def run(self, version: str) -> DockerTestResult: detach=False, remove=True, ).decode() - data = json.loads(output) + + try: + data = json.loads(output) + except json.JSONDecodeError: + data = { + "run": True, + "load": False, + "output": f"插件测试结果解析失败,输出内容非 JSON 格式。\n输出内容:{output}", + } except Exception as e: data = { "run": False, diff --git a/src/providers/docker_test/plugin_test.py b/src/providers/docker_test/plugin_test.py index fb7e1ba9..98788053 100644 --- a/src/providers/docker_test/plugin_test.py +++ b/src/providers/docker_test/plugin_test.py @@ -171,11 +171,15 @@ async def run(self): # 补上获取到 Python 版本 self._test_env.insert(0, f"python=={self._test_python_version}") # 读取插件元数据 - metadata = None metadata_path = self._test_dir / "metadata.json" + metadata = None if metadata_path.exists(): - with open(self._test_dir / "metadata.json", encoding="utf-8") as f: - metadata = json.load(f) + try: + metadata = json.loads(metadata_path.read_text(encoding="utf-8")) + except json.JSONDecodeError: + self._log_output("插件元数据读取失败,metadata.json 格式不正确。") + except Exception as e: + self._log_output(f"插件元数据读取失败,错误信息:{e}") result = { "metadata": metadata,