summaryrefslogtreecommitdiff
path: root/file/file_test.go
blob: 1c185951812bb145f0f599da3e27240b96299ca1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package file

import (
	"io/fs"
	"testing"
	"testing/fstest"

	"github.com/hairyhenderson/gomplate/v4/internal/datafs"
	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"
)

func TestRead(t *testing.T) {
	oldFS := fsys
	defer func() { fsys = oldFS }()
	fsys = datafs.WrapWdFS(fstest.MapFS{
		"tmp":     &fstest.MapFile{Mode: fs.ModeDir | 0o777},
		"tmp/foo": &fstest.MapFile{Data: []byte("foo")},
	})

	actual, err := Read("/tmp/foo")
	require.NoError(t, err)
	assert.Equal(t, "foo", actual)

	_, err = Read("/tmp/bar")
	assert.Error(t, err)
}

func TestReadDir(t *testing.T) {
	oldFS := fsys
	defer func() { fsys = oldFS }()
	fsys = datafs.WrapWdFS(fstest.MapFS{
		"tmp":          &fstest.MapFile{Mode: fs.ModeDir | 0o777},
		"tmp/foo":      &fstest.MapFile{Data: []byte("foo")},
		"tmp/bar":      &fstest.MapFile{Data: []byte("bar")},
		"tmp/baz":      &fstest.MapFile{Data: []byte("baz")},
		"tmp/qux":      &fstest.MapFile{Mode: fs.ModeDir | 0o777},
		"tmp/qux/quux": &fstest.MapFile{Data: []byte("quux")},
	})

	actual, err := ReadDir("/tmp")
	require.NoError(t, err)
	assert.Equal(t, []string{"bar", "baz", "foo", "qux"}, actual)

	_, err = ReadDir("/tmp/foo")
	assert.Error(t, err)
}