diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2021-11-26 14:14:12 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2021-11-26 14:14:12 +0100 |
commit | 18ff7302d149f0c47f547b09c280e34a1b9ebff7 (patch) | |
tree | 34f5dd747a980bae37ce38b8b76444e92f100d0b /client | |
parent | e149174235b44e33d45bb11173a258c3784703ed (diff) |
Improve error messages
Diffstat (limited to 'client')
-rw-r--r-- | client/go/cmd/prod_test.go | 1 | ||||
-rw-r--r-- | client/go/cmd/test.go | 24 | ||||
-rw-r--r-- | client/go/cmd/test_test.go | 2 |
3 files changed, 16 insertions, 11 deletions
diff --git a/client/go/cmd/prod_test.go b/client/go/cmd/prod_test.go index a4f3ebd6b56..771a79f0fde 100644 --- a/client/go/cmd/prod_test.go +++ b/client/go/cmd/prod_test.go @@ -168,6 +168,7 @@ func TestProdSubmit(t *testing.T) { } out, err := execute(command{homeDir: homeDir, args: []string{"prod", "submit"}}, t, httpClient) assert.Equal(t, "", err) + assert.Contains(t, out, "Validating test.json: . OK") assert.Contains(t, out, "Success: Submitted") assert.Contains(t, out, "See https://console.vespa.oath.cloud/tenant/t1/application/a1/prod/deployment for deployment progress") } diff --git a/client/go/cmd/test.go b/client/go/cmd/test.go index 8ed9898b598..e8fac8de699 100644 --- a/client/go/cmd/test.go +++ b/client/go/cmd/test.go @@ -69,11 +69,11 @@ func runTests(rootPath string, target vespa.Target, dryRun bool) (int, []string) count := 0 failed := make([]string, 0) if stat, err := os.Stat(rootPath); err != nil { - fatalErr(err, "Failed reading specified test path") + fatalErrHint(err, "See https://cloud.vespa.ai/en/reference/testing") } else if stat.IsDir() { tests, err := ioutil.ReadDir(rootPath) // TODO: Use os.ReadDir when >= 1.16 is required. if err != nil { - fatalErr(err, "Failed reading specified test directory") + fatalErrHint(err, "See https://cloud.vespa.ai/en/reference/testing") } previousFailed := false for _, test := range tests { @@ -106,25 +106,29 @@ func runTest(testPath string, target vespa.Target, dryRun bool) string { var test test testBytes, err := ioutil.ReadFile(testPath) if err != nil { - fatalErr(err, fmt.Sprintf("Failed to read test file at %s", testPath)) + fatalErrHint(err, "See https://cloud.vespa.ai/en/reference/testing") } if err = json.Unmarshal(testBytes, &test); err != nil { - fatalErr(err, fmt.Sprintf("Failed to parse test file at %s", testPath)) + fatalErrHint(err, "See https://cloud.vespa.ai/en/reference/testing") } testName := test.Name if test.Name == "" { testName = filepath.Base(testPath) } - fmt.Fprintf(stdout, "Running %s:", testName) + verb := "Running" + if dryRun { + verb = "Validating" + } + fmt.Fprintf(stdout, "%s %s:", verb, testName) defaultParameters, err := getParameters(test.Defaults.ParametersRaw, path.Dir(testPath)) if err != nil { - fatalErr(err, fmt.Sprintf("Invalid default parameters for %s", testName)) + fatalErrHint(err, fmt.Sprintf("Invalid default parameters for %s", testName), "See https://cloud.vespa.ai/en/reference/testing") } if len(test.Steps) == 0 { - fatalErr(fmt.Errorf("a test must have at least one step, but none were found in %s", testPath)) + fatalErrHint(fmt.Errorf("a test must have at least one step, but none were found in %s", testPath), "See https://cloud.vespa.ai/en/reference/testing") } for i, step := range test.Steps { stepName := step.Name @@ -133,7 +137,7 @@ func runTest(testPath string, target vespa.Target, dryRun bool) string { } failure, longFailure, err := verify(step, path.Dir(testPath), test.Defaults.Cluster, defaultParameters, target, dryRun) if err != nil { - fatalErr(err, fmt.Sprintf("Error in %s", stepName)) + fatalErr(err, fmt.Sprintf("Error in %s", stepName), "See https://cloud.vespa.ai/en/reference/testing") } if failure != "" { fmt.Fprintf(stdout, " Failed %s:\n%s\n", stepName, longFailure) @@ -362,7 +366,7 @@ func getParameters(parametersRaw []byte, testsPath string) (map[string]string, e resolvedParametersPath := path.Join(testsPath, parametersPath) parametersRaw, err = ioutil.ReadFile(resolvedParametersPath) if err != nil { - fatalErr(err, fmt.Sprintf("Failed to read request parameters file at '%s'", resolvedParametersPath)) + fatalErrHint(err, fmt.Sprintf("Failed to read request parameters file at '%s'", resolvedParametersPath), "See https://cloud.vespa.ai/en/reference/testing") } } var parameters map[string]string @@ -380,7 +384,7 @@ func getBody(bodyRaw []byte, testsPath string) ([]byte, error) { resolvedBodyPath := path.Join(testsPath, bodyPath) bodyRaw, err = ioutil.ReadFile(resolvedBodyPath) if err != nil { - fatalErr(err, fmt.Sprintf("Failed to read body file at '%s'", resolvedBodyPath)) + fatalErrHint(err, fmt.Sprintf("Failed to read body file at '%s'", resolvedBodyPath), "See https://cloud.vespa.ai/en/reference/testing") } } return bodyRaw, nil diff --git a/client/go/cmd/test_test.go b/client/go/cmd/test_test.go index fe04e3a704a..a75f5384a30 100644 --- a/client/go/cmd/test_test.go +++ b/client/go/cmd/test_test.go @@ -53,7 +53,7 @@ func TestProductionTest(t *testing.T) { func TestTestWithoutAssertions(t *testing.T) { client := &mockHttpClient{} _, errBytes := execute(command{args: []string{"test", "testdata/tests/system-test/foo/query.json"}}, t, client) - assert.Equal(t, "a test must have at least one step, but none were found in testdata/tests/system-test/foo/query.json\n", errBytes) + assert.Equal(t, "Error: a test must have at least one step, but none were found in testdata/tests/system-test/foo/query.json\nHint: See https://cloud.vespa.ai/en/reference/testing\n", errBytes) } func TestSuiteWithoutTests(t *testing.T) { |