From 0b4311d5cedfe776451f97bfa9185214e10e52aa Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sat, 26 Nov 2022 14:00:37 +0100 Subject: [PATCH] manifest: improve test output and use const Use consts to make clear these values are fixed, and improve the output to make it clearer which part is the expected output, and which part the actual. Before this: === RUN TestManifest manifest_test.go:87: manifest bytes not equal: "{\n \"schemaVersion\": 2,\n \"mediaType\": \"application/vnd.oci.image.manifest.v1+json\",\n \"config\": {\n \"mediaType\": \"application/vnd.oci.image.config.v1+json\",\n \"size\": 985,\n \"digest\": \"sha256:1a9ec845ee94c202b2d5da74a24f0ed2058318bfa9879fa541efaecba272e86b\",\n \"annotations\": {\n \"apple\": \"orange\"\n }\n },\n \"layers\": [\n {\n \"mediaType\": \"application/vnd.oci.image.layer.v1.tar+gzip\",\n \"size\": 153263,\n \"digest\": \"sha256:62d8908bee94c202b2d35224a221aaa2058318bfa9879fa541efaecba272331b\",\n \"annotations\": {\n \"lettuce\": \"wrap\"\n }\n }\n ],\n \"annotations\": {\n \"hot\": \"potato\"\n }\n}" != "{\n \"schemaVersion\": 2,\n \"mediaType\": \"application/vnd.oci.image.manifest.v1+json\",\n \"config\": {\n \"mediaType\": \"application/vnd.oci.image.config.v1+json\",\n \"size\": 985,\n \"digest\": \"sha256:1a9ec845ee94c202b2d5da74a24f0ed2058318bfa9879fa541efaecba272e86b\",\n \"annotations\": {\n \"apple\": \"orange\"\n }\n },\n \"layers\": [\n {\n \"mediaType\": \"application/vnd.oci.image.layer.v1.tar+gzip\",\n \"size\": 153263,\n \"digest\": \"sha256:62d8908bee94c202b2d35224a221aaa2058318bfa9879fa541efaecba272331b\",\n \"annotations\": {\n \"lettuce\": \"wrap\"\n }\n }\n ],\n \"annotations\": {\n \"hot\": \"potato\"\n }\n}" --- FAIL: TestManifest (0.00s) After this: === RUN TestManifest manifest_test.go:72: manifest bytes not equal: expected: { "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "config": { "mediaType": "application/vnd.docker.container.image.v1+json", "size": 985, "digest": "sha256:1a9ec845ee94c202b2d5da74a24f0ed2058318bfa9879fa541efaecba272e86b" }, "layers": [ { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 153263, "digest": "sha256:62d8908bee94c202b2d35224a221aaa2058318bfa9879fa541efaecba272331b" } ] } actual: { "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "config": { "mediaType": "application/vnd.docker.container.image.v1+json", "size": 985, "digest": "sha256:1a9ec845ee94c202b2d5da74a24f0ed2058318bfa9879fa541efaecba272e86b" }, "layers": [ { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 153263, "digest": "sha256:62d8908bee94c202b2d35224a221aaa2058318bfa9879fa541efaecba272331b" } ] } --- FAIL: TestManifest (0.00s) Signed-off-by: Sebastiaan van Stijn --- manifest/manifestlist/manifestlist_test.go | 28 +++++++++++----------- manifest/ocischema/manifest_test.go | 14 +++++------ manifest/schema1/manifest_test.go | 6 ++--- manifest/schema2/manifest_test.go | 14 +++++------ 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/manifest/manifestlist/manifestlist_test.go b/manifest/manifestlist/manifestlist_test.go index efbb72e8..9aacd54a 100644 --- a/manifest/manifestlist/manifestlist_test.go +++ b/manifest/manifestlist/manifestlist_test.go @@ -12,7 +12,7 @@ import ( v1 "github.com/opencontainers/image-spec/specs-go/v1" ) -var expectedManifestListSerialization = []byte(`{ +const expectedManifestListSerialization = `{ "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json", "manifests": [ @@ -38,7 +38,7 @@ var expectedManifestListSerialization = []byte(`{ } } ] -}`) +}` func makeTestManifestList(t *testing.T, mediaType string) ([]ManifestDescriptor, *DeserializedManifestList) { manifestDescriptors := []ManifestDescriptor{ @@ -85,17 +85,17 @@ func TestManifestList(t *testing.T) { // Check that the canonical field is the same as json.MarshalIndent // with these parameters. - p, err := json.MarshalIndent(&deserialized.ManifestList, "", " ") + expected, err := json.MarshalIndent(&deserialized.ManifestList, "", " ") if err != nil { t.Fatalf("error marshaling manifest list: %v", err) } - if !bytes.Equal(p, canonical) { - t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(p)) + if !bytes.Equal(expected, canonical) { + t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", string(expected), string(canonical)) } // Check that the canonical field has the expected value. - if !bytes.Equal(expectedManifestListSerialization, canonical) { - t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(expectedManifestListSerialization)) + if !bytes.Equal([]byte(expectedManifestListSerialization), canonical) { + t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", expectedManifestListSerialization, string(canonical)) } var unmarshalled DeserializedManifestList @@ -136,7 +136,7 @@ func TestManifestList(t *testing.T) { // Requires changes to distribution/distribution/manifest/manifestlist.ManifestList and .ManifestDescriptor // and associated serialization APIs in manifestlist.go. Or split the OCI index and // docker manifest list implementations, which would require a lot of refactoring. -var expectedOCIImageIndexSerialization = []byte(`{ +const expectedOCIImageIndexSerialization = `{ "schemaVersion": 2, "mediaType": "application/vnd.oci.image.index.v1+json", "manifests": [ @@ -177,7 +177,7 @@ var expectedOCIImageIndexSerialization = []byte(`{ } } ] -}`) +}` func makeTestOCIImageIndex(t *testing.T, mediaType string) ([]ManifestDescriptor, *DeserializedManifestList) { manifestDescriptors := []ManifestDescriptor{ @@ -234,17 +234,17 @@ func TestOCIImageIndex(t *testing.T) { // Check that the canonical field is the same as json.MarshalIndent // with these parameters. - p, err := json.MarshalIndent(&deserialized.ManifestList, "", " ") + expected, err := json.MarshalIndent(&deserialized.ManifestList, "", " ") if err != nil { t.Fatalf("error marshaling manifest list: %v", err) } - if !bytes.Equal(p, canonical) { - t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(p)) + if !bytes.Equal(expected, canonical) { + t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", string(expected), string(canonical)) } // Check that the canonical field has the expected value. - if !bytes.Equal(expectedOCIImageIndexSerialization, canonical) { - t.Fatalf("manifest bytes not equal to expected: %q != %q", string(canonical), string(expectedOCIImageIndexSerialization)) + if !bytes.Equal([]byte(expectedOCIImageIndexSerialization), canonical) { + t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", expectedOCIImageIndexSerialization, string(canonical)) } var unmarshalled DeserializedManifestList diff --git a/manifest/ocischema/manifest_test.go b/manifest/ocischema/manifest_test.go index b1fdd26a..528e303c 100644 --- a/manifest/ocischema/manifest_test.go +++ b/manifest/ocischema/manifest_test.go @@ -13,7 +13,7 @@ import ( v1 "github.com/opencontainers/image-spec/specs-go/v1" ) -var expectedManifestSerialization = []byte(`{ +const expectedManifestSerialization = `{ "schemaVersion": 2, "mediaType": "application/vnd.oci.image.manifest.v1+json", "config": { @@ -37,7 +37,7 @@ var expectedManifestSerialization = []byte(`{ "annotations": { "hot": "potato" } -}`) +}` func makeTestManifest(mediaType string) Manifest { return Manifest{ @@ -79,17 +79,17 @@ func TestManifest(t *testing.T) { // Check that the canonical field is the same as json.MarshalIndent // with these parameters. - p, err := json.MarshalIndent(&mfst, "", " ") + expected, err := json.MarshalIndent(&mfst, "", " ") if err != nil { t.Fatalf("error marshaling manifest: %v", err) } - if !bytes.Equal(p, canonical) { - t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(p)) + if !bytes.Equal(expected, canonical) { + t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", string(expected), string(canonical)) } // Check that canonical field matches expected value. - if !bytes.Equal(expectedManifestSerialization, canonical) { - t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(expectedManifestSerialization)) + if !bytes.Equal([]byte(expectedManifestSerialization), canonical) { + t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", expectedManifestSerialization, string(canonical)) } var unmarshalled DeserializedManifest diff --git a/manifest/schema1/manifest_test.go b/manifest/schema1/manifest_test.go index 422395bd..ddc2a0b8 100644 --- a/manifest/schema1/manifest_test.go +++ b/manifest/schema1/manifest_test.go @@ -21,13 +21,13 @@ func TestManifestMarshaling(t *testing.T) { // Check that the all field is the same as json.MarshalIndent with these // parameters. - p, err := json.MarshalIndent(env.signed, "", " ") + expected, err := json.MarshalIndent(env.signed, "", " ") if err != nil { t.Fatalf("error marshaling manifest: %v", err) } - if !bytes.Equal(p, env.signed.all) { - t.Fatalf("manifest bytes not equal: %q != %q", string(env.signed.all), string(p)) + if !bytes.Equal(expected, env.signed.all) { + t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", string(expected), string(env.signed.all)) } } diff --git a/manifest/schema2/manifest_test.go b/manifest/schema2/manifest_test.go index 4425d74b..da7f43fd 100644 --- a/manifest/schema2/manifest_test.go +++ b/manifest/schema2/manifest_test.go @@ -10,7 +10,7 @@ import ( "github.com/distribution/distribution/v3/manifest" ) -var expectedManifestSerialization = []byte(`{ +const expectedManifestSerialization = `{ "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "config": { @@ -25,7 +25,7 @@ var expectedManifestSerialization = []byte(`{ "digest": "sha256:62d8908bee94c202b2d35224a221aaa2058318bfa9879fa541efaecba272331b" } ] -}`) +}` func makeTestManifest(mediaType string) Manifest { return Manifest{ @@ -64,17 +64,17 @@ func TestManifest(t *testing.T) { // Check that the canonical field is the same as json.MarshalIndent // with these parameters. - p, err := json.MarshalIndent(&mfst, "", " ") + expected, err := json.MarshalIndent(&mfst, "", " ") if err != nil { t.Fatalf("error marshaling manifest: %v", err) } - if !bytes.Equal(p, canonical) { - t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(p)) + if !bytes.Equal(expected, canonical) { + t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", string(expected), string(canonical)) } // Check that canonical field matches expected value. - if !bytes.Equal(expectedManifestSerialization, canonical) { - t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(expectedManifestSerialization)) + if !bytes.Equal([]byte(expectedManifestSerialization), canonical) { + t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", expectedManifestSerialization, string(canonical)) } var unmarshalled DeserializedManifest