Skip to content

Commit b1693f7

Browse files
authored
fix: 修复作业摘要未去除 ANSI 字符的问题 (#146)
1 parent c0c9af8 commit b1693f7

File tree

5 files changed

+16
-16
lines changed

5 files changed

+16
-16
lines changed

src/plugins/publish/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from nonebot.plugin import PluginMetadata
55
from pydantic import BaseModel, Extra, validator
66

7-
from src.utils.helper import strip_ansi
7+
from src.utils.plugin_test import strip_ansi
88

99

1010
class PublishConfig(BaseModel):

src/utils/helper.py

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/utils/plugin_test.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,14 @@ def default(self, obj):
5959
"""
6060

6161

62+
def strip_ansi(text: str | None) -> str:
63+
"""去除 ANSI 转义字符"""
64+
if not text:
65+
return ""
66+
ansi_escape = re.compile(r"\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])")
67+
return ansi_escape.sub("", text)
68+
69+
6270
def get_plugin_list() -> dict[str, str]:
6371
"""获取插件列表
6472
@@ -126,14 +134,16 @@ async def run(self):
126134
f.write(f"RESULT={self._run}\n")
127135
# 输出测试输出
128136
output = "\n".join(self._output_lines)
137+
# GitHub 不支持 ANSI 转义字符所以去掉
138+
ansiless_output = strip_ansi(output)
129139
# 限制输出长度,防止评论过长,评论最大长度为 65536
130-
output = output[:50000]
140+
ansiless_output = ansiless_output[:50000]
131141
with open(self.github_output_file, "a", encoding="utf8") as f:
132-
f.write(f"OUTPUT<<EOF\n{output}\nEOF\n")
142+
f.write(f"OUTPUT<<EOF\n{ansiless_output}\nEOF\n")
133143
# 输出至作业摘要
134144
with open(self.github_step_summary_file, "a", encoding="utf8") as f:
135145
summary = f"插件 {self.project_link} 加载测试结果:{'通过' if self._run else '未通过'}\n"
136-
summary += f"<details><summary>测试输出</summary><pre><code>{output}</code></pre></details>"
146+
summary += f"<details><summary>测试输出</summary><pre><code>{ansiless_output}</code></pre></details>"
137147
f.write(f"{summary}")
138148
return self._run, output
139149

src/utils/store_test/validation.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
from pydantic import ValidationError
1212

1313
from src.plugins.publish.validation import PluginPublishInfo
14-
from src.utils.helper import strip_ansi
15-
from src.utils.plugin_test import PluginTest
14+
from src.utils.plugin_test import PluginTest, strip_ansi
1615

1716
from .constants import PLUGIN_CONFIGS_URL
1817
from .models import Metadata, PluginData

tests/publish/utils/test_ansi.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33

44
async def test_strip_ansi(app: App):
5-
from src.utils.helper import strip_ansi
5+
from src.utils.plugin_test import strip_ansi
66

77
assert strip_ansi("test") == "test"
88

0 commit comments

Comments
 (0)