Files
deploy/test/e2e/jsonnet_test.go
zeekayandHanzo Dev 1ab6e799c1 cd: the module is github.com/hanzoai/cd, where it is actually hosted
go.mod still declared `module github.com/hanzoai/deploy` after the repo was
renamed. A Go module path is not cosmetic — it is the resolvable location. So
`go get github.com/hanzoai/cd` could not work, and anything importing this
module had to spell a name that no longer exists at that address. The build log
of v3.6.0 is where it surfaced: the compiler was still emitting
github.com/hanzoai/deploy/cmd/cd/commands.

3541 import paths across 690 .go, 19 .proto, 4 .yaml, 3 .sh, 2 .mod, Procfile
and Makefile. Plus the 62 ghcr.io/hanzoai/deploy image references, moved to
ghcr.io/hanzoai/cd to match hanzo.yml's build target — a distinct string from
the module path, replaced separately so neither could clobber the other.

go mod tidy clean, CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ./... clean.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 21:16:24 -07:00

122 lines
3.8 KiB
Go

package e2e
import (
"testing"
. "github.com/hanzoai/cd/gitops-engine/pkg/sync/common"
"github.com/hanzoai/cd/gitops-engine/pkg/utils/kube"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
. "github.com/hanzoai/cd/pkg/apis/application/v1alpha1"
. "github.com/hanzoai/cd/test/e2e/fixture"
. "github.com/hanzoai/cd/test/e2e/fixture/app"
"github.com/hanzoai/cd/util/errors"
)
func TestJsonnetAppliedCorrectly(t *testing.T) {
Given(t).
Path("jsonnet-tla").
When().
CreateApp().
Sync().
Then().
Expect(SyncStatusIs(SyncStatusCodeSynced)).
And(func(app *Application) {
manifests, err := RunCli("app", "manifests", app.Name, "--source", "live")
require.NoError(t, err)
resources, err := kube.SplitYAML([]byte(manifests))
require.NoError(t, err)
index := -1
for i := range resources {
if resources[i].GetKind() == kube.DeploymentKind {
index = i
break
}
}
assert.Greater(t, index, -1)
deployment := resources[index]
assert.Equal(t, "jsonnet-guestbook-ui", deployment.GetName())
assert.Equal(t, int64(1), *kube.GetDeploymentReplicas(deployment))
})
}
func TestJsonnetTlaParameterAppliedCorrectly(t *testing.T) {
Given(t).
Path("jsonnet-tla").
When().
CreateApp("--jsonnet-tla-str", "name=testing-tla", "--jsonnet-tla-code", "replicas=0").
Sync().
Then().
Expect(SyncStatusIs(SyncStatusCodeSynced)).
And(func(app *Application) {
manifests, err := RunCli("app", "manifests", app.Name, "--source", "live")
require.NoError(t, err)
resources, err := kube.SplitYAML([]byte(manifests))
require.NoError(t, err)
index := -1
for i := range resources {
if resources[i].GetKind() == kube.DeploymentKind {
index = i
break
}
}
assert.Greater(t, index, -1)
deployment := resources[index]
assert.Equal(t, "testing-tla", deployment.GetName())
assert.Equal(t, int64(0), *kube.GetDeploymentReplicas(deployment))
})
}
func TestJsonnetTlaEnv(t *testing.T) {
ctx := Given(t)
ctx.
Path("jsonnet-tla-cm").
When().
CreateApp("--jsonnet-tla-str", "foo=$CD_APP_NAME", "--jsonnet-tla-code", "bar='$CD_APP_NAME'").
Sync().
Then().
Expect(OperationPhaseIs(OperationSucceeded)).
Expect(SyncStatusIs(SyncStatusCodeSynced)).
And(func(_ *Application) {
assert.Equal(t, ctx.GetName(), errors.NewHandler(t).FailOnErr(Run(".", "kubectl", "-n", ctx.DeploymentNamespace(), "get", "cm", "my-map", "-o", "jsonpath={.data.foo}")).(string))
assert.Equal(t, ctx.GetName(), errors.NewHandler(t).FailOnErr(Run(".", "kubectl", "-n", ctx.DeploymentNamespace(), "get", "cm", "my-map", "-o", "jsonpath={.data.bar}")).(string))
})
}
func TestJsonnetExtVarEnv(t *testing.T) {
ctx := Given(t)
ctx.
Path("jsonnet-ext-var").
When().
CreateApp("--jsonnet-ext-var-str", "foo=$CD_APP_NAME", "--jsonnet-ext-var-code", "bar='$CD_APP_NAME'").
Sync().
Then().
Expect(OperationPhaseIs(OperationSucceeded)).
Expect(SyncStatusIs(SyncStatusCodeSynced)).
And(func(_ *Application) {
assert.Equal(t, ctx.GetName(), errors.NewHandler(t).FailOnErr(Run(".", "kubectl", "-n", ctx.DeploymentNamespace(), "get", "cm", "my-map", "-o", "jsonpath={.data.foo}")).(string))
assert.Equal(t, ctx.GetName(), errors.NewHandler(t).FailOnErr(Run(".", "kubectl", "-n", ctx.DeploymentNamespace(), "get", "cm", "my-map", "-o", "jsonpath={.data.bar}")).(string))
})
}
// Jsonnet file located in nested sub directory uses import
func TestJsonnetNestedDirWithImports(t *testing.T) {
Given(t).
Path("jsonnet-nested-dir-with-imports/apps").
When().
CreateApp("--directory-recurse").
Sync().
Then().
Expect(OperationPhaseIs(OperationSucceeded)).
Expect(SyncStatusIs(SyncStatusCodeSynced)).
Expect(ResourceSyncStatusIs("Namespace", "hello-world", SyncStatusCodeSynced)).
Expect(ResourceSyncStatusIs("Namespace", "hello-root", SyncStatusCodeSynced))
}