github.com/tetratelabs/wazero@v1.2.1/internal/gojs/config/config_test.go (about)

     1  package config
     2  
     3  import (
     4  	"runtime"
     5  	"strings"
     6  	"syscall"
     7  	"testing"
     8  
     9  	"github.com/tetratelabs/wazero/internal/testing/require"
    10  )
    11  
    12  func TestConfig_Init(t *testing.T) {
    13  	t.Parallel()
    14  
    15  	t.Run("User", func(t *testing.T) {
    16  		c := NewConfig()
    17  
    18  		// values should be 0 which is root
    19  		require.Equal(t, 0, c.Uid)
    20  		require.Equal(t, 0, c.Gid)
    21  		require.Equal(t, 0, c.Euid)
    22  		require.Equal(t, []int{0}, c.Groups)
    23  		require.False(t, c.OsUser)
    24  
    25  		if runtime.GOOS != "windows" {
    26  			c.OsUser = true
    27  			require.NoError(t, c.Init())
    28  
    29  			require.Equal(t, syscall.Getuid(), c.Uid)
    30  			require.Equal(t, syscall.Getgid(), c.Gid)
    31  			require.Equal(t, syscall.Geteuid(), c.Euid)
    32  
    33  			groups, err := syscall.Getgroups()
    34  			require.NoError(t, err)
    35  			require.Equal(t, groups, c.Groups)
    36  		}
    37  	})
    38  
    39  	t.Run("Workdir", func(t *testing.T) {
    40  		c := NewConfig()
    41  		require.Equal(t, "/", c.Workdir)
    42  		require.False(t, c.OsWorkdir)
    43  
    44  		c.OsWorkdir = true
    45  
    46  		require.NoError(t, c.Init())
    47  		actual := c.Workdir
    48  
    49  		// Check c:\ or d:\ aren't retained.
    50  		require.Equal(t, -1, strings.IndexByte(actual, '\\'))
    51  		require.Equal(t, -1, strings.IndexByte(actual, ':'))
    52  	})
    53  }