Merge pull request #3807 from thaJeztah/replace_types_for_oci_step1
minor fixes and enhancementsmaster
						commit
						ac302d9ce5
					
				|  | @ -12,7 +12,7 @@ import ( | ||||||
| 	v1 "github.com/opencontainers/image-spec/specs-go/v1" | 	v1 "github.com/opencontainers/image-spec/specs-go/v1" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var expectedManifestListSerialization = []byte(`{ | const expectedManifestListSerialization = `{ | ||||||
|    "schemaVersion": 2, |    "schemaVersion": 2, | ||||||
|    "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json", |    "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json", | ||||||
|    "manifests": [ |    "manifests": [ | ||||||
|  | @ -38,7 +38,7 @@ var expectedManifestListSerialization = []byte(`{ | ||||||
|          } |          } | ||||||
|       } |       } | ||||||
|    ] |    ] | ||||||
| }`) | }` | ||||||
| 
 | 
 | ||||||
| func makeTestManifestList(t *testing.T, mediaType string) ([]ManifestDescriptor, *DeserializedManifestList) { | func makeTestManifestList(t *testing.T, mediaType string) ([]ManifestDescriptor, *DeserializedManifestList) { | ||||||
| 	manifestDescriptors := []ManifestDescriptor{ | 	manifestDescriptors := []ManifestDescriptor{ | ||||||
|  | @ -85,17 +85,17 @@ func TestManifestList(t *testing.T) { | ||||||
| 
 | 
 | ||||||
| 	// Check that the canonical field is the same as json.MarshalIndent
 | 	// Check that the canonical field is the same as json.MarshalIndent
 | ||||||
| 	// with these parameters.
 | 	// with these parameters.
 | ||||||
| 	p, err := json.MarshalIndent(&deserialized.ManifestList, "", "   ") | 	expected, err := json.MarshalIndent(&deserialized.ManifestList, "", "   ") | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("error marshaling manifest list: %v", err) | 		t.Fatalf("error marshaling manifest list: %v", err) | ||||||
| 	} | 	} | ||||||
| 	if !bytes.Equal(p, canonical) { | 	if !bytes.Equal(expected, canonical) { | ||||||
| 		t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(p)) | 		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.
 | 	// Check that the canonical field has the expected value.
 | ||||||
| 	if !bytes.Equal(expectedManifestListSerialization, canonical) { | 	if !bytes.Equal([]byte(expectedManifestListSerialization), canonical) { | ||||||
| 		t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(expectedManifestListSerialization)) | 		t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", expectedManifestListSerialization, string(canonical)) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	var unmarshalled DeserializedManifestList | 	var unmarshalled DeserializedManifestList | ||||||
|  | @ -136,7 +136,7 @@ func TestManifestList(t *testing.T) { | ||||||
| // Requires changes to distribution/distribution/manifest/manifestlist.ManifestList and .ManifestDescriptor
 | // Requires changes to distribution/distribution/manifest/manifestlist.ManifestList and .ManifestDescriptor
 | ||||||
| // and associated serialization APIs in manifestlist.go. Or split the OCI index and
 | // and associated serialization APIs in manifestlist.go. Or split the OCI index and
 | ||||||
| // docker manifest list implementations, which would require a lot of refactoring.
 | // docker manifest list implementations, which would require a lot of refactoring.
 | ||||||
| var expectedOCIImageIndexSerialization = []byte(`{ | const expectedOCIImageIndexSerialization = `{ | ||||||
|    "schemaVersion": 2, |    "schemaVersion": 2, | ||||||
|    "mediaType": "application/vnd.oci.image.index.v1+json", |    "mediaType": "application/vnd.oci.image.index.v1+json", | ||||||
|    "manifests": [ |    "manifests": [ | ||||||
|  | @ -177,7 +177,7 @@ var expectedOCIImageIndexSerialization = []byte(`{ | ||||||
|          } |          } | ||||||
|       } |       } | ||||||
|    ] |    ] | ||||||
| }`) | }` | ||||||
| 
 | 
 | ||||||
