2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-05 03:22:32 +08:00
Files
panel/pkg/io/io_test.go
耗子 194287554e refactor: migrate to chi framework (#165)
* refactor: 重构部分完成

* fix: 添加.gitkeep

* fix: build

* fix: lint

* fix: lint

* chore(deps): Update module github.com/go-playground/validator/v10 to v10.22.1 (#162)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): Update module gorm.io/gorm to v1.25.12 (#161)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): Update module golang.org/x/net to v0.29.0 (#159)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* workflow: 更新工作流

* workflow: test new download

* feat: merge frontend project

* workflow: fix frontend build

* workflow: fix frontend build

* workflow: fix frontend build

* workflow: fix frontend build

* workflow: fix frontend build

* workflow: fix frontend build

* workflow: fix frontend build

* workflow: fix frontend build

* workflow: fix frontend build

* workflow: fix frontend build

* workflow: fix frontend build

* workflow: fix frontend build

* workflow: fix frontend build

* workflow: update to ubuntu-24.04

* workflow: rename build-*

* workflow: 修改fetch-depth

* chore(deps): Update dependency eslint to v9 (#164)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(frontend): update dependences

* chore(frontend): fix lint

* chore(frontend): fix lint

* workflow: add govulncheck

* workflow: disable nilaway

* feat: 使用新的压缩解压库

* fix: 测试

* fix: 测试

* fix: 测试

* feat: 添加ntp包

* chore(deps): Lock file maintenance (#168)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): Update module github.com/go-resty/resty/v2 to v2.15.0 (#167)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): Update dependency @iconify/json to v2.2.249 (#169)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* feat: 添加限流器

* feat: 调整登录限流

* feat: 证书

* fix: lint

* feat: 证书dns

* feat: 证书acme账号

* fix: 修改UserID导致的一系列问题

* feat: 低配版任务队列

* feat: 队列完成

* fix: lint

* fix: lint

* fix: swagger和前端路由

* fix: 去掉ntp测试

* feat: 完成插件接口

* feat: 完成cron

* feat: 完成safe

* chore(deps): Update dependency vue to v3.5.6 (#170)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): Update dependency @vueuse/core to v11.1.0 (#171)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): Update dependency vite to v5.4.6 (#173)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): Update unocss monorepo to v0.62.4 (#172)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore: update renovate config

* feat: 新的firewall客户端

* fix: lint

* feat: firewall完成

* feat: ssh完成

* feat: 容器完成1/2

* feat: 容器完成

* feat: 文件完成

* feat: systemctl及设置

* fix: windows编译

* fix: session not work

* fix: migrate not work

* feat: 前端路由

* feat: 初步支持cli

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-09-18 01:43:14 +08:00

209 lines
4.8 KiB
Go

package io
import (
"os"
"path/filepath"
"testing"
"github.com/go-rat/utils/env"
"github.com/stretchr/testify/suite"
)
type IOTestSuite struct {
suite.Suite
}
func TestIOTestSuite(t *testing.T) {
suite.Run(t, &IOTestSuite{})
}
func (s *IOTestSuite) SetupTest() {
if _, err := os.Stat("testdata"); os.IsNotExist(err) {
s.NoError(os.MkdirAll("testdata", 0755))
}
}
func (s *IOTestSuite) TearDownTest() {
s.NoError(os.RemoveAll("testdata"))
}
func (s *IOTestSuite) TestWriteCreatesFileWithCorrectContent() {
path := "testdata/write_test.txt"
data := "Hello, World!"
permission := os.FileMode(0644)
s.NoError(Write(path, data, permission))
content, err := Read(path)
s.NoError(err)
s.Equal(data, content)
}
func (s *IOTestSuite) TestWriteAppendAppendsToFile() {
path := "testdata/append_test.txt"
initialData := "Hello"
appendData := ", World!"
s.NoError(Write(path, initialData, 0644))
s.NoError(WriteAppend(path, appendData))
content, err := Read(path)
s.NoError(err)
s.Equal("Hello, World!", content)
}
func (s *IOTestSuite) TestCompress() {
src := []string{"testdata/compress_test1.txt", "testdata/compress_test2.txt"}
err := Write(src[0], "File 1", 0644)
s.NoError(err)
err = Write(src[1], "File 2", 0644)
s.NoError(err)
err = Compress(src, "testdata/compress_test.zip", Zip)
s.NoError(err)
}
func (s *IOTestSuite) TestUnCompress() {
src := []string{"testdata/uncompress_test1.txt", "testdata/uncompress_test2.txt"}
err := Write(src[0], "File 1", 0644)
s.NoError(err)
err = Write(src[1], "File 2", 0644)
s.NoError(err)
err = Compress(src, "testdata/uncompress_test.zip", Zip)
s.NoError(err)
err = UnCompress("testdata/uncompress_test.zip", "testdata/uncompressed", Zip)
s.NoError(err)
data, err := Read("testdata/uncompressed/uncompress_test1.txt")
s.NoError(err)
s.Equal("File 1", data)
data, err = Read("testdata/uncompressed/uncompress_test2.txt")
s.NoError(err)
s.Equal("File 2", data)
}
func (s *IOTestSuite) TestRemoveDeletesFileOrDirectory() {
path := "testdata/remove_test"
s.NoError(Mkdir(path, 0755))
s.DirExists(path)
s.NoError(Remove(path))
s.NoDirExists(path)
}
func (s *IOTestSuite) TestMkdirCreatesDirectory() {
path := "testdata/mkdir_test"
s.NoError(Mkdir(path, 0755))
s.DirExists(path)
}
func (s *IOTestSuite) TestChmodChangesPermissions() {
if env.IsWindows() {
s.T().Skip("Skipping on Windows")
}
path := "testdata/chmod_test.txt"
s.NoError(Write(path, "test", 0644))
s.NoError(Chmod(path, 0755))
info, err := os.Stat(path)
s.NoError(err)
s.Equal(os.FileMode(0755), info.Mode().Perm())
}
func (s *IOTestSuite) TestChownChangesOwner() {
if env.IsWindows() {
s.T().Skip("Skipping on Windows")
}
path := "testdata/chown_test.txt"
s.NoError(Write(path, "test", 0644))
s.NoError(Chown(path, "root", "root"))
}
func (s *IOTestSuite) TestExistsReturnsTrueForExistingPath() {
path := "testdata/exists_test.txt"
s.NoError(Write(path, "test", 0644))
s.True(Exists(path))
}
func (s *IOTestSuite) TestExistsReturnsFalseForNonExistingPath() {
path := "testdata/nonexistent.txt"
s.False(Exists(path))
}
func (s *IOTestSuite) TestEmptyReturnsTrueForEmptyDirectory() {
path := "testdata/empty_test"
s.NoError(Mkdir(path, 0755))
s.True(Empty(path))
}
func (s *IOTestSuite) TestEmptyReturnsFalseForNonEmptyDirectory() {
path := "testdata/nonempty_test"
s.NoError(Mkdir(path, 0755))
s.NoError(Write(filepath.Join(path, "file.txt"), "test", 0644))
s.False(Empty(path))
}
func (s *IOTestSuite) TestMvMovesFile() {
src := "testdata/mv_src.txt"
dst := "testdata/mv_dst.txt"
s.NoError(Write(src, "test", 0644))
s.NoError(Mv(src, dst))
s.FileExists(dst)
s.NoFileExists(src)
}
func (s *IOTestSuite) TestCpCopiesFile() {
src := "testdata/cp_src.txt"
dst := "testdata/cp_dst.txt"
s.NoError(Write(src, "test", 0644))
s.NoError(Cp(src, dst))
s.FileExists(dst)
s.FileExists(src)
}
func (s *IOTestSuite) TestSizeReturnsCorrectSize() {
path := "testdata/size_test.txt"
data := "12345"
s.NoError(Write(path, data, 0644))
size, err := Size(path)
s.NoError(err)
s.Equal(int64(len(data)), size)
}
func (s *IOTestSuite) TestTempDirCreatesTemporaryDirectory() {
dir, err := TempDir("tempdir_test")
s.NoError(err)
s.DirExists(dir)
s.NoError(Remove(dir))
}
func (s *IOTestSuite) TestReadDirReturnsDirectoryEntries() {
path := "testdata/readdir_test"
s.NoError(Mkdir(path, 0755))
s.NoError(Write(filepath.Join(path, "file1.txt"), "test", 0644))
s.NoError(Write(filepath.Join(path, "file2.txt"), "test", 0644))
entries, err := ReadDir(path)
s.NoError(err)
s.Len(entries, 2)
}
func (s *IOTestSuite) TestIsDirReturnsTrueForDirectory() {
path := "testdata/isdir_test"
s.NoError(Mkdir(path, 0755))
s.True(IsDir(path))
}
func (s *IOTestSuite) TestIsDirReturnsFalseForFile() {
path := "testdata/isfile_test.txt"
s.NoError(Write(path, "test", 0644))
s.False(IsDir(path))
}