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