mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
45 lines
1.3 KiB
Go
45 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, err := files.NewOverlayFS(afero.NewIOFS(a), []files.Overlay{{
|
|
Path: ".terraform/modules",
|
|
FS: afero.NewIOFS(b),
|
|
}})
|
|
require.NoError(t, err)
|
|
|
|
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))
|
|
}
|