feat(filex): 自 go-hua/common 迁入文件目录工具并独立成包
- 运行目录定位、路径存在性、带进度回调下载、Zip 打包/解压(兼容 GBK 中文文件名) - 附单元测试、examples/filex 例程与包 README
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package filex
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestPathExistsAndWorkDir(t *testing.T) {
|
||||
exists, err := PathExists(".")
|
||||
if err != nil || !exists {
|
||||
t.Errorf("PathExists(.) = %v, %v, want true", exists, err)
|
||||
}
|
||||
if exists, _ := PathExists(filepath.Join(t.TempDir(), "not-exist")); exists {
|
||||
t.Error("不存在的路径应返回 false")
|
||||
}
|
||||
if GetWorkDir() == "" {
|
||||
t.Error("GetWorkDir 不应为空")
|
||||
}
|
||||
}
|
||||
|
||||
func TestZipAndUnzip(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
src := filepath.Join(dir, "src", "inner")
|
||||
if err := os.MkdirAll(src, 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.WriteFile(filepath.Join(src, "hello.txt"), []byte("zip content"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
zipPath := filepath.Join(dir, "src.zip")
|
||||
if err := Zip(filepath.Join(dir, "src"), zipPath); err != nil {
|
||||
t.Fatalf("Zip: %v", err)
|
||||
}
|
||||
|
||||
dest := filepath.Join(dir, "out")
|
||||
if err := Unzip(zipPath, dest); err != nil {
|
||||
t.Fatalf("Unzip: %v", err)
|
||||
}
|
||||
|
||||
data, err := os.ReadFile(filepath.Join(dest, "src", "inner", "hello.txt"))
|
||||
if err != nil {
|
||||
t.Fatalf("读取解压文件: %v", err)
|
||||
}
|
||||
if string(data) != "zip content" {
|
||||
t.Errorf("解压内容 = %q", string(data))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user