Files
coder/coderd/files/overlay_test.go
2025-05-14 10:26:47 -06:00

44 lines
1.3 KiB
Go

package files_test
import (
"io/fs"
"testing"
"github.com/spf13/afero"
"github.com/stretchr/testify/require"
"github.com/coder/coder/v2/coderd/files"
)
func TestOverlayFS(t *testing.T) {
t.Parallel()
a := afero.NewMemMapFs()
afero.WriteFile(a, "main.tf", []byte("terraform {}"), 0o644)
afero.WriteFile(a, ".terraform/modules/example_module/main.tf", []byte("inaccessible"), 0o644)
afero.WriteFile(a, ".terraform/modules/other_module/main.tf", []byte("inaccessible"), 0o644)
b := afero.NewMemMapFs()
afero.WriteFile(b, ".terraform/modules/modules.json", []byte("{}"), 0o644)
afero.WriteFile(b, ".terraform/modules/example_module/main.tf", []byte("terraform {}"), 0o644)
it := files.NewOverlayFS(afero.NewIOFS(a), []files.Overlay{{
Path: ".terraform/modules",
FS: afero.NewIOFS(b),
}})
content, err := fs.ReadFile(it, "main.tf")
require.NoError(t, err)
require.Equal(t, "terraform {}", string(content))
_, err = fs.ReadFile(it, ".terraform/modules/other_module/main.tf")
require.Error(t, err)
content, err = fs.ReadFile(it, ".terraform/modules/modules.json")
require.NoError(t, err)
require.Equal(t, "{}", string(content))
content, err = fs.ReadFile(it, ".terraform/modules/example_module/main.tf")
require.NoError(t, err)
require.Equal(t, "terraform {}", string(content))
}