Skip to content

Commit 59031c1

Browse files
committed
Updated loader test to remove variables and logic; makes test easier to validated and reason about
1 parent 560e294 commit 59031c1

File tree

1 file changed

+40
-46
lines changed

1 file changed

+40
-46
lines changed

loader_test.go

Lines changed: 40 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,22 @@ import (
2424
"k8s.io/kubectl/pkg/kinflate/util/fs"
2525
)
2626

27-
var rootDir = "/home/seans/project"
28-
var rootFile = "file.yaml"
29-
var rootFilePath = filepath.Join(rootDir, rootFile)
30-
var rootFileContent = []byte("This is a yaml file")
31-
32-
var subDirectory = "subdir"
33-
var subDirectoryPath = filepath.Join(subDirectory, rootFile)
34-
var subDirectoryContent = []byte("Subdirectory file content")
35-
36-
var anotherRootDir = "/home/seans/project2"
37-
var anotherFilePath = filepath.Join(anotherRootDir, rootFile)
38-
var anotherFileContent = []byte("This is another yaml file")
27+
func initializeRootLoader(fakefs fs.FileSystem) Loader {
28+
var schemes []SchemeLoader
29+
schemes = append(schemes, NewFileLoader(fakefs))
30+
rootLoader := Init(schemes)
31+
return rootLoader
32+
}
3933

4034
func TestLoader_Root(t *testing.T) {
4135

42-
rootLoader := initializeRootLoader()
36+
// Initialize the fake file system and the root loader.
37+
fakefs := fs.MakeFakeFS()
38+
fakefs.WriteFile("/home/seans/project/file.yaml", []byte("Unused"))
39+
fakefs.WriteFile("/home/seans/project/subdir/file.yaml", []byte("Unused"))
40+
fakefs.WriteFile("/home/seans/project2/file.yaml", []byte("Unused"))
41+
rootLoader := initializeRootLoader(fakefs)
42+
4343
_, err := rootLoader.New("")
4444
if err == nil {
4545
t.Fatalf("Expected error for empty root location not returned")
@@ -49,30 +49,31 @@ func TestLoader_Root(t *testing.T) {
4949
t.Fatalf("Expected error for unknown scheme not returned")
5050
}
5151

52-
loader, err := rootLoader.New(rootFilePath)
52+
loader, err := rootLoader.New("/home/seans/project/file.yaml")
5353
if err != nil {
5454
t.Fatalf("Unexpected in New(): %v\n", err)
5555
}
56-
if rootDir != loader.Root() {
56+
if "/home/seans/project" != loader.Root() {
5757
t.Fatalf("Incorrect Loader Root: %s\n", loader.Root())
5858
}
5959

60-
subLoader, err := loader.New(subDirectoryPath)
60+
subLoader, err := loader.New("subdir/file.yaml")
6161
if err != nil {
6262
t.Fatalf("Unexpected in New(): %v\n", err)
6363
}
64-
if filepath.Join(rootDir, subDirectory) != subLoader.Root() {
64+
if "/home/seans/project/subdir" != subLoader.Root() {
6565
t.Fatalf("Incorrect Loader Root: %s\n", subLoader.Root())
6666
}
6767

68-
anotherLoader, err := loader.New(anotherFilePath)
68+
anotherLoader, err := loader.New("/home/seans/project2/file.yaml")
6969
if err != nil {
7070
t.Fatalf("Unexpected in New(): %v\n", err)
7171
}
72-
if anotherRootDir != anotherLoader.Root() {
72+
if "/home/seans/project2" != anotherLoader.Root() {
7373
t.Fatalf("Incorrect Loader Root: %s\n", anotherLoader.Root())
7474
}
7575

76+
// Current directory should be expanded to a full absolute file path.
7677
currentDirLoader, err := loader.New(".")
7778
if err != nil {
7879
t.Fatalf("Unexpected in New(): %v\n", err)
@@ -83,47 +84,40 @@ func TestLoader_Root(t *testing.T) {
8384
}
8485

8586
func TestLoader_Load(t *testing.T) {
86-
rootLoader := initializeRootLoader()
87-
loader, err := rootLoader.New(rootFilePath)
87+
88+
// Initialize the fake file system and the root loader.
89+
fakefs := fs.MakeFakeFS()
90+
fakefs.WriteFile("/home/seans/project/file.yaml", []byte("This is a yaml file"))
91+
fakefs.WriteFile("/home/seans/project/subdir/file.yaml", []byte("Subdirectory file content"))
92+
fakefs.WriteFile("/home/seans/project2/file.yaml", []byte("This is another yaml file"))
93+
rootLoader := initializeRootLoader(fakefs)
94+
95+
loader, err := rootLoader.New("/home/seans/project/file.yaml")
8896
if err != nil {
8997
t.Fatalf("Unexpected in New(): %v\n", err)
9098
}
91-
fileBytes, err := loader.Load(rootFilePath)
99+
fileBytes, err := loader.Load("file.yaml") // Load relative to root location
92100
if err != nil {
93101
t.Fatalf("Unexpected error in Load(): %v", err)
94102
}
95-
if !reflect.DeepEqual(rootFileContent, fileBytes) {
96-
t.Fatalf("Load failed. Expected %s, but got %s", rootFileContent, fileBytes)
103+
if !reflect.DeepEqual([]byte("This is a yaml file"), fileBytes) {
104+
t.Fatalf("Load failed. Expected %s, but got %s", "This is a yaml file", fileBytes)
97105
}
98-
fileBytes, err = loader.Load(subDirectoryPath)
106+
107+
fileBytes, err = loader.Load("subdir/file.yaml")
99108
if err != nil {
100109
t.Fatalf("Unexpected error in Load(): %v", err)
101110
}
102-
if !reflect.DeepEqual(subDirectoryContent, fileBytes) {
103-
t.Fatalf("Load failed. Expected %s, but got %s", subDirectoryContent, fileBytes)
111+
if !reflect.DeepEqual([]byte("Subdirectory file content"), fileBytes) {
112+
t.Fatalf("Load failed. Expected %s, but got %s", "Subdirectory file content", fileBytes)
104113
}
105-
fileBytes, err = loader.Load(anotherFilePath)
114+
115+
fileBytes, err = loader.Load("/home/seans/project2/file.yaml")
106116
if err != nil {
107117
t.Fatalf("Unexpected error in Load(): %v", err)
108118
}
109-
if !reflect.DeepEqual(anotherFileContent, fileBytes) {
110-
t.Fatalf("Load failed. Expected %s, but got %s", anotherFileContent, fileBytes)
119+
if !reflect.DeepEqual([]byte("This is another yaml file"), fileBytes) {
120+
t.Fatalf("Load failed. Expected %s, but got %s", "This is another yaml file", fileBytes)
111121
}
112122

113123
}
114-
115-
func initializeRootLoader() Loader {
116-
fs := initializeFakeFilesystem()
117-
var schemes []SchemeLoader
118-
schemes = append(schemes, NewFileLoader(fs))
119-
rootLoader := Init(schemes)
120-
return rootLoader
121-
}
122-
123-
func initializeFakeFilesystem() fs.FileSystem {
124-
fakefs := fs.MakeFakeFS()
125-
fakefs.WriteFile(rootFilePath, rootFileContent)
126-
fakefs.WriteFile(filepath.Join(rootDir, subDirectoryPath), subDirectoryContent)
127-
fakefs.WriteFile(anotherFilePath, anotherFileContent)
128-
return fakefs
129-
}

0 commit comments

Comments
 (0)