1
0

完成一个简易的全局skill、command管理器

This commit is contained in:
2026-02-25 14:33:56 +08:00
parent f4cb809f9d
commit 2d327b5af8
60 changed files with 6053 additions and 1 deletions

View File

@@ -0,0 +1,100 @@
package fileutil
import (
"os"
"path/filepath"
"testing"
)
func TestCopyFile(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "skillmgr-fileutil-test-*")
if err != nil {
t.Fatalf("创建临时目录失败: %v", err)
}
defer os.RemoveAll(tmpDir)
// 创建源文件
srcFile := filepath.Join(tmpDir, "src.txt")
content := []byte("test content")
if err := os.WriteFile(srcFile, content, 0644); err != nil {
t.Fatalf("创建源文件失败: %v", err)
}
// 复制
destFile := filepath.Join(tmpDir, "dest.txt")
if err := CopyFile(srcFile, destFile); err != nil {
t.Fatalf("CopyFile 失败: %v", err)
}
// 验证
destContent, err := os.ReadFile(destFile)
if err != nil {
t.Fatalf("读取目标文件失败: %v", err)
}
if string(destContent) != string(content) {
t.Errorf("内容不匹配:期望 %s得到 %s", content, destContent)
}
}
func TestCopyDir(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "skillmgr-fileutil-test-*")
if err != nil {
t.Fatalf("创建临时目录失败: %v", err)
}
defer os.RemoveAll(tmpDir)
// 创建源目录结构
srcDir := filepath.Join(tmpDir, "src")
os.MkdirAll(filepath.Join(srcDir, "subdir"), 0755)
os.WriteFile(filepath.Join(srcDir, "file1.txt"), []byte("file1"), 0644)
os.WriteFile(filepath.Join(srcDir, "subdir", "file2.txt"), []byte("file2"), 0644)
// 复制
destDir := filepath.Join(tmpDir, "dest")
if err := CopyDir(srcDir, destDir); err != nil {
t.Fatalf("CopyDir 失败: %v", err)
}
// 验证文件存在
files := []string{
filepath.Join(destDir, "file1.txt"),
filepath.Join(destDir, "subdir", "file2.txt"),
}
for _, file := range files {
if _, err := os.Stat(file); os.IsNotExist(err) {
t.Errorf("文件应该存在: %s", file)
}
}
}
func TestCopyFile_PreservePermissions(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "skillmgr-fileutil-test-*")
if err != nil {
t.Fatalf("创建临时目录失败: %v", err)
}
defer os.RemoveAll(tmpDir)
// 创建可执行文件
srcFile := filepath.Join(tmpDir, "src.sh")
if err := os.WriteFile(srcFile, []byte("#!/bin/bash"), 0755); err != nil {
t.Fatalf("创建源文件失败: %v", err)
}
// 复制
destFile := filepath.Join(tmpDir, "dest.sh")
if err := CopyFile(srcFile, destFile); err != nil {
t.Fatalf("CopyFile 失败: %v", err)
}
// 验证权限
info, err := os.Stat(destFile)
if err != nil {
t.Fatalf("获取文件信息失败: %v", err)
}
if info.Mode().Perm() != 0755 {
t.Errorf("权限不匹配:期望 0755得到 %o", info.Mode().Perm())
}
}