| func makeTestOCIImageIndex(t *testing.T, mediaType string) ([]ManifestDescriptor, *DeserializedManifestList) { | func makeTestOCIImageIndex(t *testing.T, mediaType string) ([]ManifestDescriptor, *DeserializedManifestList) { | ||||||
| 	manifestDescriptors := []ManifestDescriptor{ | 	manifestDescriptors := []ManifestDescriptor{ | ||||||
|  | @ -234,17 +234,17 @@ func TestOCIImageIndex(t *testing.T) { | ||||||
| 
 | 
 | ||||||
| 	// Check that the canonical field is the same as json.MarshalIndent
 | 	// Check that the canonical field is the same as json.MarshalIndent
 | ||||||
| 	// with these parameters.
 | 	// with these parameters.
 | ||||||
| 	p, err := json.MarshalIndent(&deserialized.ManifestList, "", "   ") | 	expected, err := json.MarshalIndent(&deserialized.ManifestList, "", "   ") | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("error marshaling manifest list: %v", err) | 		t.Fatalf("error marshaling manifest list: %v", err) | ||||||
| 	} | 	} | ||||||
| 	if !bytes.Equal(p, canonical) { | 	if !bytes.Equal(expected, canonical) { | ||||||
| 		t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(p)) | 		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.
 | 	// Check that the canonical field has the expected value.
 | ||||||
| 	if !bytes.Equal(expectedOCIImageIndexSerialization, canonical) { | 	if !bytes.Equal([]byte(expectedOCIImageIndexSerialization), canonical) { | ||||||
| 		t.Fatalf("manifest bytes not equal to expected: %q != %q", string(canonical), string(expectedOCIImageIndexSerialization)) | 		t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", expectedOCIImageIndexSerialization, string(canonical)) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	var unmarshalled DeserializedManifestList | 	var unmarshalled DeserializedManifestList | ||||||
|  |  | ||||||
|  | @ -93,17 +93,17 @@ func (m *DeserializedManifest) UnmarshalJSON(b []byte) error { | ||||||
| 	copy(m.canonical, b) | 	copy(m.canonical, b) | ||||||
| 
 | 
 | ||||||
| 	// Unmarshal canonical JSON into Manifest object
 | 	// Unmarshal canonical JSON into Manifest object
 | ||||||
| 	var manifest Manifest | 	var mfst Manifest | ||||||
| 	if err := json.Unmarshal(m.canonical, &manifest); err != nil { | 	if err := json.Unmarshal(m.canonical, &mfst); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if manifest.MediaType != "" && manifest.MediaType != v1.MediaTypeImageManifest { | 	if mfst.MediaType != "" && mfst.MediaType != v1.MediaTypeImageManifest { | ||||||
| 		return fmt.Errorf("if present, mediaType in manifest should be '%s' not '%s'", | 		return fmt.Errorf("if present, mediaType in manifest should be '%s' not '%s'", | ||||||
| 			v1.MediaTypeImageManifest, manifest.MediaType) | 			v1.MediaTypeImageManifest, mfst.MediaType) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	m.Manifest = manifest | 	m.Manifest = mfst | ||||||
| 
 | 
 | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ import ( | ||||||
| 	v1 "github.com/opencontainers/image-spec/specs-go/v1" | 	v1 "github.com/opencontainers/image-spec/specs-go/v1" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var expectedManifestSerialization = []byte(`{ | const expectedManifestSerialization = `{ | ||||||
|    "schemaVersion": 2, |    "schemaVersion": 2, | ||||||
|    "mediaType": "application/vnd.oci.image.manifest.v1+json", |    "mediaType": "application/vnd.oci.image.manifest.v1+json", | ||||||
|    "config": { |    "config": { | ||||||
|  | @ -37,7 +37,7 @@ var expectedManifestSerialization = []byte(`{ | ||||||
|    "annotations": { |    "annotations": { | ||||||
|       "hot": "potato" |       "hot": "potato" | ||||||
|    } |    } | ||||||
| }`) | }` | ||||||
| 
 | 
 | ||||||
| func makeTestManifest(mediaType string) Manifest { | func makeTestManifest(mediaType string) Manifest { | ||||||
| 	return Manifest{ | 	return Manifest{ | ||||||
|  | @ -64,9 +64,9 @@ func makeTestManifest(mediaType string) Manifest { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestManifest(t *testing.T) { | func TestManifest(t *testing.T) { | ||||||
| 	manifest := makeTestManifest(v1.MediaTypeImageManifest) | 	mfst := makeTestManifest(v1.MediaTypeImageManifest) | ||||||
| 
 | 
 | ||||||
| 	deserialized, err := FromStruct(manifest) | 	deserialized, err := FromStruct(mfst) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("error creating DeserializedManifest: %v", err) | 		t.Fatalf("error creating DeserializedManifest: %v", err) | ||||||
| 	} | 	} | ||||||
|  | @ -79,17 +79,17 @@ func TestManifest(t *testing.T) { | ||||||
| 
 | 
 | ||||||
| 	// Check that the canonical field is the same as json.MarshalIndent
 | 	// Check that the canonical field is the same as json.MarshalIndent
 | ||||||
| 	// with these parameters.
 | 	// with these parameters.
 | ||||||
| 	p, err := json.MarshalIndent(&manifest, "", "   ") | 	expected, err := json.MarshalIndent(&mfst, "", "   ") | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("error marshaling manifest: %v", err) | 		t.Fatalf("error marshaling manifest: %v", err) | ||||||
| 	} | 	} | ||||||
| 	if !bytes.Equal(p, canonical) { | 	if !bytes.Equal(expected, canonical) { | ||||||
| 		t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(p)) | 		t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", string(expected), string(canonical)) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// Check that canonical field matches expected value.
 | 	// Check that canonical field matches expected value.
 | ||||||
| 	if !bytes.Equal(expectedManifestSerialization, canonical) { | 	if !bytes.Equal([]byte(expectedManifestSerialization), canonical) { | ||||||
| 		t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(expectedManifestSerialization)) | 		t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", expectedManifestSerialization, string(canonical)) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	var unmarshalled DeserializedManifest | 	var unmarshalled DeserializedManifest | ||||||
|  | @ -143,9 +143,9 @@ func TestManifest(t *testing.T) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func mediaTypeTest(t *testing.T, mediaType string, shouldError bool) { | func mediaTypeTest(t *testing.T, mediaType string, shouldError bool) { | ||||||
| 	manifest := makeTestManifest(mediaType) | 	mfst := makeTestManifest(mediaType) | ||||||
| 
 | 
 | ||||||
| 	deserialized, err := FromStruct(manifest) | 	deserialized, err := FromStruct(mfst) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("error creating DeserializedManifest: %v", err) | 		t.Fatalf("error creating DeserializedManifest: %v", err) | ||||||
| 	} | 	} | ||||||
|  | @ -186,7 +186,7 @@ func TestMediaTypes(t *testing.T) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestValidateManifest(t *testing.T) { | func TestValidateManifest(t *testing.T) { | ||||||
| 	manifest := Manifest{ | 	mfst := Manifest{ | ||||||
| 		Config: distribution.Descriptor{Size: 1}, | 		Config: distribution.Descriptor{Size: 1}, | ||||||
| 		Layers: []distribution.Descriptor{{Size: 2}}, | 		Layers: []distribution.Descriptor{{Size: 2}}, | ||||||
| 	} | 	} | ||||||
|  | @ -196,7 +196,7 @@ func TestValidateManifest(t *testing.T) { | ||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
| 	t.Run("valid", func(t *testing.T) { | 	t.Run("valid", func(t *testing.T) { | ||||||
| 		b, err := json.Marshal(manifest) | 		b, err := json.Marshal(mfst) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			t.Fatal("unexpected error marshaling manifest", err) | 			t.Fatal("unexpected error marshaling manifest", err) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -126,12 +126,12 @@ func (sm *SignedManifest) UnmarshalJSON(b []byte) error { | ||||||
| 	copy(sm.Canonical, bytes) | 	copy(sm.Canonical, bytes) | ||||||
| 
 | 
 | ||||||
| 	// Unmarshal canonical JSON into Manifest object
 | 	// Unmarshal canonical JSON into Manifest object
 | ||||||
| 	var manifest Manifest | 	var mfst Manifest | ||||||
| 	if err := json.Unmarshal(sm.Canonical, &manifest); err != nil { | 	if err := json.Unmarshal(sm.Canonical, &mfst); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	sm.Manifest = manifest | 	sm.Manifest = mfst | ||||||
| 
 | 
 | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -21,13 +21,13 @@ func TestManifestMarshaling(t *testing.T) { | ||||||
| 
 | 
 | ||||||
| 	// Check that the all field is the same as json.MarshalIndent with these
 | 	// Check that the all field is the same as json.MarshalIndent with these
 | ||||||
| 	// parameters.
 | 	// parameters.
 | ||||||
| 	p, err := json.MarshalIndent(env.signed, "", "   ") | 	expected, err := json.MarshalIndent(env.signed, "", "   ") | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("error marshaling manifest: %v", err) | 		t.Fatalf("error marshaling manifest: %v", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if !bytes.Equal(p, env.signed.all) { | 	if !bytes.Equal(expected, env.signed.all) { | ||||||
| 		t.Fatalf("manifest bytes not equal: %q != %q", string(env.signed.all), string(p)) | 		t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", string(expected), string(env.signed.all)) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -109,17 +109,17 @@ func (m *DeserializedManifest) UnmarshalJSON(b []byte) error { | ||||||
| 	copy(m.canonical, b) | 	copy(m.canonical, b) | ||||||
| 
 | 
 | ||||||
| 	// Unmarshal canonical JSON into Manifest object
 | 	// Unmarshal canonical JSON into Manifest object
 | ||||||
| 	var manifest Manifest | 	var mfst Manifest | ||||||
| 	if err := json.Unmarshal(m.canonical, &manifest); err != nil { | 	if err := json.Unmarshal(m.canonical, &mfst); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if manifest.MediaType != MediaTypeManifest { | 	if mfst.MediaType != MediaTypeManifest { | ||||||
| 		return fmt.Errorf("mediaType in manifest should be '%s' not '%s'", | 		return fmt.Errorf("mediaType in manifest should be '%s' not '%s'", | ||||||
| 			MediaTypeManifest, manifest.MediaType) | 			MediaTypeManifest, mfst.MediaType) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	m.Manifest = manifest | 	m.Manifest = mfst | ||||||
| 
 | 
 | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -10,7 +10,7 @@ import ( | ||||||
| 	"github.com/distribution/distribution/v3/manifest" | 	"github.com/distribution/distribution/v3/manifest" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var expectedManifestSerialization = []byte(`{ | const expectedManifestSerialization = `{ | ||||||
|    "schemaVersion": 2, |    "schemaVersion": 2, | ||||||
|    "mediaType": "application/vnd.docker.distribution.manifest.v2+json", |    "mediaType": "application/vnd.docker.distribution.manifest.v2+json", | ||||||
|    "config": { |    "config": { | ||||||
|  | @ -25,7 +25,7 @@ var expectedManifestSerialization = []byte(`{ | ||||||
|          "digest": "sha256:62d8908bee94c202b2d35224a221aaa2058318bfa9879fa541efaecba272331b" |          "digest": "sha256:62d8908bee94c202b2d35224a221aaa2058318bfa9879fa541efaecba272331b" | ||||||
|       } |       } | ||||||
|    ] |    ] | ||||||
| }`) | }` | ||||||
| 
 | 
 | ||||||
| func makeTestManifest(mediaType string) Manifest { | func makeTestManifest(mediaType string) Manifest { | ||||||
| 	return Manifest{ | 	return Manifest{ | ||||||
|  | @ -49,9 +49,9 @@ func makeTestManifest(mediaType string) Manifest { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestManifest(t *testing.T) { | func TestManifest(t *testing.T) { | ||||||
| 	manifest := makeTestManifest(MediaTypeManifest) | 	mfst := makeTestManifest(MediaTypeManifest) | ||||||
| 
 | 
 | ||||||
| 	deserialized, err := FromStruct(manifest) | 	deserialized, err := FromStruct(mfst) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("error creating DeserializedManifest: %v", err) | 		t.Fatalf("error creating DeserializedManifest: %v", err) | ||||||
| 	} | 	} | ||||||
|  | @ -64,17 +64,17 @@ func TestManifest(t *testing.T) { | ||||||
| 
 | 
 | ||||||
| 	// Check that the canonical field is the same as json.MarshalIndent
 | 	// Check that the canonical field is the same as json.MarshalIndent
 | ||||||
| 	// with these parameters.
 | 	// with these parameters.
 | ||||||
| 	p, err := json.MarshalIndent(&manifest, "", "   ") | 	expected, err := json.MarshalIndent(&mfst, "", "   ") | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("error marshaling manifest: %v", err) | 		t.Fatalf("error marshaling manifest: %v", err) | ||||||
| 	} | 	} | ||||||
| 	if !bytes.Equal(p, canonical) { | 	if !bytes.Equal(expected, canonical) { | ||||||
| 		t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(p)) | 		t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", string(expected), string(canonical)) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// Check that canonical field matches expected value.
 | 	// Check that canonical field matches expected value.
 | ||||||
| 	if !bytes.Equal(expectedManifestSerialization, canonical) { | 	if !bytes.Equal([]byte(expectedManifestSerialization), canonical) { | ||||||
| 		t.Fatalf("manifest bytes not equal: %q != %q", string(canonical), string(expectedManifestSerialization)) | 		t.Fatalf("manifest bytes not equal:\nexpected:\n%s\nactual:\n%s\n", expectedManifestSerialization, string(canonical)) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	var unmarshalled DeserializedManifest | 	var unmarshalled DeserializedManifest | ||||||
|  | @ -119,9 +119,9 @@ func TestManifest(t *testing.T) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func mediaTypeTest(t *testing.T, mediaType string, shouldError bool) { | func mediaTypeTest(t *testing.T, mediaType string, shouldError bool) { | ||||||
| 	manifest := makeTestManifest(mediaType) | 	mfst := makeTestManifest(mediaType) | ||||||
| 
 | 
 | ||||||
| 	deserialized, err := FromStruct(manifest) | 	deserialized, err := FromStruct(mfst) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("error creating DeserializedManifest: %v", err) | 		t.Fatalf("error creating DeserializedManifest: %v", err) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -33,8 +33,8 @@ type manifestStoreTestEnv struct { | ||||||
| 
 | 
 | ||||||
| func newManifestStoreTestEnv(t *testing.T, name reference.Named, tag string, options ...RegistryOption) *manifestStoreTestEnv { | func newManifestStoreTestEnv(t *testing.T, name reference.Named, tag string, options ...RegistryOption) *manifestStoreTestEnv { | ||||||
| 	ctx := context.Background() | 	ctx := context.Background() | ||||||
| 	driver := inmemory.New() | 	drvr := inmemory.New() | ||||||
| 	registry, err := NewRegistry(ctx, driver, options...) | 	registry, err := NewRegistry(ctx, drvr, options...) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("error creating registry: %v", err) | 		t.Fatalf("error creating registry: %v", err) | ||||||
| 	} | 	} | ||||||
|  | @ -46,7 +46,7 @@ func newManifestStoreTestEnv(t *testing.T, name reference.Named, tag string, opt | ||||||
| 
 | 
 | ||||||
| 	return &manifestStoreTestEnv{ | 	return &manifestStoreTestEnv{ | ||||||
| 		ctx:        ctx, | 		ctx:        ctx, | ||||||
| 		driver:     driver, | 		driver:     drvr, | ||||||
| 		registry:   registry, | 		registry:   registry, | ||||||
| 		repository: repo, | 		repository: repo, | ||||||
| 		name:       name, | 		name:       name, | ||||||
|  | @ -434,25 +434,25 @@ func testOCIManifestStorage(t *testing.T, testname string, includeMediaTypes boo | ||||||
| 		builder.AppendReference(distribution.Descriptor{Digest: dgst}) | 		builder.AppendReference(distribution.Descriptor{Digest: dgst}) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	manifest, err := builder.Build(ctx) | 	mfst, err := builder.Build(ctx) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("%s: unexpected error generating manifest: %v", testname, err) | 		t.Fatalf("%s: unexpected error generating manifest: %v", testname, err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// before putting the manifest test for proper handling of SchemaVersion
 | 	// before putting the manifest test for proper handling of SchemaVersion
 | ||||||
| 
 | 
 | ||||||
| 	if manifest.(*ocischema.DeserializedManifest).Manifest.SchemaVersion != 2 { | 	if mfst.(*ocischema.DeserializedManifest).Manifest.SchemaVersion != 2 { | ||||||
| 		t.Fatalf("%s: unexpected error generating default version for oci manifest", testname) | 		t.Fatalf("%s: unexpected error generating default version for oci manifest", testname) | ||||||
| 	} | 	} | ||||||
| 	manifest.(*ocischema.DeserializedManifest).Manifest.SchemaVersion = 0 | 	mfst.(*ocischema.DeserializedManifest).Manifest.SchemaVersion = 0 | ||||||
| 
 | 
 | ||||||
| 	var manifestDigest digest.Digest | 	var manifestDigest digest.Digest | ||||||
| 	if manifestDigest, err = ms.Put(ctx, manifest); err != nil { | 	if manifestDigest, err = ms.Put(ctx, mfst); err != nil { | ||||||
| 		if err.Error() != "unrecognized manifest schema version 0" { | 		if err.Error() != "unrecognized manifest schema version 0" { | ||||||
| 			t.Fatalf("%s: unexpected error putting manifest: %v", testname, err) | 			t.Fatalf("%s: unexpected error putting manifest: %v", testname, err) | ||||||
| 		} | 		} | ||||||
| 		manifest.(*ocischema.DeserializedManifest).Manifest.SchemaVersion = 2 | 		mfst.(*ocischema.DeserializedManifest).Manifest.SchemaVersion = 2 | ||||||
| 		if manifestDigest, err = ms.Put(ctx, manifest); err != nil { | 		if manifestDigest, err = ms.Put(ctx, mfst); err != nil { | ||||||
| 			t.Fatalf("%s: unexpected error putting manifest: %v", testname, err) | 			t.Fatalf("%s: unexpected error putting manifest: %v", testname, err) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -42,7 +42,7 @@ func MakeManifestList(blobstatter distribution.BlobStatter, manifestDigests []di | ||||||
| // MakeSchema1Manifest constructs a schema 1 manifest from a given list of digests and returns
 | // MakeSchema1Manifest constructs a schema 1 manifest from a given list of digests and returns
 | ||||||
| // the digest of the manifest
 | // the digest of the manifest
 | ||||||
| func MakeSchema1Manifest(digests []digest.Digest) (distribution.Manifest, error) { | func MakeSchema1Manifest(digests []digest.Digest) (distribution.Manifest, error) { | ||||||
| 	manifest := schema1.Manifest{ | 	mfst := schema1.Manifest{ | ||||||
| 		Versioned: manifest.Versioned{ | 		Versioned: manifest.Versioned{ | ||||||
| 			SchemaVersion: 1, | 			SchemaVersion: 1, | ||||||
| 		}, | 		}, | ||||||
|  | @ -50,9 +50,9 @@ func MakeSchema1Manifest(digests []digest.Digest) (distribution.Manifest, error) | ||||||
| 		Tag:  "cares", | 		Tag:  "cares", | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	for _, digest := range digests { | 	for _, d := range digests { | ||||||
| 		manifest.FSLayers = append(manifest.FSLayers, schema1.FSLayer{BlobSum: digest}) | 		mfst.FSLayers = append(mfst.FSLayers, schema1.FSLayer{BlobSum: d}) | ||||||
| 		manifest.History = append(manifest.History, schema1.History{V1Compatibility: ""}) | 		mfst.History = append(mfst.History, schema1.History{V1Compatibility: ""}) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	pk, err := libtrust.GenerateECP256PrivateKey() | 	pk, err := libtrust.GenerateECP256PrivateKey() | ||||||
|  | @ -60,7 +60,7 @@ func MakeSchema1Manifest(digests []digest.Digest) (distribution.Manifest, error) | ||||||
| 		return nil, fmt.Errorf("unexpected error generating private key: %v", err) | 		return nil, fmt.Errorf("unexpected error generating private key: %v", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	signedManifest, err := schema1.Sign(&manifest, pk) | 	signedManifest, err := schema1.Sign(&mfst, pk) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, fmt.Errorf("error signing manifest: %v", err) | 		return nil, fmt.Errorf("error signing manifest: %v", err) | ||||||
| 	} | 	} | ||||||
|  | @ -74,14 +74,14 @@ func MakeSchema2Manifest(repository distribution.Repository, digests []digest.Di | ||||||
| 	ctx := context.Background() | 	ctx := context.Background() | ||||||
| 	blobStore := repository.Blobs(ctx) | 	blobStore := repository.Blobs(ctx) | ||||||
| 	builder := schema2.NewManifestBuilder(blobStore, schema2.MediaTypeImageConfig, []byte{}) | 	builder := schema2.NewManifestBuilder(blobStore, schema2.MediaTypeImageConfig, []byte{}) | ||||||
| 	for _, digest := range digests { | 	for _, d := range digests { | ||||||
| 		builder.AppendReference(distribution.Descriptor{Digest: digest}) | 		builder.AppendReference(distribution.Descriptor{Digest: d}) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	manifest, err := builder.Build(ctx) | 	mfst, err := builder.Build(ctx) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, fmt.Errorf("unexpected error generating manifest: %v", err) | 		return nil, fmt.Errorf("unexpected error generating manifest: %v", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return manifest, nil | 	return mfst, nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -96,7 +96,7 @@ func CreateRandomLayers(n int) (map[digest.Digest]io.ReadSeeker, error) { | ||||||
| // UploadBlobs lets you upload blobs to a repository
 | // UploadBlobs lets you upload blobs to a repository
 | ||||||
| func UploadBlobs(repository distribution.Repository, layers map[digest.Digest]io.ReadSeeker) error { | func UploadBlobs(repository distribution.Repository, layers map[digest.Digest]io.ReadSeeker) error { | ||||||
| 	ctx := context.Background() | 	ctx := context.Background() | ||||||
| 	for digest, rs := range layers { | 	for dgst, rs := range layers { | ||||||
| 		wr, err := repository.Blobs(ctx).Create(ctx) | 		wr, err := repository.Blobs(ctx).Create(ctx) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return fmt.Errorf("unexpected error creating upload: %v", err) | 			return fmt.Errorf("unexpected error creating upload: %v", err) | ||||||
|  | @ -106,7 +106,7 @@ func UploadBlobs(repository distribution.Repository, layers map[digest.Digest]io | ||||||
| 			return fmt.Errorf("unexpected error copying to upload: %v", err) | 			return fmt.Errorf("unexpected error copying to upload: %v", err) | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if _, err := wr.Commit(ctx, distribution.Descriptor{Digest: digest}); err != nil { | 		if _, err := wr.Commit(ctx, distribution.Descriptor{Digest: dgst}); err != nil { | ||||||
| 			return fmt.Errorf("unexpected error committinng upload: %v", err) | 			return fmt.Errorf("unexpected error committinng upload: %v", err) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue