mirror of
https://github.com/jimeh/go-golden.git
synced 2026-02-19 11:16:47 +00:00
132 lines
2.5 KiB
Go
132 lines
2.5 KiB
Go
package golden
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestMkdirAll(t *testing.T) {
|
|
tempDir := t.TempDir()
|
|
|
|
tests := []struct {
|
|
name string
|
|
path string
|
|
perm os.FileMode
|
|
wantErr bool
|
|
}{
|
|
{"create new dir", "newdir", 0o755, false},
|
|
{"create nested dirs", "nested/dir/structure", 0o755, false},
|
|
{"invalid path", string([]byte{0, 0}), 0o755, true},
|
|
}
|
|
|
|
fs := NewFS()
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
path := filepath.Join(tempDir, tt.path)
|
|
err := fs.MkdirAll(path, tt.perm)
|
|
|
|
if tt.wantErr {
|
|
assert.Error(t, err)
|
|
} else {
|
|
assert.NoError(t, err)
|
|
_, err := os.Stat(path)
|
|
assert.NoError(t, err)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestReadFile(t *testing.T) {
|
|
tempDir := t.TempDir()
|
|
|
|
sampleFilePath := filepath.Join(tempDir, "sample.txt")
|
|
sampleContent := []byte("Hello, world!")
|
|
err := os.WriteFile(sampleFilePath, sampleContent, 0o600)
|
|
require.NoError(t, err)
|
|
|
|
tests := []struct {
|
|
name string
|
|
filename string
|
|
want []byte
|
|
wantErr bool
|
|
}{
|
|
{"read existing file", sampleFilePath, sampleContent, false},
|
|
{"file does not exist", "nonexistent.txt", nil, true},
|
|
}
|
|
|
|
fs := NewFS()
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := fs.ReadFile(tt.filename)
|
|
|
|
if tt.wantErr {
|
|
assert.Error(t, err)
|
|
} else {
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, string(tt.want), string(got))
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestWriteFile(t *testing.T) {
|
|
tempDir := t.TempDir()
|
|
|
|
tests := []struct {
|
|
name string
|
|
filename string
|
|
data []byte
|
|
perm os.FileMode
|
|
wantErr bool
|
|
}{
|
|
{
|
|
"write to new file",
|
|
"newfile.txt",
|
|
[]byte("new content"),
|
|
0o644,
|
|
false,
|
|
},
|
|
{
|
|
"overwrite existing file",
|
|
"existing.txt",
|
|
[]byte("overwritten content"),
|
|
0o644,
|
|
false,
|
|
},
|
|
{
|
|
"invalid filename",
|
|
string([]byte{0, 0}),
|
|
[]byte("invalid filename"),
|
|
0o644,
|
|
true,
|
|
},
|
|
{
|
|
"non-existent directory",
|
|
"nonexistentdir/newfile.txt",
|
|
[]byte("this will fail"),
|
|
0o644,
|
|
true,
|
|
},
|
|
}
|
|
|
|
fs := NewFS()
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
filePath := filepath.Join(tempDir, tt.filename)
|
|
err := fs.WriteFile(filePath, tt.data, tt.perm)
|
|
if tt.wantErr {
|
|
assert.Error(t, err)
|
|
} else {
|
|
assert.NoError(t, err)
|
|
content, err := os.ReadFile(filePath)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, tt.data, content)
|
|
}
|
|
})
|
|
}
|
|
}
|