Use anonymous struct for wrapping ginkgo.Tester

This commit is contained in:
Peter Rifel 2021-01-10 18:18:20 -06:00
parent 720dcb6428
commit f671acc5d6
No known key found for this signature in database
GPG Key ID: BC6469E5B16DB2B6
2 changed files with 35 additions and 17 deletions

View File

@ -37,11 +37,11 @@ import (
// AcquireKubectl obtains kubectl and places it in a temporary directory
func (t *Tester) AcquireKubectl() (string, error) {
// first, get the name of the latest release (e.g. v1.20.0-alpha.0)
if t.Ginkgo.TestPackageVersion == "" {
if t.TestPackageVersion == "" {
cmd := exec.Command(
"gsutil",
"cat",
fmt.Sprintf("gs://%s/%s/latest.txt", t.Ginkgo.TestPackageBucket, t.Ginkgo.TestPackageDir),
fmt.Sprintf("gs://%s/%s/latest.txt", t.TestPackageBucket, t.TestPackageDir),
)
lines, err := exec.OutputLines(cmd)
if err != nil {
@ -50,9 +50,9 @@ func (t *Tester) AcquireKubectl() (string, error) {
if len(lines) == 0 {
return "", fmt.Errorf("getting latest release name had no output")
}
t.Ginkgo.TestPackageVersion = lines[0]
t.TestPackageVersion = lines[0]
klog.Infof("Kubectl package version was not specified. Defaulting to latest: %s", t.Ginkgo.TestPackageVersion)
klog.Infof("Kubectl package version was not specified. Defaulting to latest: %s", t.TestPackageVersion)
}
clientTar := fmt.Sprintf("kubernetes-client-%s-%s.tar.gz", runtime.GOOS, runtime.GOARCH)
@ -139,9 +139,9 @@ func (t *Tester) ensureClientTar(downloadPath, clientTar string) error {
"gsutil", "cp",
fmt.Sprintf(
"gs://%s/%s/%s/%s",
t.Ginkgo.TestPackageBucket,
t.Ginkgo.TestPackageDir,
t.Ginkgo.TestPackageVersion,
t.TestPackageBucket,
t.TestPackageDir,
t.TestPackageVersion,
clientTar,
),
downloadPath,
@ -151,7 +151,7 @@ func (t *Tester) ensureClientTar(downloadPath, clientTar string) error {
cmd := exec.Command(args[0], args[1:]...)
exec.InheritOutput(cmd)
if err := cmd.Run(); err != nil {
return fmt.Errorf("failed to download release tar %s for release %s: %s", clientTar, t.Ginkgo.TestPackageVersion, err)
return fmt.Errorf("failed to download release tar %s for release %s: %s", clientTar, t.TestPackageVersion, err)
}
return nil
}
@ -160,15 +160,15 @@ func (t *Tester) compareSHA(downloadPath string, clientTar string) error {
cmd := exec.Command("gsutil", "cat",
fmt.Sprintf(
"gs://%s/%s/%s/%s",
t.Ginkgo.TestPackageBucket,
t.Ginkgo.TestPackageDir,
t.Ginkgo.TestPackageVersion,
t.TestPackageBucket,
t.TestPackageDir,
t.TestPackageVersion,
clientTar+".sha256",
),
)
expectedSHABytes, err := exec.Output(cmd)
if err != nil {
return fmt.Errorf("failed to get sha256 for release tar %s for release %s: %s", clientTar, t.Ginkgo.TestPackageVersion, err)
return fmt.Errorf("failed to get sha256 for release tar %s for release %s: %s", clientTar, t.TestPackageVersion, err)
}
expectedSHA := strings.TrimSuffix(string(expectedSHABytes), "\n")
actualSHA, err := sha256sum(downloadPath)

View File

@ -21,6 +21,7 @@ import (
"os"
"path/filepath"
"github.com/octago/sflags/gen/gpflag"
"k8s.io/klog/v2"
"sigs.k8s.io/kubetest2/pkg/testers/ginkgo"
@ -28,7 +29,7 @@ import (
// Tester wraps kubetest2's ginkgo tester with additional functionality
type Tester struct {
Ginkgo *ginkgo.Tester
*ginkgo.Tester
}
func (t *Tester) pretestSetup() error {
@ -43,22 +44,39 @@ func (t *Tester) pretestSetup() error {
return os.Setenv("PATH", newPath)
}
func (t *Tester) Execute() error {
func (t *Tester) execute() error {
fs, err := gpflag.Parse(t)
if err != nil {
return fmt.Errorf("failed to initialize tester: %v", err)
}
help := fs.BoolP("help", "h", false, "")
if err := fs.Parse(os.Args); err != nil {
return fmt.Errorf("failed to parse flags: %v", err)
}
if *help {
fs.SetOutput(os.Stdout)
fs.PrintDefaults()
return nil
}
if err := t.pretestSetup(); err != nil {
return err
}
return t.Ginkgo.Execute()
return t.Execute()
}
func NewDefaultTester() *Tester {
return &Tester{
Ginkgo: ginkgo.NewDefaultTester(),
ginkgo.NewDefaultTester(),
}
}
func Main() {
t := NewDefaultTester()
if err := t.Execute(); err != nil {
if err := t.execute(); err != nil {
klog.Fatalf("failed to run ginkgo tester: %v", err)
}
}