supabase-cli/internal/utils/deno_test.go

99 lines
2.6 KiB
Go

package utils
import (
"os"
"path/filepath"
"testing"
"github.com/spf13/afero"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestResolveImports(t *testing.T) {
t.Run("resolves relative directory", func(t *testing.T) {
importMap := []byte(`{
"imports": {
"abs/": "/tmp/",
"root": "../../common",
"parent": "../tests",
"child": "child/",
"missing": "../missing"
}
}`)
// Setup in-memory fs
fsys := afero.NewMemMapFs()
cwd, err := os.Getwd()
require.NoError(t, err)
jsonPath := filepath.Join(cwd, FallbackImportMapPath)
require.NoError(t, afero.WriteFile(fsys, jsonPath, importMap, 0644))
require.NoError(t, fsys.Mkdir(filepath.Join(cwd, "common"), 0755))
require.NoError(t, fsys.Mkdir(filepath.Join(cwd, DbTestsDir), 0755))
require.NoError(t, fsys.Mkdir(filepath.Join(cwd, FunctionsDir, "child"), 0755))
// Run test
resolved, err := NewImportMap(jsonPath, fsys)
// Check error
assert.NoError(t, err)
assert.Equal(t, "/tmp/", resolved.Imports["abs/"])
assert.Equal(t, cwd+"/common", resolved.Imports["root"])
assert.Equal(t, cwd+"/supabase/tests", resolved.Imports["parent"])
assert.Equal(t, cwd+"/supabase/functions/child/", resolved.Imports["child"])
assert.Equal(t, "../missing", resolved.Imports["missing"])
})
t.Run("resolves parent scopes", func(t *testing.T) {
importMap := []byte(`{
"scopes": {
"my-scope": {
"my-mod": "https://deno.land"
}
}
}`)
// Setup in-memory fs
fsys := afero.NewMemMapFs()
require.NoError(t, afero.WriteFile(fsys, FallbackImportMapPath, importMap, 0644))
// Run test
resolved, err := NewImportMap(FallbackImportMapPath, fsys)
// Check error
assert.NoError(t, err)
assert.Equal(t, "https://deno.land", resolved.Scopes["my-scope"]["my-mod"])
})
}
func TestBindModules(t *testing.T) {
t.Run("binds docker imports", func(t *testing.T) {
cwd, err := os.Getwd()
require.NoError(t, err)
importMap := ImportMap{
Imports: map[string]string{
"abs/": "/tmp/",
"root": cwd + "/common",
"parent": cwd + "/supabase/tests",
"child": cwd + "/supabase/functions/child/",
},
}
// Run test
mods := importMap.BindHostModules()
// Check error
assert.ElementsMatch(t, mods, []string{
"/tmp/:/tmp/:ro",
cwd + "/common:" + cwd + "/common:ro",
cwd + "/supabase/tests:" + cwd + "/supabase/tests:ro",
})
})
t.Run("binds docker scopes", func(t *testing.T) {
importMap := ImportMap{
Scopes: map[string]map[string]string{
"my-scope": {
"my-mod": "https://deno.land",
},
},
}
// Run test
mods := importMap.BindHostModules()
// Check error
assert.Empty(t, mods)
})
}