Files
dingtalk-workspace-cli/internal/helpers/runtime_defaults_test.go
nitonitori 1ba326279f fix(markdown): 修复并优化Markdown追加内容分片逻辑
- 重新实现Markdown追加分片,确保每个分片为完整独立的顶级区块序列,满足update_document追加模式要求
- 修复分片过程中丢失换行符导致标题等Markdown元素识别错误的问题
- 解决超大表格和代码块被截断在单元格或代码围栏中间的问题
- 修正读取回写验证,避免与服务器未接收的内容比较导致验证失败
- 统一多条Markdown写入路径,统一分片逻辑与分片大小限制(30000字符)
- doc update --index参数在内容需分片时改为失败,避免不可预期的插入位置
- 添加分片写入过程中的降级变更通知字段,明确分片对文档结构的影响
- 优化写入流水线,增强超长内容自动分片支持和错误处理逻辑
- 补充分片相关的单元测试,保障内容完整性及边界拆分行为
2026-08-24 15:15:11 +08:00

51 lines
1.4 KiB
Go

package helpers
import (
"context"
"testing"
"github.com/DingTalk-Real-AI/dingtalk-workspace-cli/pkg/edition"
)
// Relocated verbatim from content_splitter_test.go, which was deleted along with
// the block-rebuilding splitter. This test targets runtime_defaults.go and has
// nothing to do with markdown chunking.
func TestCrossPlatformCoverageRuntimeDefaultsRegistryValidationAndSnapshot(t *testing.T) {
runtimeDefaultsMu.Lock()
previous := runtimeDefaults
runtimeDefaults = make(map[string]edition.RuntimeDefaultFn)
runtimeDefaultsMu.Unlock()
t.Cleanup(func() {
runtimeDefaultsMu.Lock()
runtimeDefaults = previous
runtimeDefaultsMu.Unlock()
})
resolver := func(context.Context) (string, bool) { return "value", true }
RegisterRuntimeDefault("$value", resolver)
snapshot := RuntimeDefaultsSnapshot()
if len(snapshot) != 1 || snapshot["$value"] == nil {
t.Fatalf("RuntimeDefaultsSnapshot() = %#v", snapshot)
}
delete(snapshot, "$value")
if len(RuntimeDefaultsSnapshot()) != 1 {
t.Fatal("snapshot mutated the runtime registry")
}
for _, tc := range []struct {
name string
fn edition.RuntimeDefaultFn
}{
{"", resolver}, {"$nil", nil}, {"$value", resolver},
} {
func() {
defer func() {
if recover() == nil {
t.Errorf("RegisterRuntimeDefault(%q) did not panic", tc.name)
}
}()
RegisterRuntimeDefault(tc.name, tc.fn)
}()
}
}