Skip to content

Commit

Permalink
added a basic render failure test
Browse files Browse the repository at this point in the history
  • Loading branch information
droot committed Nov 1, 2022
1 parent e99f70f commit 6088d7a
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
62 changes: 62 additions & 0 deletions porch/test/e2e/e2e_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -556,6 +556,68 @@ func (t *PorchSuite) TestUpdateResources(ctx context.Context) {
}
}

// Test will initialize an empty package, update its resources, adding a function
// to the Kptfile's pipeline, and then check that the package was re-rendered.
func (t *PorchSuite) TestRenderFailureOnPkgUpdate(ctx context.Context) {
const (
repository = "re-render-test"
packageName = "simple-package"
description = "description"
)

t.registerMainGitRepositoryF(ctx, repository)

// Create a new package (via init)
pr := &porchapi.PackageRevision{
TypeMeta: metav1.TypeMeta{
Kind: "PackageRevision",
APIVersion: porchapi.SchemeGroupVersion.String(),
},
ObjectMeta: metav1.ObjectMeta{
Namespace: t.namespace,
},
Spec: porchapi.PackageRevisionSpec{
PackageName: packageName,
WorkspaceName: description,
RepositoryName: repository,
},
}
t.CreateF(ctx, pr)

// Get the package resources
var newPackage porchapi.PackageRevisionResources
t.GetF(ctx, client.ObjectKey{
Namespace: t.namespace,
Name: pr.Name,
}, &newPackage)

// Add a new resource
filename := filepath.Join("testdata", "render-status", "validate.yaml")
validationFn, err := os.ReadFile(filename)
if err != nil {
t.Fatalf("Failed to read validation function input from %q: %v", filename, err)
}
newPackage.Spec.Resources["validate.yaml"] = string(validationFn)

// Add function into a pipeline
kptfile := t.ParseKptfileF(&newPackage)
if kptfile.Pipeline == nil {
kptfile.Pipeline = &kptfilev1.Pipeline{}
}
kptfile.Pipeline.Validators = append(kptfile.Pipeline.Validators, kptfilev1.Function{
Image: "gcr.io/kpt-fn/starlark:v0.4.3",
Name: "always-fail",
ConfigPath: "validate.yaml",
})

t.SaveKptfileF(&newPackage, kptfile)

t.UpdateF(ctx, &newPackage)

renderStatus := newPackage.Status.RenderStatus
assert.NotEmpty(t, renderStatus.Err, "render error must be not empty for failed render operation.")
}

func (t *PorchSuite) TestFunctionRepository(ctx context.Context) {
repo := &configapi.Repository{
ObjectMeta: metav1.ObjectMeta{
Expand Down
8 changes: 8 additions & 0 deletions porch/test/e2e/testdata/render-status/validate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: fn.kpt.dev/v1alpha1
kind: StarlarkRun
metadata:
name: validate
annotations:
config.kubernetes.io/local-config: "true"
source: |-
fail("Validation always fails")

0 comments on commit 6088d7a

Please sign in to comment.