Files
wazero/internal/gojs/config/config_test.go
Crypt Keeper 8464474e21 gojs: adds support for uid and gid (#1245)
This adds `gojs.WithOSUser` which passes through current user IDs so
that GOOS=js compiled wasm can read them. This also adds support for
reading back the uid and gid on files. In summary, this passes
`os.TestChown` except on windows where it will not work due to lack of
support.

Signed-off-by: Adrian Cole <adrian@tetrate.io>
2023-03-16 11:07:27 +08:00

54 lines
1.1 KiB
Go

package config
import (
"runtime"
"strings"
"syscall"
"testing"
"github.com/tetratelabs/wazero/internal/testing/require"
)
func TestConfig_Init(t *testing.T) {
t.Parallel()
t.Run("User", func(t *testing.T) {
c := NewConfig()
// values should be 0 which is root
require.Equal(t, 0, c.Uid)
require.Equal(t, 0, c.Gid)
require.Equal(t, 0, c.Euid)
require.Equal(t, []int{0}, c.Groups)
require.False(t, c.OsUser)
if runtime.GOOS != "windows" {
c.OsUser = true
require.NoError(t, c.Init())
require.Equal(t, syscall.Getuid(), c.Uid)
require.Equal(t, syscall.Getgid(), c.Gid)
require.Equal(t, syscall.Geteuid(), c.Euid)
groups, err := syscall.Getgroups()
require.NoError(t, err)
require.Equal(t, groups, c.Groups)
}
})
t.Run("Workdir", func(t *testing.T) {
c := NewConfig()
require.Equal(t, "/", c.Workdir)
require.False(t, c.OsWorkdir)
c.OsWorkdir = true
require.NoError(t, c.Init())
actual := c.Workdir
// Check c:\ or d:\ aren't retained.
require.Equal(t, -1, strings.IndexByte(actual, '\\'))
require.Equal(t, -1, strings.IndexByte(actual, ':'))
})
}