Skip to content

Commit 67eae64

Browse files
committed
Refactor templating e2e test to not depend on CLI output
Signed-off-by: Philip Laine <[email protected]>
1 parent decbe9d commit 67eae64

File tree

2 files changed

+32
-30
lines changed

2 files changed

+32
-30
lines changed

src/test/e2e/04_create_templating_test.go

+32-28
Original file line numberDiff line numberDiff line change
@@ -5,53 +5,42 @@
55
package test
66

77
import (
8+
"context"
89
"fmt"
910
"os"
1011
"path/filepath"
1112
"testing"
1213

1314
"github.com/stretchr/testify/require"
15+
16+
"github.com/zarf-dev/zarf/src/api/v1alpha1"
17+
layout2 "github.com/zarf-dev/zarf/src/internal/packager2/layout"
1418
)
1519

1620
func TestCreateTemplating(t *testing.T) {
1721
t.Log("E2E: Create Templating")
1822

19-
// run `zarf package create` with a specified image cache location
20-
tmpdir := t.TempDir()
21-
decompressPath := filepath.Join(tmpdir, ".package-decompressed")
22-
sbomPath := filepath.Join(tmpdir, ".sbom-location")
23-
24-
pkgName := fmt.Sprintf("zarf-package-templating-%s.tar.zst", e2e.Arch)
23+
sbomPath := t.TempDir()
24+
outPath := t.TempDir()
25+
templatingPath := filepath.Join(outPath, fmt.Sprintf("zarf-package-templating-%s.tar.zst", e2e.Arch))
26+
fileFoldersPath := filepath.Join(outPath, fmt.Sprintf("zarf-package-file-folders-templating-sbom-%s.tar.zst", e2e.Arch))
2527

2628
// Test that not specifying a package variable results in an error
27-
_, _, err := e2e.Zarf(t, "package", "create", "src/test/packages/04-templating", "--confirm")
29+
_, _, err := e2e.Zarf(t, "package", "create", "src/test/packages/04-templating", "-o", outPath, "--confirm")
2830
require.Error(t, err)
2931

3032
// Test a simple package variable example with `--set` (will fail to pull an image if this is not set correctly)
31-
stdOut, stdErr, err := e2e.Zarf(t, "package", "create", "src/test/packages/04-templating", "--set", "PODINFO_VERSION=6.4.0", "--confirm")
32-
require.NoError(t, err, stdOut, stdErr)
33-
34-
stdOut, stdErr, err = e2e.Zarf(t, "t", "archiver", "decompress", pkgName, decompressPath, "--unarchive-all")
35-
require.NoError(t, err, stdOut, stdErr)
33+
_, _, err = e2e.Zarf(t, "package", "create", "src/test/packages/04-templating", "-o", outPath, "--set", "PODINFO_VERSION=6.4.0", "--confirm")
34+
require.NoError(t, err)
3635

37-
// Check that the constant in the zarf.yaml is replaced correctly
38-
builtConfig, err := os.ReadFile(decompressPath + "/zarf.yaml")
36+
pkgLayout, err := layout2.LoadFromTar(context.Background(), templatingPath, layout2.PackageLayoutOptions{})
3937
require.NoError(t, err)
40-
require.Contains(t, string(builtConfig), "name: PODINFO_VERSION\n value: 6.4.0")
38+
expectedConstant := v1alpha1.Constant{Name: "PODINFO_VERSION", Value: "6.4.0", Pattern: "^[\\w\\-\\.]+$"}
39+
require.Contains(t, pkgLayout.Pkg.Constants, expectedConstant)
4140

4241
// Test that files and file folders template and handle SBOMs correctly
43-
stdOut, stdErr, err = e2e.Zarf(t, "package", "create", "src/test/packages/04-file-folders-templating-sbom/", "--sbom-out", sbomPath, "--confirm")
44-
require.NoError(t, err, stdOut, stdErr)
45-
require.Contains(t, stdErr, "Creating SBOMs for 0 images and 2 components with files.")
46-
47-
fileFoldersPkgName := fmt.Sprintf("zarf-package-file-folders-templating-sbom-%s.tar.zst", e2e.Arch)
48-
49-
// Deploy the package and look for the variables in the output
50-
stdOut, stdErr, err = e2e.Zarf(t, "package", "deploy", fileFoldersPkgName, "--set", "DOGGO=doggy", "--set", "KITTEH=meowza", "--set", "PANDA=pandemonium", "--confirm")
51-
require.NoError(t, err, stdOut, stdErr)
52-
require.Contains(t, stdErr, "A doggy barks!")
53-
require.Contains(t, stdErr, " - meowza")
54-
require.Contains(t, stdErr, "# Total pandemonium")
42+
_, _, err = e2e.Zarf(t, "package", "create", "src/test/packages/04-file-folders-templating-sbom/", "-o", outPath, "--sbom-out", sbomPath, "--confirm")
43+
require.NoError(t, err)
5544

5645
// Ensure that the `requirements.txt` files are discovered correctly
5746
require.FileExists(t, filepath.Join(sbomPath, "file-folders-templating-sbom", "compare.html"))
@@ -65,5 +54,20 @@ func TestCreateTemplating(t *testing.T) {
6554
require.NoError(t, err)
6655
require.Contains(t, string(filesJSON), "pandas")
6756

68-
e2e.CleanFiles(t, pkgName, fileFoldersPkgName)
57+
// Deploy the package and look for the variables in the output
58+
workingPath := t.TempDir()
59+
_, _, err = e2e.ZarfInDir(t, workingPath, "package", "deploy", fileFoldersPath, "--set", "DOGGO=doggy", "--set", "KITTEH=meowza", "--set", "PANDA=pandemonium", "--confirm")
60+
require.NoError(t, err)
61+
62+
b, err := os.ReadFile(filepath.Join(workingPath, "temp", "requirements.txt"))
63+
require.NoError(t, err)
64+
require.Equal(t, "# Total pandemonium\npandas==1.5.0\n", string(b))
65+
66+
b, err = os.ReadFile(filepath.Join(workingPath, "temp", "include-files", "simple.txt"))
67+
require.NoError(t, err)
68+
require.Equal(t, "A doggy barks!\n", string(b))
69+
70+
b, err = os.ReadFile(filepath.Join(workingPath, "temp", "include-files", "something.yaml"))
71+
require.NoError(t, err)
72+
require.Equal(t, "something:\n - a\n - meowza\n - meows\n", string(b))
6973
}

src/test/packages/04-file-folders-templating-sbom/zarf.yaml

-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ components:
1818
after:
1919
- cmd: cat temp/include-files/simple.txt
2020
- cmd: cat temp/include-files/something.yaml
21-
- cmd: rm -r temp
2221
- name: files
2322
required: true
2423
files:
@@ -28,4 +27,3 @@ components:
2827
onDeploy:
2928
after:
3029
- cmd: cat temp/requirements.txt
31-
- cmd: rm -r temp

0 commit comments

Comments
 (0)