Skip to content

Commit

Permalink
Ensure releases are not missing in Kilnfile
Browse files Browse the repository at this point in the history
  • Loading branch information
pvaramballypivot committed Mar 27, 2024
1 parent 2305b52 commit c55f58f
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 6 deletions.
18 changes: 16 additions & 2 deletions pkg/cargo/validate.go
Expand Up @@ -12,14 +12,14 @@ func Validate(spec Kilnfile, lock KilnfileLock) []error {

for index, componentSpec := range spec.Releases {
if componentSpec.Name == "" {
result = append(result, fmt.Errorf("spec at index %d missing name", index))
result = append(result, fmt.Errorf("release at index %d missing name in spec", index))
continue
}

componentLock, err := lock.FindBOSHReleaseWithName(componentSpec.Name)
if err != nil {
result = append(result,
fmt.Errorf("component spec for release %q not found in lock", componentSpec.Name))
fmt.Errorf("release %q not found in lock", componentSpec.Name))
continue
}

Expand All @@ -28,6 +28,20 @@ func Validate(spec Kilnfile, lock KilnfileLock) []error {
}
}

for index, componentLock := range lock.Releases {
if componentLock.Name == "" {
result = append(result, fmt.Errorf("release at index %d missing name in lock", index))
continue
}

_, err := spec.BOSHReleaseTarballSpecification(componentLock.Name)
if err != nil {
result = append(result,
fmt.Errorf("release %q not found in spec", componentLock.Name))
continue
}
}

result = append(result, ensureRemoteSourceExistsForEachReleaseLock(spec, lock)...)

if len(result) > 0 {
Expand Down
57 changes: 53 additions & 4 deletions pkg/cargo/validate_test.go
Expand Up @@ -10,22 +10,44 @@ const (
someReleaseSourceID = "some-release-source-id"
)

func TestValidate_MissingName(t *testing.T) {
func TestValidate_MissingNameInSpec(t *testing.T) {
t.Parallel()
please := NewWithT(t)
results := Validate(Kilnfile{
ReleaseSources: []ReleaseSourceConfig{
{ID: someReleaseSourceID},
},
Releases: []BOSHReleaseTarballSpecification{
{},
{Name: ""},
{Name: "banana"},
},
}, KilnfileLock{
Releases: []BOSHReleaseTarballLock{
{Name: "apple", Version: "1.2.3", RemoteSource: someReleaseSourceID},
{Name: "banana", Version: "1.2.3", RemoteSource: someReleaseSourceID},
},
})
please.Expect(results).To(HaveLen(1))
please.Expect(results).To(HaveLen(2))
}

func TestValidate_MissingNameInLock(t *testing.T) {
t.Parallel()
please := NewWithT(t)
results := Validate(Kilnfile{
ReleaseSources: []ReleaseSourceConfig{
{ID: someReleaseSourceID},
},
Releases: []BOSHReleaseTarballSpecification{
{Name: "apple"},
{Name: "banana"},
},
}, KilnfileLock{
Releases: []BOSHReleaseTarballLock{
{Name: "", Version: "1.2.3", RemoteSource: someReleaseSourceID},
{Name: "banana", Version: "1.2.3", RemoteSource: someReleaseSourceID},
},
})
please.Expect(results).To(HaveLen(2))
}

func TestValidate_FloatingRelease(t *testing.T) {
Expand All @@ -46,14 +68,41 @@ func TestValidate_FloatingRelease(t *testing.T) {
please.Expect(results).To(HaveLen(0))
}

func TestValidate_MissingSpec(t *testing.T) {
t.Parallel()
please := NewWithT(t)
results := Validate(Kilnfile{
ReleaseSources: []ReleaseSourceConfig{
{ID: someReleaseSourceID},
},
Releases: []BOSHReleaseTarballSpecification{
{Name: "banana"},
},
}, KilnfileLock{
Releases: []BOSHReleaseTarballLock{
{Name: "apple", Version: "1.2.3", RemoteSource: someReleaseSourceID},
{Name: "banana", Version: "1.2.3", RemoteSource: someReleaseSourceID},
},
})
please.Expect(results).To(HaveLen(1))
}

func TestValidate_MissingLock(t *testing.T) {
t.Parallel()
please := NewWithT(t)
results := Validate(Kilnfile{
ReleaseSources: []ReleaseSourceConfig{
{ID: someReleaseSourceID},
},
Releases: []BOSHReleaseTarballSpecification{
{Name: "banana", Version: "1.1.*"},
{Name: "apple", Version: "1.1.*"},
},
}, KilnfileLock{})
}, KilnfileLock{
Releases: []BOSHReleaseTarballLock{
{Name: "banana", Version: "1.1.3", RemoteSource: someReleaseSourceID},
},
})
please.Expect(results).To(HaveLen(1))
}

Expand Down

0 comments on commit c55f58f

Please sign in to comment.