
This commit removes the configuration files for Godeps as well as the vendored dependencies, replacing them with go modules, Go's built-in dependency management system. This dramatically slims down the size of the repo (from 25M to 324K, discounting the .git directory) and greatly speeds up cloning times. This will also provide mechanisms for managing versions of any auxiliary tools (e.g. linters), creating a reproducible environment for developers and CI/CD efforts. This also modifies the Makefile to take into account that the repo no longer needs to be cloned into the GOPATH. Change-Id: I2213792cc3ce81831d5b835f2252ca6f137e0086
112 lines
2.3 KiB
Go
112 lines
2.3 KiB
Go
package entrypoint
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
"time"
|
|
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
|
|
cli "opendev.org/airship/kubernetes-entrypoint/client"
|
|
"opendev.org/airship/kubernetes-entrypoint/logger"
|
|
"opendev.org/airship/kubernetes-entrypoint/mocks"
|
|
)
|
|
|
|
const (
|
|
testNamespace = "test"
|
|
dummyResolverName = "dummy"
|
|
loggerInfoText = "Entrypoint INFO: "
|
|
)
|
|
|
|
var testEntrypoint EntrypointInterface
|
|
var testClient cli.ClientInterface
|
|
|
|
type dummyResolver struct {
|
|
name string
|
|
namespace string
|
|
}
|
|
|
|
func (d dummyResolver) IsResolved(entry EntrypointInterface) (bool, error) {
|
|
return true, nil
|
|
}
|
|
func (d dummyResolver) GetName() (name string) {
|
|
return d.name
|
|
}
|
|
|
|
func (d dummyResolver) String() string {
|
|
return fmt.Sprintf("Dummy %s in namespace %s", d.name, d.namespace)
|
|
}
|
|
|
|
func init() {
|
|
testClient = mocks.NewClient()
|
|
testEntrypoint = mocks.NewEntrypointInNamespace(testNamespace)
|
|
}
|
|
|
|
func registerNilResolver() {
|
|
Register(nil)
|
|
}
|
|
|
|
var _ = Describe("Entrypoint", func() {
|
|
|
|
dummy := dummyResolver{name: dummyResolverName}
|
|
|
|
BeforeEach(func() {
|
|
logger.Info.SetFlags(0)
|
|
logger.Warning.SetFlags(0)
|
|
logger.Error.SetFlags(0)
|
|
})
|
|
|
|
AfterEach(func() {
|
|
// Clear dependencies
|
|
dependencies = make([]Resolver, 0)
|
|
})
|
|
|
|
It("registers new nil resolver", func() {
|
|
defer GinkgoRecover()
|
|
|
|
Ω(registerNilResolver).Should(Panic())
|
|
})
|
|
|
|
It("registers new non-nil resolver", func() {
|
|
defer GinkgoRecover()
|
|
Register(dummy)
|
|
Expect(len(dependencies)).To(Equal(1))
|
|
})
|
|
|
|
It("checks Client() method", func() {
|
|
client := testEntrypoint.Client()
|
|
Expect(client).To(Equal(testClient))
|
|
})
|
|
|
|
It("resolves main entrypoint with a dummy dependency", func() {
|
|
defer GinkgoRecover()
|
|
|
|
// Set output logger to our reader
|
|
r, w, _ := os.Pipe()
|
|
tmp := os.Stdout
|
|
defer func() {
|
|
os.Stdout = tmp
|
|
}()
|
|
|
|
logger.Info.SetOutput(w)
|
|
|
|
os.Stdout = w
|
|
go func() {
|
|
mainEntrypoint := Entrypoint{client: mocks.NewClient(), namespace: "main"}
|
|
Register(dummy)
|
|
mainEntrypoint.Resolve()
|
|
w.Close()
|
|
}()
|
|
|
|
// Wait for resolver to finish
|
|
time.Sleep(5 * time.Second)
|
|
|
|
stdout, _ := ioutil.ReadAll(r)
|
|
resolvedString := fmt.Sprintf("%sResolving %v\n%sDependency %v is resolved.\n",
|
|
loggerInfoText, dummy, loggerInfoText, dummy)
|
|
Expect(string(stdout)).To(Equal(resolvedString))
|
|
})
|
|
})
|