github.com/alex123012/deckhouse-controller-tools@v0.0.0-20230510090815-d594daf1af8c/pkg/loader/loader_test.go (about) 1 /* 2 Copyright 2022 The Kubernetes Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package loader_test 18 19 import ( 20 "os" 21 22 . "github.com/onsi/ginkgo" 23 . "github.com/onsi/gomega" 24 25 "sigs.k8s.io/controller-tools/pkg/loader" 26 ) 27 28 var _ = Describe("Loader parsing root module", func() { 29 const ( 30 rootPkg = "sigs.k8s.io/controller-tools" 31 pkgPkg = rootPkg + "/pkg" 32 loaderPkg = pkgPkg + "/loader" 33 testmodPkg = loaderPkg + "/testmod" 34 ) 35 36 var indexOfPackage = func(pkgID string, pkgs []*loader.Package) int { 37 for i := range pkgs { 38 if pkgs[i].ID == pkgID { 39 return i 40 } 41 } 42 return -1 43 } 44 45 var assertPkgExists = func(pkgID string, pkgs []*loader.Package) { 46 ExpectWithOffset(1, indexOfPackage(pkgID, pkgs)).Should(BeNumerically(">", -1)) 47 } 48 49 Context("with named packages/modules", func() { 50 51 // we need to change into the directory of ./testmod in order to execute 52 // tests due to the inability to place the replace statement in the 53 // project's root go.mod file (this breaks "go install") 54 var previousWorkingDir string 55 BeforeEach(func() { 56 cwd, err := os.Getwd() 57 Expect(err).ToNot(HaveOccurred()) 58 Expect(cwd).ToNot(BeEmpty()) 59 previousWorkingDir = cwd 60 Expect(os.Chdir("./testmod")).To(Succeed()) 61 }) 62 AfterEach(func() { 63 Expect(os.Chdir(previousWorkingDir)).To(Succeed()) 64 }) 65 66 Context("with roots=[sigs.k8s.io/controller-tools/pkg/loader/testmod/submod1]", func() { 67 It("should load one package", func() { 68 pkgs, err := loader.LoadRoots("sigs.k8s.io/controller-tools/pkg/loader/testmod/submod1") 69 Expect(err).ToNot(HaveOccurred()) 70 Expect(pkgs).To(HaveLen(1)) 71 assertPkgExists(testmodPkg+"/submod1", pkgs) 72 }) 73 }) 74 75 Context("with roots=[sigs.k8s.io/controller-tools/pkg/loader/testmod/...]", func() { 76 It("should load six packages", func() { 77 pkgs, err := loader.LoadRoots("sigs.k8s.io/controller-tools/pkg/loader/testmod/...") 78 Expect(err).ToNot(HaveOccurred()) 79 Expect(pkgs).To(HaveLen(6)) 80 assertPkgExists(testmodPkg, pkgs) 81 assertPkgExists(testmodPkg+"/subdir1", pkgs) 82 assertPkgExists(testmodPkg+"/subdir1/subdir1", pkgs) 83 assertPkgExists(testmodPkg+"/subdir1/subdir2", pkgs) 84 assertPkgExists(testmodPkg+"/submod1", pkgs) 85 assertPkgExists(testmodPkg+"/submod1/subdir1", pkgs) 86 }) 87 }) 88 89 Context("with roots=[sigs.k8s.io/controller-tools/pkg/loader/testmod/..., ./...]", func() { 90 It("should load seven packages", func() { 91 pkgs, err := loader.LoadRoots("sigs.k8s.io/controller-tools/pkg/loader/testmod/...", "./...") 92 Expect(err).ToNot(HaveOccurred()) 93 Expect(pkgs).To(HaveLen(7)) 94 assertPkgExists(testmodPkg, pkgs) 95 assertPkgExists(testmodPkg+"/subdir1", pkgs) 96 assertPkgExists(testmodPkg+"/subdir1/subdir1", pkgs) 97 assertPkgExists(testmodPkg+"/subdir1/subdir2", pkgs) 98 assertPkgExists(testmodPkg+"/subdir1/submod1", pkgs) 99 assertPkgExists(testmodPkg+"/submod1", pkgs) 100 assertPkgExists(testmodPkg+"/submod1/subdir1", pkgs) 101 }) 102 }) 103 }) 104 105 Context("with roots=[../crd/.]", func() { 106 It("should load one package", func() { 107 pkgs, err := loader.LoadRoots("../crd/.") 108 Expect(err).ToNot(HaveOccurred()) 109 Expect(pkgs).To(HaveLen(1)) 110 assertPkgExists(pkgPkg+"/crd", pkgs) 111 }) 112 }) 113 114 Context("with roots=[./]", func() { 115 It("should load one package", func() { 116 pkgs, err := loader.LoadRoots("./") 117 Expect(err).ToNot(HaveOccurred()) 118 Expect(pkgs).To(HaveLen(1)) 119 assertPkgExists(loaderPkg, pkgs) 120 }) 121 }) 122 123 Context("with roots=[../../pkg/loader]", func() { 124 It("should load one package", func() { 125 pkgs, err := loader.LoadRoots("../../pkg/loader") 126 Expect(err).ToNot(HaveOccurred()) 127 Expect(pkgs).To(HaveLen(1)) 128 assertPkgExists(loaderPkg, pkgs) 129 }) 130 }) 131 132 Context("with roots=[../../pkg/loader/../loader/testmod/..., ./testmod/./../testmod//.]", func() { 133 It("should load seven packages", func() { 134 pkgs, err := loader.LoadRoots( 135 "../../pkg/loader/../loader/testmod/...", 136 "./testmod/./../testmod//.") 137 Expect(err).ToNot(HaveOccurred()) 138 Expect(pkgs).To(HaveLen(7)) 139 assertPkgExists(testmodPkg, pkgs) 140 assertPkgExists(testmodPkg+"/subdir1", pkgs) 141 assertPkgExists(testmodPkg+"/subdir1/subdir1", pkgs) 142 assertPkgExists(testmodPkg+"/subdir1/subdir2", pkgs) 143 assertPkgExists(testmodPkg+"/subdir1/submod1", pkgs) 144 assertPkgExists(testmodPkg+"/submod1", pkgs) 145 assertPkgExists(testmodPkg+"/submod1/subdir1", pkgs) 146 }) 147 }) 148 149 Context("with roots=[./testmod/...]", func() { 150 It("should load seven packages", func() { 151 pkgs, err := loader.LoadRoots("./testmod/...") 152 Expect(err).ToNot(HaveOccurred()) 153 Expect(pkgs).To(HaveLen(7)) 154 assertPkgExists(testmodPkg, pkgs) 155 assertPkgExists(testmodPkg+"/subdir1", pkgs) 156 assertPkgExists(testmodPkg+"/subdir1/subdir1", pkgs) 157 assertPkgExists(testmodPkg+"/subdir1/subdir2", pkgs) 158 assertPkgExists(testmodPkg+"/subdir1/submod1", pkgs) 159 assertPkgExists(testmodPkg+"/submod1", pkgs) 160 assertPkgExists(testmodPkg+"/submod1/subdir1", pkgs) 161 }) 162 }) 163 164 Context("with roots=[./testmod/subdir1/submod1/...]", func() { 165 It("should load one package", func() { 166 pkgs, err := loader.LoadRoots("./testmod/subdir1/submod1/...") 167 Expect(err).ToNot(HaveOccurred()) 168 Expect(pkgs).To(HaveLen(1)) 169 assertPkgExists(testmodPkg+"/subdir1/submod1", pkgs) 170 }) 171 }) 172 173 Context("with roots=[./testmod, ./testmod/submod1]", func() { 174 It("should load two packages", func() { 175 pkgs, err := loader.LoadRoots("./testmod", "./testmod/submod1") 176 Expect(err).ToNot(HaveOccurred()) 177 Expect(pkgs).To(HaveLen(2)) 178 assertPkgExists(testmodPkg, pkgs) 179 assertPkgExists(testmodPkg+"/submod1", pkgs) 180 }) 181 }) 182 183 Context("with roots=[./testmod/submod1/subdir1/]", func() { 184 It("should load one package", func() { 185 pkgs, err := loader.LoadRoots("./testmod/submod1/subdir1/") 186 Expect(err).ToNot(HaveOccurred()) 187 Expect(pkgs).To(HaveLen(1)) 188 assertPkgExists(testmodPkg+"/submod1/subdir1", pkgs) 189 }) 190 }) 191 })