68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
package osvfs_test
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
"strings"
|
|
"testing"
|
|
|
|
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/repo"
|
|
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/tspath"
|
|
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/vfs/osvfs"
|
|
"gotest.tools/v3/assert"
|
|
)
|
|
|
|
func TestOS(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
fs := osvfs.FS()
|
|
|
|
t.Run("ReadFile", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
goMod := filepath.Join(repo.RootPath, "go.mod")
|
|
goModPath := tspath.NormalizePath(goMod)
|
|
|
|
expectedRaw, err := os.ReadFile(goMod)
|
|
assert.NilError(t, err)
|
|
expected := string(expectedRaw)
|
|
|
|
contents, ok := fs.ReadFile(goModPath)
|
|
assert.Assert(t, ok)
|
|
assert.Equal(t, contents, expected)
|
|
})
|
|
|
|
t.Run("Realpath", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
home, err := os.UserHomeDir()
|
|
if err != nil {
|
|
t.Skip(err)
|
|
}
|
|
home = tspath.NormalizePath(home)
|
|
|
|
expected := home
|
|
if runtime.GOOS == "windows" {
|
|
// Windows drive letters can be lowercase, but realpath will always return uppercase.
|
|
expected = strings.ToUpper(expected[:1]) + expected[1:]
|
|
}
|
|
realpath := fs.Realpath(home)
|
|
assert.Equal(t, realpath, expected)
|
|
})
|
|
|
|
t.Run("UseCaseSensitiveFileNames", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
// Just check that it works.
|
|
fs.UseCaseSensitiveFileNames()
|
|
|
|
switch runtime.GOOS {
|
|
case "windows":
|
|
assert.Assert(t, !fs.UseCaseSensitiveFileNames())
|
|
case "linux":
|
|
assert.Assert(t, fs.UseCaseSensitiveFileNames())
|
|
}
|
|
})
|
|
}
|