From 1e708b064fd89c51a26d4d28f65b1b755e4efd99 Mon Sep 17 00:00:00 2001 From: AdamKorcz Date: Fri, 6 Oct 2023 15:51:44 +0100 Subject: [PATCH] :seedling: Add probe test utility Signed-off-by: AdamKorcz --- probes/internal/utils/test/test.go | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 probes/internal/utils/test/test.go diff --git a/probes/internal/utils/test/test.go b/probes/internal/utils/test/test.go new file mode 100644 index 000000000000..7ea71bf019fc --- /dev/null +++ b/probes/internal/utils/test/test.go @@ -0,0 +1,40 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package test + +import ( + "testing" + + "github.com/google/go-cmp/cmp" + + "github.com/ossf/scorecard/v4/finding" +) + +// AssertCorrect is a suitable for all probes to compare raw results against expected outcomes. +func AssertCorrect(t *testing.T, probeExpect, probeGot string, findings []finding.Finding, expectedOutcomes []finding.Outcome) { + if diff := cmp.Diff(probeExpect, probeGot); diff != "" { + t.Errorf("mismatch (-want +got):\n%s", diff) + } + if diff := cmp.Diff(len(expectedOutcomes), len(findings)); diff != "" { + t.Errorf("mismatch (-want +got):\n%s", diff) + } + for i := range expectedOutcomes { + outcome := &expectedOutcomes[i] + f := &findings[i] + if diff := cmp.Diff(*outcome, f.Outcome); diff != "" { + t.Errorf("mismatch (-want +got):\n%s", diff) + } + } +}