Hide the BinPathFinder in our internal package
This commit is contained in:
		
							parent
							
								
									58961be445
								
							
						
					
					
						commit
						40566a76e1
					
				|  | @ -10,6 +10,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/onsi/gomega/gbytes" | ||||
| 	"github.com/onsi/gomega/gexec" | ||||
| 	"k8s.io/kubectl/pkg/framework/test/internal" | ||||
| ) | ||||
| 
 | ||||
| // APIServer knows how to run a kubernetes apiserver.
 | ||||
|  | @ -19,9 +20,9 @@ type APIServer struct { | |||
| 	Address *url.URL | ||||
| 
 | ||||
| 	// Path is the path to the apiserver binary. If this is left as the empty
 | ||||
| 	// string, we will use DefaultBinPathFinder to attempt to locate a binary, by
 | ||||
| 	// checking for the TEST_ASSET_KUBE_APISERVER environment variable, and the
 | ||||
| 	// default test assets directory.
 | ||||
| 	// string, we will attempt to locate a binary, by checking for the
 | ||||
| 	// TEST_ASSET_KUBE_APISERVER environment variable, and the default test
 | ||||
| 	// assets directory.
 | ||||
| 	Path string | ||||
| 
 | ||||
| 	// ProcessStarter is a way to hook into how a the APIServer process is started. By default `gexec.Start(...)` is
 | ||||
|  | @ -112,7 +113,7 @@ func (s *APIServer) Start() error { | |||
| 
 | ||||
| func (s *APIServer) ensureInitialized() error { | ||||
| 	if s.Path == "" { | ||||
| 		s.Path = DefaultBinPathFinder("kube-apiserver") | ||||
| 		s.Path = internal.BinPathFinder("kube-apiserver") | ||||
| 	} | ||||
| 	if s.Address == nil { | ||||
| 		am := &DefaultAddressManager{} | ||||
|  |  | |||
|  | @ -10,6 +10,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/onsi/gomega/gbytes" | ||||
| 	"github.com/onsi/gomega/gexec" | ||||
| 	"k8s.io/kubectl/pkg/framework/test/internal" | ||||
| ) | ||||
| 
 | ||||
| // Etcd knows how to run an etcd server.
 | ||||
|  | @ -86,7 +87,7 @@ func (e *Etcd) Start() error { | |||
| 
 | ||||
| func (e *Etcd) ensureInitialized() error { | ||||
| 	if e.Path == "" { | ||||
| 		e.Path = DefaultBinPathFinder("etcd") | ||||
| 		e.Path = internal.BinPathFinder("etcd") | ||||
| 	} | ||||
| 	if e.Address == nil { | ||||
| 		am := &DefaultAddressManager{} | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| package test | ||||
| package internal | ||||
| 
 | ||||
| import ( | ||||
| 	"os" | ||||
|  | @ -15,19 +15,12 @@ func init() { | |||
| 	if !ok { | ||||
| 		panic("Could not determine the path of the BinPathFinder") | ||||
| 	} | ||||
| 	assetsPath = filepath.Join(filepath.Dir(thisFile), "assets", "bin") | ||||
| 	assetsPath = filepath.Join(filepath.Dir(thisFile), "..", "assets", "bin") | ||||
| } | ||||
| 
 | ||||
| // BinPathFinder is the signature of a function translating a symbolic name of a binary to
 | ||||
| // a resolvable path to the binary in question
 | ||||
| type BinPathFinder func(symbolicName string) (binPath string) | ||||
| 
 | ||||
| //go:generate counterfeiter . BinPathFinder
 | ||||
| 
 | ||||
| // DefaultBinPathFinder is an implementation of BinPathFinder which checks the an environment
 | ||||
| // variable, derived from the symbolic name, and falls back to a default assets location when
 | ||||
| // this variable is not set
 | ||||
| func DefaultBinPathFinder(symbolicName string) (binPath string) { | ||||
| // BinPathFinder checks the an environment variable, derived from the symbolic name,
 | ||||
| // and falls back to a default assets location when this variable is not set
 | ||||
| func BinPathFinder(symbolicName string) (binPath string) { | ||||
| 	punctuationPattern := regexp.MustCompile("[^A-Z0-9]+") | ||||
| 	sanitizedName := punctuationPattern.ReplaceAllString(strings.ToUpper(symbolicName), "_") | ||||
| 	leadingNumberPattern := regexp.MustCompile("^[0-9]+") | ||||
|  | @ -1,4 +1,4 @@ | |||
| package test | ||||
| package internal | ||||
| 
 | ||||
| import ( | ||||
| 	"os" | ||||
|  | @ -7,7 +7,7 @@ import ( | |||
| 	. "github.com/onsi/gomega" | ||||
| ) | ||||
| 
 | ||||
| var _ = Describe("DefaultBinPathFinder", func() { | ||||
| var _ = Describe("BinPathFinder", func() { | ||||
| 	Context("when relying on the default assets path", func() { | ||||
| 		var ( | ||||
| 			previousAssetsPath string | ||||
|  | @ -20,7 +20,7 @@ var _ = Describe("DefaultBinPathFinder", func() { | |||
| 			assetsPath = previousAssetsPath | ||||
| 		}) | ||||
| 		It("returns the default path when no env var is configured", func() { | ||||
| 			binPath := DefaultBinPathFinder("some_bin") | ||||
| 			binPath := BinPathFinder("some_bin") | ||||
| 			Expect(binPath).To(Equal("/some/path/assets/bin/some_bin")) | ||||
| 		}) | ||||
| 	}) | ||||
|  | @ -46,20 +46,20 @@ var _ = Describe("DefaultBinPathFinder", func() { | |||
| 			} | ||||
| 		}) | ||||
| 		It("returns the path from the env", func() { | ||||
| 			binPath := DefaultBinPathFinder("another_symbolic_name") | ||||
| 			binPath := BinPathFinder("another_symbolic_name") | ||||
| 			Expect(binPath).To(Equal("/path/to/some_bin.exe")) | ||||
| 		}) | ||||
| 
 | ||||
| 		It("sanitizes the environment variable name", func() { | ||||
| 			By("cleaning all non-underscore punctuation") | ||||
| 			binPath := DefaultBinPathFinder("another-symbolic name") | ||||
| 			binPath := BinPathFinder("another-symbolic name") | ||||
| 			Expect(binPath).To(Equal("/path/to/some_bin.exe")) | ||||
| 			binPath = DefaultBinPathFinder("another+symbolic\\name") | ||||
| 			binPath = BinPathFinder("another+symbolic\\name") | ||||
| 			Expect(binPath).To(Equal("/path/to/some_bin.exe")) | ||||
| 			binPath = DefaultBinPathFinder("another=symbolic.name") | ||||
| 			binPath = BinPathFinder("another=symbolic.name") | ||||
| 			Expect(binPath).To(Equal("/path/to/some_bin.exe")) | ||||
| 			By("removing numbers from the beginning of the name") | ||||
| 			binPath = DefaultBinPathFinder("12another_symbolic_name") | ||||
| 			binPath = BinPathFinder("12another_symbolic_name") | ||||
| 			Expect(binPath).To(Equal("/path/to/some_bin.exe")) | ||||
| 		}) | ||||
| 	}) | ||||
|  | @ -0,0 +1,13 @@ | |||
| package internal_test | ||||
| 
 | ||||
| import ( | ||||
| 	. "github.com/onsi/ginkgo" | ||||
| 	. "github.com/onsi/gomega" | ||||
| 
 | ||||
| 	"testing" | ||||
| ) | ||||
| 
 | ||||
| func TestInternal(t *testing.T) { | ||||
| 	RegisterFailHandler(Fail) | ||||
| 	RunSpecs(t, "Internal Suite") | ||||
| } | ||||
		Loading…
	
		Reference in New Issue