17
17
package docker
18
18
19
19
import (
20
+ "bytes"
20
21
"context"
22
+ "encoding/json"
21
23
"errors"
22
24
"fmt"
23
25
"io"
@@ -35,6 +37,7 @@ import (
35
37
"github.com/containerd/errdefs"
36
38
"github.com/containerd/log/logtest"
37
39
"github.com/opencontainers/go-digest"
40
+ ocispecv "github.com/opencontainers/image-spec/specs-go"
38
41
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
39
42
"github.com/stretchr/testify/assert"
40
43
)
@@ -181,10 +184,55 @@ func tryUpload(ctx context.Context, t *testing.T, p dockerPusher, layerContent [
181
184
return err
182
185
}
183
186
defer cw .Close ()
184
- if _ , err := cw . Write (layerContent ); err != nil {
187
+ if err := content . Copy ( ctx , cw , bytes . NewReader (layerContent ), int64 ( len ( layerContent )), desc . Digest ); err != nil {
185
188
return err
186
189
}
187
- return cw .Commit (ctx , 0 , "" )
190
+
191
+ cContent , err := json .Marshal (ocispec.Image {})
192
+ if err != nil {
193
+ return err
194
+ }
195
+ cdesc := ocispec.Descriptor {
196
+ MediaType : ocispec .MediaTypeImageConfig ,
197
+ Digest : digest .FromBytes (cContent ),
198
+ Size : int64 (len (cContent )),
199
+ }
200
+ cwc , err := p .Writer (ctx , content .WithRef ("test-1-c" ), content .WithDescriptor (cdesc ))
201
+ if err != nil {
202
+ return err
203
+ }
204
+ defer cwc .Close ()
205
+ if _ , err := cwc .Write (cContent ); err != nil {
206
+ return err
207
+ }
208
+ if err := content .Copy (ctx , cwc , bytes .NewReader (cContent ), int64 (len (cContent )), cdesc .Digest ); err != nil {
209
+ return err
210
+ }
211
+
212
+ m := ocispec.Manifest {
213
+ Versioned : ocispecv.Versioned {SchemaVersion : 1 },
214
+ MediaType : ocispec .MediaTypeImageManifest ,
215
+ Config : cdesc ,
216
+ Layers : []ocispec.Descriptor {desc },
217
+ }
218
+ mContent , err := json .Marshal (m )
219
+ if err != nil {
220
+ return err
221
+ }
222
+ mdesc := ocispec.Descriptor {
223
+ MediaType : ocispec .MediaTypeImageManifest ,
224
+ Digest : digest .FromBytes (mContent ),
225
+ Size : int64 (len (mContent )),
226
+ }
227
+ cwm , err := p .Writer (ctx , content .WithRef ("test-1-m" ), content .WithDescriptor (mdesc ))
228
+ if err != nil {
229
+ return err
230
+ }
231
+ defer cwm .Close ()
232
+ if err := content .Copy (ctx , cwm , bytes .NewReader (mContent ), int64 (len (mContent )), mdesc .Digest ); err != nil {
233
+ return err
234
+ }
235
+ return nil
188
236
}
189
237
190
238
func samplePusher (t * testing.T ) (dockerPusher , * uploadableMockRegistry , StatusTrackLocker , func ()) {
0 commit comments