|
|
|
|
@ -51,34 +51,53 @@ func TestRenderDeliveryConfig(t *testing.T) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestCopyAndRenderTektonBaseOverwritesExistingMigrationOutput(t *testing.T) {
|
|
|
|
|
func TestCopyAndRenderDeliveryBasesOverwritesExistingMigrationOutput(t *testing.T) {
|
|
|
|
|
templateDir := t.TempDir()
|
|
|
|
|
repoDir := t.TempDir()
|
|
|
|
|
templateCatalog := filepath.Join(templateDir, "base", "tekton", "catalog-source.yaml")
|
|
|
|
|
outputCatalog := filepath.Join(repoDir, "base", "tekton", "catalog-source.yaml")
|
|
|
|
|
if err := os.MkdirAll(filepath.Dir(templateCatalog), 0755); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
files := []struct {
|
|
|
|
|
base, name, template, want string
|
|
|
|
|
}{
|
|
|
|
|
{"gateway", "route.yaml", "host: ${WEBHOOK_HOSTNAME}\npath: ${WEBHOOK_PATH}\n", "host: tekton.example.test\npath: /hooks/forgejo\n"},
|
|
|
|
|
{"tekton", "catalog-source.yaml", "url: ${TEKTON_CATALOG_REPO_URL}\nref: ${TEKTON_CATALOG_REPO_REF}\n", "url: https://catalog.example.test/tekton.git\nref: release\n"},
|
|
|
|
|
{"tekton-triggers", "trigger.yaml", "app: ${APP_NAME}\nrepo: ${APP_REPO_URL}\n", "app: demo\nrepo: https://git.example.test/demo.git\n"},
|
|
|
|
|
}
|
|
|
|
|
if err := os.MkdirAll(filepath.Dir(outputCatalog), 0755); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
for _, file := range files {
|
|
|
|
|
templatePath := filepath.Join(templateDir, "base", file.base, file.name)
|
|
|
|
|
outputPath := filepath.Join(repoDir, "base", file.base, file.name)
|
|
|
|
|
if err := os.MkdirAll(filepath.Dir(templatePath), 0755); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
if err := os.MkdirAll(filepath.Dir(outputPath), 0755); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
if err := os.WriteFile(templatePath, []byte(file.template), 0644); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
if err := os.WriteFile(outputPath, []byte("stale: output\n"), 0644); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if err := os.WriteFile(templateCatalog, []byte("url: ${TEKTON_CATALOG_REPO_URL}\nref: ${TEKTON_CATALOG_REPO_REF}\n"), 0644); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
if err := os.WriteFile(outputCatalog, []byte("stale: catalog\n"), 0644); err != nil {
|
|
|
|
|
customGatewayFile := filepath.Join(repoDir, "base", "gateway", "custom.yaml")
|
|
|
|
|
if err := os.WriteFile(customGatewayFile, []byte("custom: route\n"), 0644); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cfg := config.Config{Templates: config.TemplateConfig{TektonCatalogRepoURL: "https://catalog.example.test/tekton.git", TektonCatalogRepoRef: "release"}}
|
|
|
|
|
if err := copyAndRenderTektonBase(templateDir, repoDir, cfg); err != nil {
|
|
|
|
|
cfg := config.Config{
|
|
|
|
|
Delivery: config.DeliveryConfig{AppName: "demo", AppRepoURL: "https://git.example.test/demo.git", WebhookHostname: "tekton.example.test", WebhookPath: "/hooks/forgejo"},
|
|
|
|
|
Templates: config.TemplateConfig{TektonCatalogRepoURL: "https://catalog.example.test/tekton.git", TektonCatalogRepoRef: "release"},
|
|
|
|
|
}
|
|
|
|
|
if err := copyAndRenderDeliveryBases(templateDir, repoDir, cfg); err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
content, err := os.ReadFile(outputCatalog)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
for _, file := range files {
|
|
|
|
|
content, err := os.ReadFile(filepath.Join(repoDir, "base", file.base, file.name))
|
|
|
|
|
if err != nil || string(content) != file.want {
|
|
|
|
|
t.Fatalf("%s was not copied and rendered: %q, %v", file.base, content, err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if string(content) != "url: https://catalog.example.test/tekton.git\nref: release\n" {
|
|
|
|
|
t.Fatalf("Tekton catalog source was not copied and rendered: %q", content)
|
|
|
|
|
content, err := os.ReadFile(customGatewayFile)
|
|
|
|
|
if err != nil || string(content) != "custom: route\n" {
|
|
|
|
|
t.Fatalf("custom gateway file was not preserved: %q, %v", content, err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|