func()

in internal/testers/ginkgov1/package.go [157:186]


func (t *Tester) ensureKubectl(downloadPath string) error {

	kubectlPathInGCS := fmt.Sprintf(
		"gs://%s/%s/%s/bin/%s/%s/kubectl",
		t.TestPackageBucket,
		t.TestPackageDir,
		t.TestPackageVersion,
		runtime.GOOS,
		runtime.GOARCH,
	)
	if _, err := os.Stat(downloadPath); err == nil {
		klog.V(0).Infof("Found existing kubectl at %v", downloadPath)
		err := t.compareSHA(downloadPath, kubectlPathInGCS)
		if err == nil {
			klog.V(0).Infof("Validated hash for existing kubectl at %v", downloadPath)
			return nil
		}
		klog.Warning(err)
	}

	cmd := exec.Command("gsutil", "cp", kubectlPathInGCS, downloadPath)
	exec.InheritOutput(cmd)
	if err := cmd.Run(); err != nil {
		return fmt.Errorf("failed to download kubectl for release %s: %s", t.TestPackageVersion, err)
	}
	if err := os.Chmod(downloadPath, 0700); err != nil {
		return fmt.Errorf("failed to make %s executable: %s", downloadPath, err)
	}
	return nil
}