fix chartify with non-chart dir (#1105)

* fix chartify with non-chart dir

Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
yxxhero
2023-10-31 13:45:10 +08:00
committed by GitHub
parent 9ab8cf80b4
commit 54da9dab87
9 changed files with 123 additions and 61 deletions
+3
View File
@@ -125,6 +125,9 @@ func (filesystem *FileSystem) fileExistsAtDefault(path string) bool {
func (filesystem *FileSystem) fileExistsDefault(path string) (bool, error) {
path, err := filesystem.resolveSymlinks(path)
if err != nil {
if os.IsNotExist(err) {
return false, nil
}
return false, err
}
_, err = filesystem.Stat(path)
+49 -61
View File
@@ -1,12 +1,13 @@
package filesystem
import (
"errors"
"io/fs"
"os"
"path/filepath"
"strings"
"testing"
"github.com/stretchr/testify/require"
)
func NewTestFileSystem() FileSystem {
@@ -18,7 +19,7 @@ func NewTestFileSystem() FileSystem {
if strings.HasSuffix(s, "existing_dir") {
return fileStat{mode: fs.ModeDir}, nil
}
return nil, errors.New("Error")
return nil, os.ErrExist
},
Getwd: func() (string, error) {
return "/test/dir", nil
@@ -27,6 +28,9 @@ func NewTestFileSystem() FileSystem {
if s == "/test/dir" {
return "/real/dir", nil
} else {
if strings.Contains(s, "missing") {
return "", os.ErrExist
}
return s, nil
}
},
@@ -36,79 +40,68 @@ func NewTestFileSystem() FileSystem {
func TestFs_resolveSymlinks(t *testing.T) {
ffs := NewTestFileSystem()
path, _ := ffs.resolveSymlinks("../existing_file.txt")
if path != "/real/existing_file.txt" {
t.Errorf("Expected absolute path %s but got %s", "/real/existing_file.txt", path)
}
path, _ = ffs.resolveSymlinks("./existing_file.txt")
if path != "./existing_file.txt" {
t.Errorf("Expected local path %s but got %s", "./existing_file.txt", path)
}
path, _ = ffs.resolveSymlinks("existing_file.txt")
if path != "existing_file.txt" {
t.Errorf("Expected local path %s but got %s", "existing_file.txt", path)
}
path, _ = ffs.resolveSymlinks("/a/b/c/existing_file.txt")
if path != "/a/b/c/existing_file.txt" {
t.Errorf("Expected absolute path %s but got %s", "/a/b/c/existing_file.txt", path)
}
path, err := ffs.resolveSymlinks("../existing_file.txt")
require.NoErrorf(t, err, "Expected no error but got %v", err)
require.Equalf(t, "/real/existing_file.txt", path, "Expected absolute path %s but got %s", "/real/existing_file.txt", path)
path, err = ffs.resolveSymlinks("../missing_file.txt")
require.ErrorIsf(t, err, os.ErrExist, "Expected error %v but got %v", os.ErrExist, err)
require.Equalf(t, "", path, "Expected empty path but got %s", path)
path, err = ffs.resolveSymlinks("./existing_file.txt")
require.NoErrorf(t, err, "Expected no error but got %v", err)
require.Equalf(t, "./existing_file.txt", path, "Expected local path %s but got %s", "./existing_file.txt", path)
path, err = ffs.resolveSymlinks("existing_file.txt")
require.NoErrorf(t, err, "Expected no error but got %v", err)
require.Equalf(t, "existing_file.txt", path, "Expected local path %s but got %s", "existing_file.txt", path)
path, err = ffs.resolveSymlinks("/a/b/c/existing_file.txt")
require.NoErrorf(t, err, "Expected no error but got %v", err)
require.Equalf(t, "/a/b/c/existing_file.txt", path, "Expected absolute path %s but got %s", "/a/b/c/existing_file.txt", path)
}
func TestFs_fileExistsDefault(t *testing.T) {
ffs := NewTestFileSystem()
exists, _ := ffs.FileExists("existing_file.txt")
if !exists {
t.Errorf("Expected file %s, not found", "existing_file.txt")
}
exists, err := ffs.FileExists("existing_file.txt")
require.NoErrorf(t, err, "Expected no error but got %v", err)
require.Truef(t, exists, "Expected file %s, not found", "existing_file.txt")
exists, _ = ffs.FileExists("missing_file.txt")
if exists {
t.Errorf("Not expected file %s, found", "missing_file.txt")
}
exists, err = ffs.FileExists("missing_file.txt")
require.Falsef(t, exists, "Not expected file %s, found", "missing_file.txt")
require.ErrorIsf(t, err, os.ErrExist, "Expected error %v but got %v", os.ErrExist, err)
dfs := DefaultFileSystem()
exists, _ = dfs.FileExists("-")
if !exists {
t.Errorf("Not expected file %s, not found", "-")
}
exists, err = dfs.FileExists("-")
require.NoErrorf(t, err, "Expected no error but got %v", err)
require.Truef(t, exists, "Expected file %s, not found", "-")
}
func TestFs_fileExistsAtDefault(t *testing.T) {
ffs := NewTestFileSystem()
exists := ffs.FileExistsAt("existing_file.txt")
if !exists {
t.Errorf("Expected file %s, not found", "existing_file.txt")
}
require.Truef(t, exists, "Expected file %s, not found", "existing_file.txt")
exists = ffs.FileExistsAt("missing_file.txt")
if exists {
t.Errorf("Not expected file %s, found", "missing_file.txt")
}
require.Falsef(t, exists, "Not expected file %s, found", "missing_file.txt")
exists = ffs.FileExistsAt("existing_dir")
if exists {
t.Errorf("Not expected file %s, found", "existing_dir")
}
require.Falsef(t, exists, "Not expected file %s, found", "existing_dir")
dfs := DefaultFileSystem()
exists = dfs.FileExistsAt("-")
if !exists {
t.Errorf("Not expected file %s, not found", "-")
}
require.Truef(t, exists, "Expected file %s, not found", "-")
}
func TestFs_directoryExistsDefault(t *testing.T) {
ffs := NewTestFileSystem()
exists := ffs.DirectoryExistsAt("existing_dir")
if !exists {
t.Errorf("Expected file %s, not found", "existing_dir")
}
require.Truef(t, exists, "Expected file %s, not found", "existing_dir")
exists = ffs.DirectoryExistsAt("missing_dir")
if exists {
t.Errorf("Not expected file %s, found", "existing_dir")
}
require.Falsef(t, exists, "Not expected file %s, found", "missing_dir")
}
func TestFsTeadFile(t *testing.T) {
@@ -139,10 +132,11 @@ func TestFsTeadFile(t *testing.T) {
if err != nil {
t.Errorf("create file %s error: %v", yamlPath, err)
}
require.NoErrorf(t, err, "create file %s error: %v", yamlPath, err)
_, err = tmpfile.Write(c.content)
if err != nil {
t.Errorf(" write to file %s error: %v", yamlPath, err)
}
require.NoErrorf(t, err, "write to file %s error: %v", yamlPath, err)
readPath := yamlPath
if c.path == "-" {
readPath = c.path
@@ -150,18 +144,12 @@ func TestFsTeadFile(t *testing.T) {
defer func() { os.Stdin = oldOsStdin }()
os.Stdin = tmpfile
}
if _, err = tmpfile.Seek(0, 0); err != nil {
t.Errorf("file %s seek error: %v", yamlPath, err)
}
_, err = tmpfile.Seek(0, 0)
require.NoErrorf(t, err, "file %s seek error: %v", yamlPath, err)
want, err := dfs.readFile(readPath)
if err != nil {
t.Errorf("read file %s error: %v", readPath, err)
} else {
if string(c.content) != string(want) {
t.Errorf("nexpected error: unexpected=%s, got=%v", string(c.content), string(want))
}
}
require.NoErrorf(t, err, "read file %s error: %v", readPath, err)
require.Equalf(t, string(c.content), string(want), "unexpected error: unexpected=%s, got=%v", string(c.content), string(want))
})
}
}