summaryrefslogtreecommitdiff
path: root/env/env_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'env/env_test.go')
-rw-r--r--env/env_test.go112
1 files changed, 52 insertions, 60 deletions
diff --git a/env/env_test.go b/env/env_test.go
index 59bf4048..faaaa603 100644
--- a/env/env_test.go
+++ b/env/env_test.go
@@ -2,10 +2,13 @@ package env
import (
"errors"
+ "io/fs"
"os"
"testing"
+ "testing/fstest"
- "github.com/spf13/afero"
+ "github.com/hack-pad/hackpadfs"
+ "github.com/hairyhenderson/gomplate/v4/internal/datafs"
"github.com/stretchr/testify/assert"
)
@@ -17,22 +20,22 @@ func TestGetenv(t *testing.T) {
}
func TestGetenvFile(t *testing.T) {
- fs := afero.NewMemMapFs()
- _ = fs.Mkdir("/tmp", 0777)
- f, _ := fs.Create("/tmp/foo")
- _, _ = f.Write([]byte("foo"))
-
- defer os.Unsetenv("FOO_FILE")
- os.Setenv("FOO_FILE", "/tmp/foo")
- assert.Equal(t, "foo", getenvVFS(fs, "FOO", "bar"))
-
- os.Setenv("FOO_FILE", "/tmp/missing")
- assert.Equal(t, "bar", getenvVFS(fs, "FOO", "bar"))
-
- _, _ = fs.Create("/tmp/unreadable")
- fs = writeOnly(fs)
- os.Setenv("FOO_FILE", "/tmp/unreadable")
- assert.Equal(t, "bar", getenvVFS(fs, "FOO", "bar"))
+ fsys := fs.FS(fstest.MapFS{
+ "tmp": &fstest.MapFile{Mode: fs.ModeDir | 0o777},
+ "tmp/foo": &fstest.MapFile{Data: []byte("foo")},
+ "tmp/unreadable": &fstest.MapFile{Data: []byte("foo"), Mode: 0o000},
+ })
+ fsys = datafs.WrapWdFS(fsys)
+
+ t.Setenv("FOO_FILE", "/tmp/foo")
+ assert.Equal(t, "foo", getenvVFS(fsys, "FOO", "bar"))
+
+ t.Setenv("FOO_FILE", "/tmp/missing")
+ assert.Equal(t, "bar", getenvVFS(fsys, "FOO", "bar"))
+
+ fsys = writeOnly(fsys)
+ t.Setenv("FOO_FILE", "/tmp/unreadable")
+ assert.Equal(t, "bar", getenvVFS(fsys, "FOO", "bar"))
}
func TestExpandEnv(t *testing.T) {
@@ -44,73 +47,62 @@ func TestExpandEnv(t *testing.T) {
}
func TestExpandEnvFile(t *testing.T) {
- fs := afero.NewMemMapFs()
- _ = fs.Mkdir("/tmp", 0777)
- f, _ := fs.Create("/tmp/foo")
- _, _ = f.Write([]byte("foo"))
-
- defer os.Unsetenv("FOO_FILE")
- os.Setenv("FOO_FILE", "/tmp/foo")
- assert.Equal(t, "foo is foo", expandEnvVFS(fs, "foo is $FOO"))
-
- os.Setenv("FOO_FILE", "/tmp/missing")
- assert.Equal(t, "empty", expandEnvVFS(fs, "${FOO}empty"))
-
- _, _ = fs.Create("/tmp/unreadable")
- fs = writeOnly(fs)
- os.Setenv("FOO_FILE", "/tmp/unreadable")
- assert.Equal(t, "", expandEnvVFS(fs, "${FOO}"))
-}
+ fsys := fs.FS(fstest.MapFS{
+ "tmp": &fstest.MapFile{Mode: fs.ModeDir | 0o777},
+ "tmp/foo": &fstest.MapFile{Data: []byte("foo")},
+ "tmp/unreadable": &fstest.MapFile{Data: []byte("foo"), Mode: 0o000},
+ })
+ fsys = datafs.WrapWdFS(fsys)
-// Maybe extract this into a separate package sometime...
-// writeOnly - represents a filesystem that's writeable, but read operations fail
-func writeOnly(fs afero.Fs) afero.Fs {
- return &woFS{fs}
-}
+ t.Setenv("FOO_FILE", "/tmp/foo")
+ assert.Equal(t, "foo is foo", expandEnvVFS(fsys, "foo is $FOO"))
-type woFS struct {
- afero.Fs
-}
+ t.Setenv("FOO_FILE", "/tmp/missing")
+ assert.Equal(t, "empty", expandEnvVFS(fsys, "${FOO}empty"))
-func (fs woFS) Remove(name string) error {
- return fs.Fs.Remove(name)
+ fsys = writeOnly(fsys)
+ t.Setenv("FOO_FILE", "/tmp/unreadable")
+ assert.Equal(t, "", expandEnvVFS(fsys, "${FOO}"))
}
-func (fs woFS) Rename(oldpath, newpath string) error {
- return fs.Fs.Rename(oldpath, newpath)
+// Maybe extract this into a separate package sometime...
+// writeOnly - represents a filesystem that's writeable, but read operations fail
+func writeOnly(fsys fs.FS) fs.FS {
+ return &woFS{fsys}
}
-func (fs woFS) Mkdir(name string, perm os.FileMode) error {
- return fs.Fs.Mkdir(name, perm)
+type woFS struct {
+ fsys fs.FS
}
-func (fs woFS) OpenFile(name string, flag int, perm os.FileMode) (afero.File, error) {
- f, err := fs.Fs.OpenFile(name, flag, perm)
- if err != nil {
- return writeOnlyFile(f), err
- }
- return writeOnlyFile(f), nil
+func (fsys woFS) Open(name string) (fs.File, error) {
+ f, err := fsys.fsys.Open(name)
+ return writeOnlyFile(f), err
}
-func (fs woFS) ReadDir(_ string) ([]os.FileInfo, error) {
+func (fsys woFS) ReadDir(_ string) ([]fs.DirEntry, error) {
return nil, ErrWriteOnly
}
-func (fs woFS) Stat(_ string) (os.FileInfo, error) {
+func (fsys woFS) Stat(_ string) (fs.FileInfo, error) {
return nil, ErrWriteOnly
}
-func writeOnlyFile(f afero.File) afero.File {
+func writeOnlyFile(f fs.File) fs.File {
+ if f == nil {
+ return nil
+ }
+
return &woFile{f}
}
type woFile struct {
- afero.File
+ fs.File
}
-// Write is disabled and returns ErrWriteOnly
+// Write -
func (f woFile) Write(p []byte) (n int, err error) {
- return f.File.Write(p)
+ return hackpadfs.WriteFile(f.File, p)
}
// Read is disabled and returns ErrWriteOnly