github.com/hairyhenderson/gomplate/v4@v4.0.0-pre-2.0.20240520121557-362f058f0c93/template_unix_test.go (about)

     1  //go:build !windows
     2  
     3  package gomplate
     4  
     5  import (
     6  	"context"
     7  	"testing"
     8  
     9  	"github.com/hack-pad/hackpadfs"
    10  	"github.com/hack-pad/hackpadfs/mem"
    11  	"github.com/hairyhenderson/gomplate/v4/internal/config"
    12  	"github.com/hairyhenderson/gomplate/v4/internal/datafs"
    13  
    14  	"github.com/stretchr/testify/assert"
    15  	"github.com/stretchr/testify/require"
    16  )
    17  
    18  func TestWalkDir_UNIX(t *testing.T) {
    19  	memfs, _ := mem.NewFS()
    20  	fsys := datafs.WrapWdFS(memfs)
    21  
    22  	ctx := datafs.ContextWithFSProvider(context.Background(), datafs.WrappedFSProvider(fsys, "file"))
    23  
    24  	cfg := &config.Config{}
    25  
    26  	_, err := walkDir(ctx, cfg, "/indir", simpleNamer("/outdir"), nil, nil, 0, false)
    27  	require.Error(t, err)
    28  
    29  	err = hackpadfs.MkdirAll(fsys, "/indir/one", 0o777)
    30  	require.NoError(t, err)
    31  	err = hackpadfs.MkdirAll(fsys, "/indir/two", 0o777)
    32  	require.NoError(t, err)
    33  	err = hackpadfs.WriteFullFile(fsys, "/indir/one/foo", []byte("foo"), 0o644)
    34  	require.NoError(t, err)
    35  	err = hackpadfs.WriteFullFile(fsys, "/indir/one/bar", []byte("bar"), 0o644)
    36  	require.NoError(t, err)
    37  	err = hackpadfs.WriteFullFile(fsys, "/indir/two/baz", []byte("baz"), 0o644)
    38  	require.NoError(t, err)
    39  
    40  	templates, err := walkDir(ctx, cfg, "/indir", simpleNamer("/outdir"), []string{"*/two"}, []string{}, 0, false)
    41  	require.NoError(t, err)
    42  
    43  	expected := []Template{
    44  		{
    45  			Name: "/indir/one/bar",
    46  			Text: "bar",
    47  		},
    48  		{
    49  			Name: "/indir/one/foo",
    50  			Text: "foo",
    51  		},
    52  	}
    53  	assert.Len(t, templates, 2)
    54  	for i, tmpl := range templates {
    55  		assert.Equal(t, expected[i].Name, tmpl.Name)
    56  		assert.Equal(t, expected[i].Text, tmpl.Text)
    57  	}
    58  }