mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-13 05:02:50 +00:00
e2e: use error wrapping with %w
The recently introduced failure handling in ExpectNoError depends on error wrapping: if an error prefix gets added with `fmt.Errorf("foo: %v", err)`, then ExpectNoError cannot detect that the root cause is an assertion failure and then will add another useless "unexpected error" prefix and will not dump the additional failure information (currently the backtrace inside the E2E framework). Instead of manually deciding on a case-by-case basis where %w is needed, all error wrapping was updated automatically with sed -i "s/fmt.Errorf\(.*\): '*\(%s\|%v\)'*\",\(.* err)\)/fmt.Errorf\1: %w\",\3/" $(git grep -l 'fmt.Errorf' test/e2e*) This may be unnecessary in some cases, but it's not wrong.
This commit is contained in:
@@ -57,7 +57,7 @@ func runCommand(command string, args ...string) error {
|
||||
cmd.Stderr = os.Stderr
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to run command %s. error: %v", command, err)
|
||||
return fmt.Errorf("failed to run command %s. error: %w", command, err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@@ -79,7 +79,7 @@ func buildConformanceTest(binDir, systemSpecName string) error {
|
||||
// Get node conformance directory.
|
||||
conformancePath, err := getConformanceDirectory()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get node conformance directory: %v", err)
|
||||
return fmt.Errorf("failed to get node conformance directory: %w", err)
|
||||
}
|
||||
// Build docker image.
|
||||
cmd := exec.Command("make", "-C", conformancePath, "BIN_DIR="+binDir,
|
||||
@@ -104,7 +104,7 @@ func buildConformanceTest(binDir, systemSpecName string) error {
|
||||
func (c *ConformanceRemote) SetupTestPackage(tardir, systemSpecName string) error {
|
||||
// Build the executables
|
||||
if err := builder.BuildGo(); err != nil {
|
||||
return fmt.Errorf("failed to build the dependencies: %v", err)
|
||||
return fmt.Errorf("failed to build the dependencies: %w", err)
|
||||
}
|
||||
|
||||
// Make sure we can find the newly built binaries
|
||||
@@ -115,7 +115,7 @@ func (c *ConformanceRemote) SetupTestPackage(tardir, systemSpecName string) erro
|
||||
|
||||
// Build node conformance tarball.
|
||||
if err := buildConformanceTest(buildOutputDir, systemSpecName); err != nil {
|
||||
return fmt.Errorf("failed to build node conformance test: %v", err)
|
||||
return fmt.Errorf("failed to build node conformance test: %w", err)
|
||||
}
|
||||
|
||||
// Copy files
|
||||
@@ -123,7 +123,7 @@ func (c *ConformanceRemote) SetupTestPackage(tardir, systemSpecName string) erro
|
||||
for _, file := range requiredFiles {
|
||||
source := filepath.Join(buildOutputDir, file)
|
||||
if _, err := os.Stat(source); err != nil {
|
||||
return fmt.Errorf("failed to locate test file %s: %v", file, err)
|
||||
return fmt.Errorf("failed to locate test file %s: %w", file, err)
|
||||
}
|
||||
output, err := exec.Command("cp", source, filepath.Join(tardir, file)).CombinedOutput()
|
||||
if err != nil {
|
||||
@@ -188,7 +188,7 @@ func launchKubelet(host, workspace, results, testArgs, bearerToken string) error
|
||||
var cmd []string
|
||||
systemd, err := isSystemd(host)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to check systemd: %v", err)
|
||||
return fmt.Errorf("failed to check systemd: %w", err)
|
||||
}
|
||||
if systemd {
|
||||
cmd = []string{
|
||||
|
@@ -45,18 +45,18 @@ func InitNodeE2ERemote() TestSuite {
|
||||
func (n *NodeE2ERemote) SetupTestPackage(tardir, systemSpecName string) error {
|
||||
// Build the executables
|
||||
if err := builder.BuildGo(); err != nil {
|
||||
return fmt.Errorf("failed to build the dependencies: %v", err)
|
||||
return fmt.Errorf("failed to build the dependencies: %w", err)
|
||||
}
|
||||
|
||||
// Make sure we can find the newly built binaries
|
||||
buildOutputDir, err := utils.GetK8sBuildOutputDir()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to locate kubernetes build output directory: %v", err)
|
||||
return fmt.Errorf("failed to locate kubernetes build output directory: %w", err)
|
||||
}
|
||||
|
||||
rootDir, err := utils.GetK8sRootDir()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to locate kubernetes root directory: %v", err)
|
||||
return fmt.Errorf("failed to locate kubernetes root directory: %w", err)
|
||||
}
|
||||
|
||||
// Copy binaries
|
||||
@@ -64,7 +64,7 @@ func (n *NodeE2ERemote) SetupTestPackage(tardir, systemSpecName string) error {
|
||||
for _, bin := range requiredBins {
|
||||
source := filepath.Join(buildOutputDir, bin)
|
||||
if _, err := os.Stat(source); err != nil {
|
||||
return fmt.Errorf("failed to locate test binary %s: %v", bin, err)
|
||||
return fmt.Errorf("failed to locate test binary %s: %w", bin, err)
|
||||
}
|
||||
out, err := exec.Command("cp", source, filepath.Join(tardir, bin)).CombinedOutput()
|
||||
if err != nil {
|
||||
@@ -76,7 +76,7 @@ func (n *NodeE2ERemote) SetupTestPackage(tardir, systemSpecName string) error {
|
||||
// Copy system spec file
|
||||
source := filepath.Join(rootDir, system.SystemSpecPath, systemSpecName+".yaml")
|
||||
if _, err := os.Stat(source); err != nil {
|
||||
return fmt.Errorf("failed to locate system spec %q: %v", source, err)
|
||||
return fmt.Errorf("failed to locate system spec %q: %w", source, err)
|
||||
}
|
||||
out, err := exec.Command("cp", source, tardir).CombinedOutput()
|
||||
if err != nil {
|
||||
|
@@ -78,13 +78,13 @@ func CreateTestArchive(suite TestSuite, systemSpecName, kubeletConfigFile string
|
||||
|
||||
err = copyKubeletConfigIfExists(kubeletConfigFile, tardir)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to copy kubelet config: %v", err)
|
||||
return "", fmt.Errorf("failed to copy kubelet config: %w", err)
|
||||
}
|
||||
|
||||
// Call the suite function to setup the test package.
|
||||
err = suite.SetupTestPackage(tardir, systemSpecName)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to setup test package %q: %v", tardir, err)
|
||||
return "", fmt.Errorf("failed to setup test package %q: %w", tardir, err)
|
||||
}
|
||||
|
||||
// Build the tar
|
||||
@@ -196,7 +196,7 @@ func GetTimestampFromWorkspaceDir(dir string) string {
|
||||
func getTestArtifacts(host, testDir string) error {
|
||||
logPath := filepath.Join(*resultsDir, host)
|
||||
if err := os.MkdirAll(logPath, 0755); err != nil {
|
||||
return fmt.Errorf("failed to create log directory %q: %v", logPath, err)
|
||||
return fmt.Errorf("failed to create log directory %q: %w", logPath, err)
|
||||
}
|
||||
// Copy logs to artifacts/hostname
|
||||
if _, err := runSSHCommand("scp", "-r", fmt.Sprintf("%s:%s/results/*.log", GetHostnameOrIP(host), testDir), logPath); err != nil {
|
||||
@@ -250,7 +250,7 @@ func collectSystemLog(host string) {
|
||||
func WriteLog(host, filename, content string) error {
|
||||
logPath := filepath.Join(*resultsDir, host)
|
||||
if err := os.MkdirAll(logPath, 0755); err != nil {
|
||||
return fmt.Errorf("failed to create log directory %q: %v", logPath, err)
|
||||
return fmt.Errorf("failed to create log directory %q: %w", logPath, err)
|
||||
}
|
||||
f, err := os.Create(filepath.Join(logPath, filename))
|
||||
if err != nil {
|
||||
|
@@ -121,7 +121,7 @@ func runSSHCommand(cmd string, args ...string) (string, error) {
|
||||
output, err := exec.Command(cmd, args...).CombinedOutput()
|
||||
if err != nil {
|
||||
klog.Errorf("failed to run SSH command: out: %s, err: %v", output, err)
|
||||
return string(output), fmt.Errorf("command [%s %s] failed with error: %v", cmd, strings.Join(args, " "), err)
|
||||
return string(output), fmt.Errorf("command [%s %s] failed with error: %w", cmd, strings.Join(args, " "), err)
|
||||
}
|
||||
return string(output), nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user