From 2380288de880738dccff4cfa92d0c05f589e0b98 Mon Sep 17 00:00:00 2001 From: Aditya Thebe Date: Mon, 29 Apr 2024 14:33:11 +0545 Subject: [PATCH] chore: cleanup ErrorMessage --- checks/alertmanager.go | 2 +- checks/aws_config.go | 6 +++--- checks/azure_devops.go | 10 +++++----- checks/cloudwatch.go | 6 +++--- checks/database_backup.go | 3 +-- checks/database_backup_gcp.go | 7 +++---- checks/elasticsearch.go | 17 ++++++----------- checks/exec.go | 4 ++-- checks/folder.go | 4 ++-- checks/folder_gcs.go | 7 +++---- checks/folder_s3.go | 7 +++---- checks/folder_sftp.go | 6 +++--- checks/folder_smb.go | 8 ++++---- checks/http.go | 8 ++++---- checks/icmp.go | 4 ++-- checks/junit.go | 12 ++++++------ checks/mongodb.go | 4 ++-- checks/pod.go | 4 ++-- checks/prometheus.go | 4 ++-- checks/sql.go | 4 ++-- checks/tcp.go | 2 +- pkg/results.go | 14 +++----------- 22 files changed, 63 insertions(+), 80 deletions(-) diff --git a/checks/alertmanager.go b/checks/alertmanager.go index a1c7aec13..ea9b3a7eb 100644 --- a/checks/alertmanager.go +++ b/checks/alertmanager.go @@ -67,7 +67,7 @@ func (c *AlertManagerChecker) Check(ctx *context.Context, extConfig external.Che Filter: filters, }) if err != nil { - results.ErrorMessage(fmt.Errorf("Error fetching from alertmanager: %v", err)) + results.Errorf("error fetching from alertmanager: %v", err) return results } diff --git a/checks/aws_config.go b/checks/aws_config.go index f3aed003c..5796eeeca 100644 --- a/checks/aws_config.go +++ b/checks/aws_config.go @@ -46,7 +46,7 @@ func (c *AwsConfigChecker) Check(ctx *context.Context, extConfig external.Check) cfg, err := awsUtil.NewSession(ctx.Context, *check.AWSConnection) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } client := configservice.NewFromConfig(*cfg) @@ -56,7 +56,7 @@ func (c *AwsConfigChecker) Check(ctx *context.Context, extConfig external.Check) Expression: &check.Query, }) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } result.AddDetails(output.Results) } else { @@ -64,7 +64,7 @@ func (c *AwsConfigChecker) Check(ctx *context.Context, extConfig external.Check) Expression: &check.Query, }) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } result.AddDetails(output.Results) } diff --git a/checks/azure_devops.go b/checks/azure_devops.go index 2e96a0344..5ada2a9cc 100644 --- a/checks/azure_devops.go +++ b/checks/azure_devops.go @@ -51,12 +51,12 @@ func (t *AzureDevopsChecker) check(ctx *context.Context, check v1.AzureDevopsChe connection := azuredevops.NewPatConnection(fmt.Sprintf("https://dev.azure.com/%s", check.Organization), c.Password) coreClient, err := core.NewClient(ctx, connection) if err != nil { - return results.ErrorMessage(fmt.Errorf("failed to create core client: %w", err)) + return results.Errorf("failed to create core client: %w", err) } project, err := coreClient.GetProject(ctx, core.GetProjectArgs{ProjectId: &check.Project}) if err != nil { - return results.ErrorMessage(fmt.Errorf("failed to get project (name=%s): %w", check.Project, err)) + return results.Errorf("failed to get project (name=%s): %w", check.Project, err) } projectID := project.Id.String() @@ -68,7 +68,7 @@ func (t *AzureDevopsChecker) check(ctx *context.Context, check v1.AzureDevopsChe pipelineClient := pipelines.NewClient(ctx, connection) allPipelines, err := pipelineClient.ListPipelines(ctx, pipelines.ListPipelinesArgs{Project: &projectID}) if err != nil { - return results.ErrorMessage(fmt.Errorf("failed to get pipeline (project=%s): %w", check.Project, err)) + return results.Errorf("failed to get pipeline (project=%s): %w", check.Project, err) } for _, pipeline := range *allPipelines { @@ -89,7 +89,7 @@ func (t *AzureDevopsChecker) check(ctx *context.Context, check v1.AzureDevopsChe // https://learn.microsoft.com/en-us/rest/api/azure/devops/pipelines/runs/list?view=azure-devops-rest-7.1 runs, err := pipelineClient.ListRuns(ctx, pipelines.ListRunsArgs{PipelineId: pipeline.Id, Project: &projectID}) if err != nil { - return results.ErrorMessage(fmt.Errorf("failed to get runs (pipeline=%s): %w", check.Pipeline, err)) + return results.Errorf("failed to get runs (pipeline=%s): %w", check.Pipeline, err) } latestRun := getLatestCompletedRun(*runs) @@ -105,7 +105,7 @@ func (t *AzureDevopsChecker) check(ctx *context.Context, check v1.AzureDevopsChe // because the ListRuns API doesn't return Resources. latestRun, err = pipelineClient.GetRun(ctx, pipelines.GetRunArgs{Project: &projectID, PipelineId: pipeline.Id, RunId: (*runs)[0].Id}) if err != nil { - return results.ErrorMessage(fmt.Errorf("failed to get run (pipeline=%s): %w", check.Pipeline, err)) + return results.Errorf("failed to get run (pipeline=%s): %w", check.Pipeline, err) } if !matchBranchNames(check.Branches, latestRun.Resources) { diff --git a/checks/cloudwatch.go b/checks/cloudwatch.go index e3c71d211..e5455a325 100644 --- a/checks/cloudwatch.go +++ b/checks/cloudwatch.go @@ -44,7 +44,7 @@ func (c *CloudWatchChecker) Check(ctx *context.Context, extConfig external.Check cfg, err := awsUtil.NewSession(ctx.Context, check.AWSConnection) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } client := cloudwatch.NewFromConfig(*cfg) maxRecords := int32(100) @@ -56,10 +56,10 @@ func (c *CloudWatchChecker) Check(ctx *context.Context, extConfig external.Check MaxRecords: &maxRecords, }) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } if o, err := unstructure(alarms); err != nil { - return results.ErrorMessage(err) + return results.Error(err) } else { result.AddDetails(o) } diff --git a/checks/database_backup.go b/checks/database_backup.go index 6ac541474..9029cdf41 100644 --- a/checks/database_backup.go +++ b/checks/database_backup.go @@ -1,7 +1,6 @@ package checks import ( - "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus" "github.com/flanksource/canary-checker/api/context" @@ -60,5 +59,5 @@ func FailDatabaseBackupParse(ctx *context.Context, check v1.DatabaseBackupCheck) result := pkg.Fail(check, ctx.Canary) var results pkg.Results results = append(results, result) - return results.ErrorMessage(errors.New("Could not parse databaseBackup input")) + return results.Errorf("Could not parse databaseBackup input") } diff --git a/checks/database_backup_gcp.go b/checks/database_backup_gcp.go index 642c1cd66..bbc165ba0 100644 --- a/checks/database_backup_gcp.go +++ b/checks/database_backup_gcp.go @@ -1,7 +1,6 @@ package checks import ( - "errors" "fmt" "strings" "time" @@ -36,7 +35,7 @@ func GCPDatabaseBackupCheck(ctx *context.Context, check v1.DatabaseBackupCheck) svc, err := gcp.NewSQLAdmin(ctx.Context, check.GCP.GCPConnection) if err != nil { databaseScanFailCount.WithLabelValues(check.GCP.Project, check.GCP.Instance).Inc() - return results.ErrorMessage(err) + return results.Error(err) } // Only checking one backup for now, but setting up the logic that this could maybe be configurable. @@ -44,7 +43,7 @@ func GCPDatabaseBackupCheck(ctx *context.Context, check v1.DatabaseBackupCheck) backupList, err := svc.BackupRuns.List(check.GCP.Project, check.GCP.Instance).MaxResults(1).Do() if err != nil { databaseScanFailCount.WithLabelValues(check.GCP.Project, check.GCP.Instance).Inc() - return results.ErrorMessage(err) + return results.Error(err) } var errorMessages []string for _, backup := range backupList.Items { @@ -103,7 +102,7 @@ func GCPDatabaseBackupCheck(ctx *context.Context, check v1.DatabaseBackupCheck) } if len(errorMessages) > 0 { databaseScanFailCount.WithLabelValues(check.GCP.Project, check.GCP.Instance).Inc() - return results.ErrorMessage(errors.New(strings.Join(errorMessages, ", "))) + return results.Errorf(strings.Join(errorMessages, ", ")) } backupRaw, err := backupList.Items[0].MarshalJSON() diff --git a/checks/elasticsearch.go b/checks/elasticsearch.go index b9b8b551e..a7e9f5548 100644 --- a/checks/elasticsearch.go +++ b/checks/elasticsearch.go @@ -2,7 +2,6 @@ package checks import ( "encoding/json" - "fmt" "strings" "github.com/flanksource/canary-checker/api/context" @@ -47,7 +46,7 @@ func (c *ElasticsearchChecker) Check(ctx *context.Context, extConfig external.Ch es, err := elasticsearch.NewClient(cfg) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } body := strings.NewReader(check.Query) @@ -58,21 +57,19 @@ func (c *ElasticsearchChecker) Check(ctx *context.Context, extConfig external.Ch ) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } if res.IsError() { var e map[string]any if err := json.NewDecoder(res.Body).Decode(&e); err != nil { - return results.ErrorMessage( - fmt.Errorf("Error parsing the response body: %s", err), - ) + return results.Errorf("error parsing the response body: %s", err) } else { - return results.ErrorMessage(fmt.Errorf("Error from elasticsearch [%s]: %v, %v", + return results.Errorf("error from elasticsearch [%s]: %v, %v", res.Status(), e["error"].(map[string]any)["type"], e["error"].(map[string]any)["reason"], - )) + ) } } @@ -81,9 +78,7 @@ func (c *ElasticsearchChecker) Check(ctx *context.Context, extConfig external.Ch defer res.Body.Close() var r map[string]any if err := json.NewDecoder(res.Body).Decode(&r); err != nil { - return results.ErrorMessage( - fmt.Errorf("Error parsing the response body: %s", err), - ) + return results.Errorf("Error parsing the response body: %s", err) } count := int(r["hits"].(map[string]any)["total"].(map[string]any)["value"].(float64)) diff --git a/checks/exec.go b/checks/exec.go index 80d36541a..cd405119d 100644 --- a/checks/exec.go +++ b/checks/exec.go @@ -122,7 +122,7 @@ func (c *ExecChecker) Check(ctx *context.Context, extConfig external.Check) pkg. env, err := c.prepareEnvironment(ctx, check) if err != nil { - return results.Invalidf(err.Error()) + return results.Error(err) } switch runtime.GOOS { @@ -175,7 +175,7 @@ func execBash(ctx *context.Context, check v1.ExecCheck, envParams *execEnv) pkg. } if err := setupConnection(ctx, check, cmd); err != nil { - return results.Invalidf("failed to setup connection: %v", err) + return results.Errorf("failed to setup connection: %v", err) } return checkCmd(ctx, check, cmd, result) diff --git a/checks/folder.go b/checks/folder.go index e0e918c45..b2e50da3d 100644 --- a/checks/folder.go +++ b/checks/folder.go @@ -95,14 +95,14 @@ func checkLocalFolder(ctx *context.Context, check v1.FolderCheck) pkg.Results { // Form a dummy connection to get a local filesystem localFS, err := artifacts.GetFSForConnection(ctx.Context, models.Connection{Type: models.ConnectionTypeFolder}) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } folders, err := genericFolderCheck(localFS, check.Path, check.Recursive, check.Filter) result.AddDetails(folders) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } if test := folders.Test(check.FolderTest); test != "" { diff --git a/checks/folder_gcs.go b/checks/folder_gcs.go index 7ec668885..9e1edbc07 100644 --- a/checks/folder_gcs.go +++ b/checks/folder_gcs.go @@ -1,7 +1,6 @@ package checks import ( - "errors" "strings" gcs "cloud.google.com/go/storage" @@ -23,7 +22,7 @@ func CheckGCSBucket(ctx *context.Context, check v1.FolderCheck) pkg.Results { results = append(results, result) if check.GCSConnection == nil { - return results.ErrorMessage(errors.New("missing GCS connection")) + return results.Errorf("missing GCS connection") } var bucket string @@ -46,12 +45,12 @@ func CheckGCSBucket(ctx *context.Context, check v1.FolderCheck) pkg.Results { fs, err := artifacts.GetFSForConnection(ctx.Context, *connection) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } folders, err := genericFolderCheckWithoutPrecheck(fs, check.Path, check.Recursive, check.Filter) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } result.AddDetails(folders) diff --git a/checks/folder_s3.go b/checks/folder_s3.go index 562103747..79740b98e 100644 --- a/checks/folder_s3.go +++ b/checks/folder_s3.go @@ -3,7 +3,6 @@ package checks import ( - "errors" "strings" "github.com/aws/aws-sdk-go-v2/service/s3" @@ -25,7 +24,7 @@ func CheckS3Bucket(ctx *context.Context, check v1.FolderCheck) pkg.Results { results = append(results, result) if check.S3Connection == nil { - return results.ErrorMessage(errors.New("missing AWS connection")) + return results.Errorf("missing AWS connection") } var bucket string @@ -48,12 +47,12 @@ func CheckS3Bucket(ctx *context.Context, check v1.FolderCheck) pkg.Results { fs, err := artifacts.GetFSForConnection(ctx.Context, *connection) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } folders, err := genericFolderCheckWithoutPrecheck(fs, check.Path, check.Recursive, check.Filter) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } result.AddDetails(folders) diff --git a/checks/folder_sftp.go b/checks/folder_sftp.go index eb315baf0..281a77f9f 100644 --- a/checks/folder_sftp.go +++ b/checks/folder_sftp.go @@ -25,20 +25,20 @@ func CheckSFTP(ctx *context.Context, check v1.FolderCheck) pkg.Results { if !foundConn { auth, err = ctx.GetAuthValues(check.SFTPConnection.Authentication) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } } client, err := sftp.SSHConnect(fmt.Sprintf("%s:%d", check.SFTPConnection.Host, check.SFTPConnection.GetPort()), auth.GetUsername(), auth.GetPassword()) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } defer client.Close() session := artifacts.Filesystem(client) folders, err := genericFolderCheck(session, check.Path, check.Recursive, check.Filter) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } result.AddDetails(folders) diff --git a/checks/folder_smb.go b/checks/folder_smb.go index ded278ec3..960566a53 100644 --- a/checks/folder_smb.go +++ b/checks/folder_smb.go @@ -18,7 +18,7 @@ func CheckSmb(ctx *context.Context, check v1.FolderCheck) pkg.Results { var serverPath = strings.TrimPrefix(check.Path, "smb://") server, sharename, path, err := extractServerDetails(serverPath) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } foundConn, err := check.SMBConnection.HydrateConnection(ctx) @@ -30,13 +30,13 @@ func CheckSmb(ctx *context.Context, check v1.FolderCheck) pkg.Results { if !foundConn { auth, err = ctx.GetAuthValues(check.SMBConnection.Authentication) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } } session, err := smb.SMBConnect(server, fmt.Sprintf("%d", check.SMBConnection.GetPort()), sharename, auth) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } if session != nil { defer session.Close() @@ -44,7 +44,7 @@ func CheckSmb(ctx *context.Context, check v1.FolderCheck) pkg.Results { folders, err := genericFolderCheck(session, path, check.Recursive, check.Filter) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } var totalBlockCount, freeBlockCount, blockSize int // TODO: diff --git a/checks/http.go b/checks/http.go index 28a79ecd3..0d802a2c2 100644 --- a/checks/http.go +++ b/checks/http.go @@ -174,12 +174,12 @@ func (c *HTTPChecker) Check(ctx *context.Context, check v1.HTTPCheck) pkg.Result request, err := c.generateHTTPRequest(ctx, check, connection) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } if body != "" { if err := request.Body(body); err != nil { - return results.ErrorMessage(err) + return results.Error(err) } } @@ -187,7 +187,7 @@ func (c *HTTPChecker) Check(ctx *context.Context, check v1.HTTPCheck) pkg.Result response, err := request.Do(check.GetMethod(), connection.URL) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } elapsed := time.Since(start) @@ -219,7 +219,7 @@ func (c *HTTPChecker) Check(ctx *context.Context, check v1.HTTPCheck) pkg.Result responseBody, err := response.AsString() if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } data["content"] = responseBody diff --git a/checks/icmp.go b/checks/icmp.go index 691b81d67..5d846a8b0 100644 --- a/checks/icmp.go +++ b/checks/icmp.go @@ -60,13 +60,13 @@ func (c *IcmpChecker) Check(ctx *context.Context, extConfig external.Check) pkg. endpoint := check.Endpoint ips, err := dns.Lookup("A", endpoint) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } for _, urlObj := range ips { pingerStats, err := c.checkICMP(urlObj, check.PacketCount) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } if pingerStats.PacketsSent == 0 { return results.Failf("Failed to check icmp, no packets sent") diff --git a/checks/junit.go b/checks/junit.go index 89095ccc9..7b5c9e537 100644 --- a/checks/junit.go +++ b/checks/junit.go @@ -151,7 +151,7 @@ func podExecf(ctx *context.Context, pod corev1.Pod, results pkg.Results, cmd str } func podFail(ctx *context.Context, pod corev1.Pod, results pkg.Results) pkg.Results { - return results.ErrorMessage(fmt.Errorf("%s is %s\n %v", pod.Name, pod.Status.Phase, getLogs(ctx, pod))) + return results.Errorf("%s is %s\n %v", pod.Name, pod.Status.Phase, getLogs(ctx, pod)) } func cleanupExistingPods(ctx *context.Context, k8s kubernetes.Interface, selector string) (bool, error) { @@ -198,18 +198,18 @@ func (c *JunitChecker) Check(ctx *context.Context, extConfig external.Check) pkg timeout := time.Duration(check.GetTimeout()) * time.Minute pod, err := newPod(ctx, check) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } pods := k8s.CoreV1().Pods(ctx.Namespace) if skip, err := cleanupExistingPods(ctx, k8s, fmt.Sprintf("%s=%s", junitCheckSelector, pod.Labels[junitCheckSelector])); err != nil { - return results.ErrorMessage(err) + return results.Error(err) } else if skip { return nil } if _, err := k8s.CoreV1().Pods(ctx.Namespace).Create(ctx, pod, metav1.CreateOptions{}); err != nil { - return results.ErrorMessage(err) + return results.Error(err) } defer deletePod(ctx, pod) @@ -229,7 +229,7 @@ func (c *JunitChecker) Check(ctx *context.Context, extConfig external.Check) pkg podObj, err := pods.Get(ctx, pod.Name, metav1.GetOptions{}) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } if !kommons.IsPodHealthy(*podObj) { @@ -257,7 +257,7 @@ func (c *JunitChecker) Check(ctx *context.Context, extConfig external.Check) pkg return results } if suites, err = suites.Ingest(output); err != nil { - return results.ErrorMessage(err) + return results.Error(err) } } diff --git a/checks/mongodb.go b/checks/mongodb.go index 9ef51e17c..54a35eae8 100644 --- a/checks/mongodb.go +++ b/checks/mongodb.go @@ -51,13 +51,13 @@ func (c *MongoDBChecker) Check(ctx *context.Context, extConfig external.Check) p client, err := mongo.Connect(_ctx, opts) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } defer client.Disconnect(ctx) //nolint: errcheck err = client.Ping(_ctx, readpref.Primary()) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } return results diff --git a/checks/pod.go b/checks/pod.go index 51c24a065..85f9eeb60 100644 --- a/checks/pod.go +++ b/checks/pod.go @@ -150,7 +150,7 @@ func (c *PodChecker) Check(ctx *context.Context, extConfig external.Check) pkg.R pods := c.k8s.CoreV1().Pods(podCheck.Namespace) if skip, err := cleanupExistingPods(ctx, c.k8s, c.podCheckSelector(podCheck)); err != nil { - return results.ErrorMessage(err) + return results.Error(err) } else if skip { return nil } @@ -172,7 +172,7 @@ func (c *PodChecker) Check(ctx *context.Context, extConfig external.Check) pkg.R } if _, err := c.k8s.CoreV1().Pods(podCheck.Namespace).Create(ctx, pod, metav1.CreateOptions{}); err != nil { - return results.ErrorMessage(err) + return results.Error(err) } pod, err = c.WaitForPod(podCheck.Namespace, pod.Name, time.Millisecond*time.Duration(podCheck.ScheduleTimeout), v1.PodRunning) diff --git a/checks/prometheus.go b/checks/prometheus.go index b60676de9..23439d17b 100644 --- a/checks/prometheus.go +++ b/checks/prometheus.go @@ -53,11 +53,11 @@ func (c *PrometheusChecker) Check(ctx *context.Context, extConfig external.Check promClient, err := prometheus.NewPrometheusAPI(connection.URL) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } modelValue, warning, err := promClient.Query(ctx.Context, check.Query, time.Now()) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } if warning != nil { ctx.Debugf("warnings when running the query: %v", warning) diff --git a/checks/sql.go b/checks/sql.go index edce2dac4..e02d95388 100644 --- a/checks/sql.go +++ b/checks/sql.go @@ -157,7 +157,7 @@ func CheckSQL(ctx *context.Context, checker SQLChecker) pkg.Results { // nolint: Template: query, }) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } if ctx.IsDebug() { ctx.Infof("query: %s", query) @@ -168,7 +168,7 @@ func CheckSQL(ctx *context.Context, checker SQLChecker) pkg.Results { // nolint: result.AddDetails(details) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } if details.Count < check.Result { diff --git a/checks/tcp.go b/checks/tcp.go index fbb38cb71..66e6cc0c8 100644 --- a/checks/tcp.go +++ b/checks/tcp.go @@ -39,7 +39,7 @@ func (t *TCPChecker) Check(ctx *context.Context, extConfig external.Check) pkg.R addr, port, err := extractAddrAndPort(c.Endpoint) if err != nil { - return results.ErrorMessage(err) + return results.Error(err) } timeout := time.Millisecond * time.Duration(c.ThresholdMillis) diff --git a/pkg/results.go b/pkg/results.go index 7c52553b0..db4d889e1 100644 --- a/pkg/results.go +++ b/pkg/results.go @@ -123,20 +123,12 @@ func (result *CheckResult) Invalidf(message string, args ...interface{}) *CheckR func (result *CheckResult) Errorf(msg string, args ...any) *CheckResult { result = result.Failf(msg, args...) - result.Invalid = true + // TODO: mark this is as error return result } func (result *CheckResult) ErrorMessage(err error) *CheckResult { - if err == nil { - return result - } - if result.Error != "" { - result.Error += ", " - } - result.Pass = false - result.Error += err.Error() - return result + return result.Errorf(err.Error()) } func (result *CheckResult) AddDetails(detail interface{}) *CheckResult { @@ -183,7 +175,7 @@ func (r Results) Invalidf(msg string, args ...any) Results { return r } -func (r Results) ErrorMessage(err error) Results { +func (r Results) Error(err error) Results { r[0].ErrorMessage(err) return r }