Skip to content

Commit

Permalink
refactor: remove use of reflections (#2634)
Browse files Browse the repository at this point in the history
## Description

This change removes any direct import of the reflection package. Use of
reflections still exists but these are wrapped in the helpers package.

Use of deep equals has been removed from tests as require equals uses
deep equals as part of its test.

## Related Issue

N/A

## Checklist before merging

- [x] Test, docs, adr added or updated as needed
- [x] [Contributor Guide
Steps](https://github.com/defenseunicorns/zarf/blob/main/.github/CONTRIBUTING.md#developer-workflow)
followed

Co-authored-by: Austin Abro <[email protected]>
  • Loading branch information
phillebaba and AustinAbro321 committed Jun 21, 2024
1 parent eab8a98 commit 6cc9c57
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 37 deletions.
5 changes: 3 additions & 2 deletions src/internal/packager/helm/post-render.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import (
"bytes"
"context"
"fmt"
"maps"
"os"
"path/filepath"
"reflect"
"slices"

"github.com/defenseunicorns/pkg/helpers/v2"
Expand Down Expand Up @@ -163,7 +163,8 @@ func (r *renderer) adoptAndUpdateNamespaces(ctx context.Context) error {
validRegistrySecret := c.GenerateRegistryPullCreds(name, config.ZarfImagePullSecretName, r.state.RegistryInfo)
// TODO: Refactor as error is not checked instead of checking for not found error.
currentRegistrySecret, _ := c.Clientset.CoreV1().Secrets(name).Get(ctx, config.ZarfImagePullSecretName, metav1.GetOptions{})
if currentRegistrySecret.Name != config.ZarfImagePullSecretName || !reflect.DeepEqual(currentRegistrySecret.Data, validRegistrySecret.Data) {
sameSecretData := maps.EqualFunc(currentRegistrySecret.Data, validRegistrySecret.Data, func(v1, v2 []byte) bool { return bytes.Equal(v1, v2) })
if currentRegistrySecret.Name != config.ZarfImagePullSecretName || !sameSecretData {
err := func() error {
_, err := c.Clientset.CoreV1().Secrets(validRegistrySecret.Namespace).Create(ctx, validRegistrySecret, metav1.CreateOptions{})
if err != nil && !kerrors.IsAlreadyExists(err) {
Expand Down
7 changes: 4 additions & 3 deletions src/pkg/cluster/secrets.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
package cluster

import (
"bytes"
"context"
"encoding/base64"
"encoding/json"
"reflect"
"maps"

corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand Down Expand Up @@ -123,7 +124,7 @@ func (c *Cluster) UpdateZarfManagedImageSecrets(ctx context.Context, state *type
spinner.Updatef("Updating existing Zarf-managed image secret for namespace: '%s'", namespace.Name)

newRegistrySecret := c.GenerateRegistryPullCreds(namespace.Name, config.ZarfImagePullSecretName, state.RegistryInfo)
if !reflect.DeepEqual(currentRegistrySecret.Data, newRegistrySecret.Data) {
if !maps.EqualFunc(currentRegistrySecret.Data, newRegistrySecret.Data, func(v1, v2 []byte) bool { return bytes.Equal(v1, v2) }) {
_, err := c.Clientset.CoreV1().Secrets(newRegistrySecret.Namespace).Update(ctx, newRegistrySecret, metav1.UpdateOptions{})
if err != nil {
message.WarnErrf(err, "Problem creating registry secret for the %s namespace", namespace.Name)
Expand Down Expand Up @@ -159,7 +160,7 @@ func (c *Cluster) UpdateZarfManagedGitSecrets(ctx context.Context, state *types.

// Create the secret
newGitSecret := c.GenerateGitPullCreds(namespace.Name, config.ZarfGitServerSecretName, state.GitServer)
if !reflect.DeepEqual(currentGitSecret.StringData, newGitSecret.StringData) {
if !maps.Equal(currentGitSecret.StringData, newGitSecret.StringData) {
_, err := c.Clientset.CoreV1().Secrets(newGitSecret.Namespace).Update(ctx, newGitSecret, metav1.UpdateOptions{})
if err != nil {
message.WarnErrf(err, "Problem creating git server secret for the %s namespace", namespace.Name)
Expand Down
5 changes: 1 addition & 4 deletions src/pkg/packager/deploy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
package packager

import (
"reflect"
"testing"

"github.com/defenseunicorns/zarf/src/pkg/packager/sources"
Expand Down Expand Up @@ -222,9 +221,7 @@ func TestGenerateValuesOverrides(t *testing.T) {
if err != nil {
t.Errorf("%s: generateValuesOverrides() error = %v", tt.name, err)
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("%s: generateValuesOverrides() got = %v, want %v", tt.name, got, tt.want)
}
require.Equal(t, tt.want, got)
})
}
}
Expand Down
31 changes: 7 additions & 24 deletions src/pkg/packager/filters/deploy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ package filters

import (
"fmt"
"reflect"
"strings"
"testing"

Expand Down Expand Up @@ -115,7 +114,7 @@ func TestDeployFilter_Apply(t *testing.T) {

possibilities := componentMatrix(t)

testCases := map[string]struct {
tests := map[string]struct {
pkg types.ZarfPackage
optionalComponents string
want []types.ZarfComponent
Expand Down Expand Up @@ -196,35 +195,19 @@ func TestDeployFilter_Apply(t *testing.T) {
},
}

for name, tc := range testCases {
for name, tt := range tests {
t.Run(name, func(t *testing.T) {
// we do not currently support interactive mode in unit tests
isInteractive := false
filter := ForDeploy(tc.optionalComponents, isInteractive)
filter := ForDeploy(tt.optionalComponents, isInteractive)

result, err := filter.Apply(tc.pkg)
if tc.expectedErr != nil {
require.ErrorIs(t, err, tc.expectedErr)
result, err := filter.Apply(tt.pkg)
if tt.expectedErr != nil {
require.ErrorIs(t, err, tt.expectedErr)
} else {
require.NoError(t, err)
}
equal := reflect.DeepEqual(tc.want, result)
if !equal {
left := []string{}
right := []string{}

for _, c := range tc.want {
left = append(left, c.Name)
}

for _, c := range result {
right = append(right, c.Name)
fmt.Printf("componentFromQuery(t, %q),\n", strings.TrimSpace(c.Name))
}

// cause the test to fail
require.FailNow(t, "expected and actual are not equal", "\n\nexpected: %#v\n\nactual: %#v", left, right)
}
require.Equal(t, tt.want, result)
})
}
}
5 changes: 1 addition & 4 deletions src/pkg/utils/sort_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
package utils

import (
"reflect"
"testing"

"github.com/stretchr/testify/require"
Expand Down Expand Up @@ -169,9 +168,7 @@ func TestSortDependencies(t *testing.T) {
} else {
require.Error(t, err)
}
if !reflect.DeepEqual(result, tt.expected) {
t.Errorf("expected %v but got %v", tt.expected, result)
}
require.Equal(t, tt.expected, result)
})
}
}

0 comments on commit 6cc9c57

Please sign in to comment.