First commit
diff --git a/genmanifest/genmanifest_test.go b/genmanifest/genmanifest_test.go
new file mode 100644
index 0000000..81b102f
--- /dev/null
+++ b/genmanifest/genmanifest_test.go
@@ -0,0 +1,79 @@
+package main
+
+import (
+ "bytes"
+ "crypto/sha256"
+ "encoding/hex"
+ "io"
+ "os"
+ "testing"
+)
+
+type Manifest struct {
+ name string
+ templateFile string
+ expectedFile string
+ dependencies []string
+}
+
+func TestManifestConversions(t *testing.T) {
+ testManifests := []Manifest{
+ {
+ name: "ManifestSmall",
+ templateFile: "testdata/manifest_small1.gjson",
+ expectedFile: "testdata/manifest_small1_expected.json",
+ dependencies: []string{"AAA", "BBB", "D"},
+ },
+ {
+ name: "ManifestFrozenChromium",
+ templateFile: "testdata/manifest_frozen.gjson",
+ expectedFile: "testdata/manifest_frozen_chromium_expected.json",
+ dependencies: []string{"CHROMIUM"},
+ },
+ {
+ name: "ManifestFrozenGecko",
+ templateFile: "testdata/manifest_frozen.gjson",
+ expectedFile: "testdata/manifest_frozen_gecko_expected.json",
+ dependencies: []string{"GECKO"},
+ },
+ }
+
+ for _, m := range testManifests {
+ t.Run(m.name, func(t *testing.T) {
+ template, err := os.Open(m.templateFile)
+ if err != nil {
+ t.Fatalf("Can't open test file: %v", err)
+ }
+ defer template.Close()
+
+ expected, err := os.Open(m.expectedFile)
+ if err != nil {
+ t.Fatalf("Can't open expected file: %v", err)
+ }
+ defer expected.Close()
+
+ dest := bytes.NewBufferString("")
+
+ WriteManifest(template, dest, m.dependencies)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ h1 := sha256.New()
+ if _, err := io.Copy(h1, dest); err != nil {
+ t.Fatalf("Can't prepare sha256 sum of the result: %v", err)
+ }
+
+ h2 := sha256.New()
+ if _, err := io.Copy(h2, expected); err != nil {
+ t.Fatalf("Can't prepare sha256 sum of the expected file: %v", err)
+ }
+
+ sum1 := h1.Sum(nil)
+ sum2 := h2.Sum(nil)
+ if bytes.Compare(sum1, sum2) != 0 {
+ t.Fatalf("The expected manifest file (sha256: %v) differs from what we got (sha256: %v).", hex.EncodeToString(sum2), hex.EncodeToString(sum1))
+ }
+ })
+ }
+}