- 运行目录定位、路径存在性、带进度回调下载、Zip 打包/解压(兼容 GBK 中文文件名) - 附单元测试、examples/filex 例程与包 README
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
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))
|
|
}
|
|
}
|