Introduce `artifactSet` to replace `hasArtifactUpdated`
NOTE: Remove `hasArtifactUpdated` in the future once it's no longer used. Signed-off-by: Hidde Beydals <hello@hidde.co>
This commit is contained in:
parent
349739b7e4
commit
e190059cc7
|
@ -1,9 +1,47 @@
|
|||
/*
|
||||
Copyright 2021 The Flux 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 controllers
|
||||
|
||||
import sourcev1 "github.com/fluxcd/source-controller/api/v1beta2"
|
||||
|
||||
type artifactSet []*sourcev1.Artifact
|
||||
|
||||
// Diff returns true if any of the revisions in the artifactSet does not match any of the given artifacts.
|
||||
func (s artifactSet) Diff(set artifactSet) bool {
|
||||
if len(s) != len(set) {
|
||||
return true
|
||||
}
|
||||
|
||||
outer:
|
||||
for _, j := range s {
|
||||
for _, k := range set {
|
||||
if k.HasRevision(j.Revision) {
|
||||
continue outer
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// hasArtifactUpdated returns true if any of the revisions in the current artifacts
|
||||
// does not match any of the artifacts in the updated artifacts
|
||||
// NOTE: artifactSet is a replacement for this. Remove this once it's not used
|
||||
// anywhere.
|
||||
func hasArtifactUpdated(current []*sourcev1.Artifact, updated []*sourcev1.Artifact) bool {
|
||||
if len(current) != len(updated) {
|
||||
return true
|
||||
|
|
|
@ -1,26 +1,40 @@
|
|||
/*
|
||||
Copyright 2021 The Flux 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 controllers
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
sourcev1 "github.com/fluxcd/source-controller/api/v1beta2"
|
||||
)
|
||||
|
||||
func TestHasUpdated(t *testing.T) {
|
||||
func Test_artifactSet_Diff(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
current []*sourcev1.Artifact
|
||||
updated []*sourcev1.Artifact
|
||||
current artifactSet
|
||||
updated artifactSet
|
||||
expected bool
|
||||
}{
|
||||
{
|
||||
name: "not updated single",
|
||||
current: []*sourcev1.Artifact{
|
||||
name: "one artifact, no diff",
|
||||
current: artifactSet{
|
||||
{
|
||||
Revision: "foo",
|
||||
},
|
||||
},
|
||||
updated: []*sourcev1.Artifact{
|
||||
updated: artifactSet{
|
||||
{
|
||||
Revision: "foo",
|
||||
},
|
||||
|
@ -28,13 +42,13 @@ func TestHasUpdated(t *testing.T) {
|
|||
expected: false,
|
||||
},
|
||||
{
|
||||
name: "updated single",
|
||||
current: []*sourcev1.Artifact{
|
||||
name: "one artifact, diff",
|
||||
current: artifactSet{
|
||||
{
|
||||
Revision: "foo",
|
||||
},
|
||||
},
|
||||
updated: []*sourcev1.Artifact{
|
||||
updated: artifactSet{
|
||||
{
|
||||
Revision: "bar",
|
||||
},
|
||||
|
@ -42,8 +56,8 @@ func TestHasUpdated(t *testing.T) {
|
|||
expected: true,
|
||||
},
|
||||
{
|
||||
name: "not updated multiple",
|
||||
current: []*sourcev1.Artifact{
|
||||
name: "multiple artifacts, no diff",
|
||||
current: artifactSet{
|
||||
{
|
||||
Revision: "foo",
|
||||
},
|
||||
|
@ -51,7 +65,7 @@ func TestHasUpdated(t *testing.T) {
|
|||
Revision: "bar",
|
||||
},
|
||||
},
|
||||
updated: []*sourcev1.Artifact{
|
||||
updated: artifactSet{
|
||||
{
|
||||
Revision: "foo",
|
||||
},
|
||||
|
@ -62,8 +76,8 @@ func TestHasUpdated(t *testing.T) {
|
|||
expected: false,
|
||||
},
|
||||
{
|
||||
name: "updated multiple",
|
||||
current: []*sourcev1.Artifact{
|
||||
name: "multiple artifacts, diff",
|
||||
current: artifactSet{
|
||||
{
|
||||
Revision: "foo",
|
||||
},
|
||||
|
@ -71,7 +85,7 @@ func TestHasUpdated(t *testing.T) {
|
|||
Revision: "bar",
|
||||
},
|
||||
},
|
||||
updated: []*sourcev1.Artifact{
|
||||
updated: artifactSet{
|
||||
{
|
||||
Revision: "foo",
|
||||
},
|
||||
|
@ -82,8 +96,8 @@ func TestHasUpdated(t *testing.T) {
|
|||
expected: true,
|
||||
},
|
||||
{
|
||||
name: "updated different artifact count",
|
||||
current: []*sourcev1.Artifact{
|
||||
name: "different artifact count",
|
||||
current: artifactSet{
|
||||
{
|
||||
Revision: "foo",
|
||||
},
|
||||
|
@ -91,7 +105,7 @@ func TestHasUpdated(t *testing.T) {
|
|||
Revision: "bar",
|
||||
},
|
||||
},
|
||||
updated: []*sourcev1.Artifact{
|
||||
updated: artifactSet{
|
||||
{
|
||||
Revision: "foo",
|
||||
},
|
||||
|
@ -101,7 +115,7 @@ func TestHasUpdated(t *testing.T) {
|
|||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := hasArtifactUpdated(tt.current, tt.updated)
|
||||
result := tt.current.Diff(tt.updated)
|
||||
if result != tt.expected {
|
||||
t.Errorf("Archive() result = %v, wantResult %v", result, tt.expected)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue