legacy/tarball.Write + tarball.Image leverages a lot of uncompressed partials. This is cribbed from pkg/legacy/tarball just to get intra-package coverage.
(t *testing.T)
| 110 | // |
| 111 | // This is cribbed from pkg/legacy/tarball just to get intra-package coverage. |
| 112 | func TestLegacyWrite(t *testing.T) { |
| 113 | // Make a tempfile for tarball writes. |
| 114 | fp, err := os.CreateTemp("", "") |
| 115 | if err != nil { |
| 116 | t.Fatalf("Error creating temp file.") |
| 117 | } |
| 118 | t.Log(fp.Name()) |
| 119 | defer fp.Close() |
| 120 | defer os.Remove(fp.Name()) |
| 121 | |
| 122 | // Make a random image + layer with Descriptor(). |
| 123 | randImage, err := random.Image(256, 2) |
| 124 | if err != nil { |
| 125 | t.Fatalf("Error creating random image: %v", err) |
| 126 | } |
| 127 | randLayer, err := random.Layer(1024, types.DockerForeignLayer) |
| 128 | if err != nil { |
| 129 | t.Fatal(err) |
| 130 | } |
| 131 | l, err := partial.UncompressedToLayer(&foreignLayer{randLayer}) |
| 132 | if err != nil { |
| 133 | t.Fatal(err) |
| 134 | } |
| 135 | img, err := mutate.AppendLayers(randImage, l) |
| 136 | if err != nil { |
| 137 | t.Fatal(err) |
| 138 | } |
| 139 | tag, err := name.NewTag("gcr.io/foo/bar:latest", name.StrictValidation) |
| 140 | if err != nil { |
| 141 | t.Fatalf("Error creating test tag: %v", err) |
| 142 | } |
| 143 | o, err := os.Create(fp.Name()) |
| 144 | if err != nil { |
| 145 | t.Fatalf("Error creating %q to write image tarball: %v", fp.Name(), err) |
| 146 | } |
| 147 | defer o.Close() |
| 148 | if err := legacy.Write(tag, img, o); err != nil { |
| 149 | t.Fatalf("Unexpected error writing tarball: %v", err) |
| 150 | } |
| 151 | |
| 152 | // Make sure the image is valid and can be loaded. |
| 153 | // Load it both by nil and by its name. |
| 154 | for _, it := range []*name.Tag{nil, &tag} { |
| 155 | tarImage, err := tarball.ImageFromPath(fp.Name(), it) |
| 156 | if err != nil { |
| 157 | t.Fatalf("Unexpected error reading tarball: %v", err) |
| 158 | } |
| 159 | if err := validate.Image(tarImage); err != nil { |
| 160 | t.Errorf("validate.Image: %v", err) |
| 161 | } |
| 162 | if err := compare.Images(img, tarImage); err != nil { |
| 163 | t.Errorf("compare.Images: %v", err) |
| 164 | } |
| 165 | } |
| 166 | |
| 167 | // Try loading a different tag, it should error. |
| 168 | fakeTag, err := name.NewTag("gcr.io/notthistag:latest", name.StrictValidation) |
| 169 | if err != nil { |
nothing calls this directly
no test coverage detected
searching dependent graphs…