Skip to content

Commit 5b70835

Browse files
KonghaYaoglm-5.1
andcommitted
feat(gig): 添加 update 子命令,支持自更新
gig update 从 GitHub Release 下载最新版本到 ~/.peri/gig-vX.Y.Z/, 创建 symlink ~/.peri/gig,并自动清理旧版本。 支持 GITHUB_PROXY 环境变量和跨平台(Unix symlink / Windows copy)。 Co-Authored-By: glm-5.1 <zai-org@claude-code-best.win>
1 parent 7ac7d55 commit 5b70835

6 files changed

Lines changed: 1221 additions & 26 deletions

File tree

peri-widgets/src/markdown/mod_test.rs

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use unicode_width::UnicodeWidthStr;
22

33
use super::*;
4+
use crate::markdown::cache::MarkdownCache;
45
use ratatui::style::Modifier;
56

67
fn default_theme() -> DefaultMarkdownTheme {
@@ -389,30 +390,32 @@ fn parse_markdown_cache_hit_on_repeat() {
389390
}
390391
}
391392

392-
/// 集成测试:不同宽度产生不同渲染结果
393+
/// 集成测试:不同宽度产生不同缓存条目
393394
#[test]
394395
fn parse_markdown_different_width_different_cache_entry() {
395-
// Arrange
396-
let content = "| A | B |\n| --- | --- |\n| 内容 | 更多内容 |";
396+
// Arrange: 用长文本段落,宽度差异会影响换行
397+
let content =
398+
"这是一段足够长的文本内容,用于测试不同渲染宽度下是否会产生不同的缓存条目和渲染结果。";
397399
let theme = default_theme();
400+
let cache = MarkdownCache::global();
401+
cache.clear();
398402

399403
// Act: 用两个不同宽度调用
400404
let r1 = parse_markdown(content, &theme, 80);
401-
let r2 = parse_markdown(content, &theme, 40);
402-
403-
// Assert: 不同宽度应产生不同的渲染结果(行数或内容不同)
404-
let different = r1.lines.len() != r2.lines.len()
405-
|| r1.lines.iter().zip(r2.lines.iter()).any(|(a, b)| {
406-
a.spans
407-
.iter()
408-
.map(|s| s.content.as_ref())
409-
.collect::<String>()
410-
!= b.spans
411-
.iter()
412-
.map(|s| s.content.as_ref())
413-
.collect::<String>()
414-
});
415-
assert!(different, "不同宽度应产生不同渲染结果");
405+
let r2 = parse_markdown(content, &theme, 20);
406+
407+
// Assert: 两次结果不同(窄宽度会产生更多行)
408+
assert_ne!(
409+
r1.lines.len(),
410+
r2.lines.len(),
411+
"不同宽度应产生不同行数:80 宽度有 {} 行,20 宽度有 {} 行",
412+
r1.lines.len(),
413+
r2.lines.len()
414+
);
415+
// Assert: 缓存中应有两个独立条目
416+
assert!(cache.get(content, 80).is_some(), "宽度 80 应命中缓存");
417+
assert!(cache.get(content, 20).is_some(), "宽度 20 应命中缓存");
418+
cache.clear();
416419
}
417420

418421
/// 集成测试:空字符串返回空结果

0 commit comments

Comments
 (0)