1
0
Files
Skill/manager/pkg/fileutil/fileutil_test.go

101 lines
2.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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())
}
}