Files
buildx/util/osutil/path_test.go

82 lines
1.8 KiB
Go

package osutil
import (
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/require"
)
func TestEvaluateToExistingPath(t *testing.T) {
tempDir, err := GetLongPathName(t.TempDir())
require.NoError(t, err)
existingFile := filepath.Join(tempDir, "existing_file")
require.NoError(t, os.WriteFile(existingFile, []byte("test"), 0644))
existingDir := filepath.Join(tempDir, "existing_dir")
require.NoError(t, os.Mkdir(existingDir, 0755))
symlinkToFile := filepath.Join(tempDir, "symlink_to_file")
require.NoError(t, os.Symlink(existingFile, symlinkToFile))
symlinkToDir := filepath.Join(tempDir, "symlink_to_dir")
require.NoError(t, os.Symlink(existingDir, symlinkToDir))
nonexistentPath := filepath.Join(tempDir, "nonexistent", "path", "file.txt")
tests := []struct {
name string
input string
expected string
}{
{
name: "Existing file",
input: existingFile,
expected: existingFile,
},
{
name: "Existing directory",
input: existingDir,
expected: existingDir,
},
{
name: "Symlink to file",
input: symlinkToFile,
expected: existingFile,
},
{
name: "Symlink to directory",
input: symlinkToDir,
expected: existingDir,
},
{
name: "Non-existent path",
input: nonexistentPath,
expected: tempDir,
},
{
name: "Non-existent intermediate path",
input: filepath.Join(tempDir, "nonexistent", "file.txt"),
expected: tempDir,
},
{
name: "Root path",
input: "/",
expected: func() string {
root, _ := filepath.Abs("/")
return root
}(),
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result, _, err := EvaluateToExistingPath(tt.input)
require.NoError(t, err)
require.Equal(t, tt.expected, result)
})
}
}