Add test for dangling digest images
Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
(cherry picked from commit 8906f8307c86ce59f51d2f1b750f5e698f3cf8a5)
Signed-off-by: Tibor Vass <tibor@docker.com>
| ... | ... |
@@ -314,6 +314,79 @@ func (s *DockerRegistrySuite) TestListImagesWithDigests(c *check.C) {
|
| 314 | 314 |
c.Assert(busyboxRe.MatchString(out), checker.True, check.Commentf("expected %q: %s", busyboxRe.String(), out))
|
| 315 | 315 |
} |
| 316 | 316 |
|
| 317 |
+func (s *DockerRegistrySuite) TestListDanglingImagesWithDigests(c *check.C) {
|
|
| 318 |
+ // setup image1 |
|
| 319 |
+ digest1, err := setupImageWithTag(c, "dangle1") |
|
| 320 |
+ c.Assert(err, checker.IsNil, check.Commentf("error setting up image"))
|
|
| 321 |
+ imageReference1 := fmt.Sprintf("%s@%s", repoName, digest1)
|
|
| 322 |
+ c.Logf("imageReference1 = %s", imageReference1)
|
|
| 323 |
+ |
|
| 324 |
+ // pull image1 by digest |
|
| 325 |
+ dockerCmd(c, "pull", imageReference1) |
|
| 326 |
+ |
|
| 327 |
+ // list images |
|
| 328 |
+ out, _ := dockerCmd(c, "images", "--digests") |
|
| 329 |
+ |
|
| 330 |
+ // make sure repo shown, tag=<none>, digest = $digest1 |
|
| 331 |
+ re1 := regexp.MustCompile(`\s*` + repoName + `\s*<none>\s*` + digest1.String() + `\s`) |
|
| 332 |
+ c.Assert(re1.MatchString(out), checker.True, check.Commentf("expected %q: %s", re1.String(), out))
|
|
| 333 |
+ // setup image2 |
|
| 334 |
+ digest2, err := setupImageWithTag(c, "dangle2") |
|
| 335 |
+ //error setting up image |
|
| 336 |
+ c.Assert(err, checker.IsNil) |
|
| 337 |
+ imageReference2 := fmt.Sprintf("%s@%s", repoName, digest2)
|
|
| 338 |
+ c.Logf("imageReference2 = %s", imageReference2)
|
|
| 339 |
+ |
|
| 340 |
+ // pull image1 by digest |
|
| 341 |
+ dockerCmd(c, "pull", imageReference1) |
|
| 342 |
+ |
|
| 343 |
+ // pull image2 by digest |
|
| 344 |
+ dockerCmd(c, "pull", imageReference2) |
|
| 345 |
+ |
|
| 346 |
+ // list images |
|
| 347 |
+ out, _ = dockerCmd(c, "images", "--digests", "--filter=\"dangling=true\"") |
|
| 348 |
+ |
|
| 349 |
+ // make sure repo shown, tag=<none>, digest = $digest1 |
|
| 350 |
+ c.Assert(re1.MatchString(out), checker.True, check.Commentf("expected %q: %s", re1.String(), out))
|
|
| 351 |
+ |
|
| 352 |
+ // make sure repo shown, tag=<none>, digest = $digest2 |
|
| 353 |
+ re2 := regexp.MustCompile(`\s*` + repoName + `\s*<none>\s*` + digest2.String() + `\s`) |
|
| 354 |
+ c.Assert(re2.MatchString(out), checker.True, check.Commentf("expected %q: %s", re2.String(), out))
|
|
| 355 |
+ |
|
| 356 |
+ // pull dangle1 tag |
|
| 357 |
+ dockerCmd(c, "pull", repoName+":dangle1") |
|
| 358 |
+ |
|
| 359 |
+ // list images |
|
| 360 |
+ out, _ = dockerCmd(c, "images", "--digests", "--filter=\"dangling=true\"") |
|
| 361 |
+ |
|
| 362 |
+ // make sure image 1 has repo, tag, <none> AND repo, <none>, digest |
|
| 363 |
+ reWithDigest1 := regexp.MustCompile(`\s*` + repoName + `\s*dangle1\s*` + digest1.String() + `\s`) |
|
| 364 |
+ c.Assert(reWithDigest1.MatchString(out), checker.False, check.Commentf("unexpected %q: %s", reWithDigest1.String(), out))
|
|
| 365 |
+ // make sure image 2 has repo, <none>, digest |
|
| 366 |
+ c.Assert(re2.MatchString(out), checker.True, check.Commentf("expected %q: %s", re2.String(), out))
|
|
| 367 |
+ |
|
| 368 |
+ // pull dangle2 tag |
|
| 369 |
+ dockerCmd(c, "pull", repoName+":dangle2") |
|
| 370 |
+ |
|
| 371 |
+ // list images, show tagged images |
|
| 372 |
+ out, _ = dockerCmd(c, "images", "--digests") |
|
| 373 |
+ |
|
| 374 |
+ // make sure image 1 has repo, tag, digest |
|
| 375 |
+ c.Assert(reWithDigest1.MatchString(out), checker.True, check.Commentf("expected %q: %s", reWithDigest1.String(), out))
|
|
| 376 |
+ |
|
| 377 |
+ // make sure image 2 has repo, tag, digest |
|
| 378 |
+ reWithDigest2 := regexp.MustCompile(`\s*` + repoName + `\s*dangle2\s*` + digest2.String() + `\s`) |
|
| 379 |
+ c.Assert(reWithDigest2.MatchString(out), checker.True, check.Commentf("expected %q: %s", reWithDigest2.String(), out))
|
|
| 380 |
+ |
|
| 381 |
+ // list images, no longer dangling, should not match |
|
| 382 |
+ out, _ = dockerCmd(c, "images", "--digests", "--filter=\"dangling=true\"") |
|
| 383 |
+ |
|
| 384 |
+ // make sure image 1 has repo, tag, digest |
|
| 385 |
+ c.Assert(reWithDigest1.MatchString(out), checker.False, check.Commentf("unexpected %q: %s", reWithDigest1.String(), out))
|
|
| 386 |
+ // make sure image 2 has repo, tag, digest |
|
| 387 |
+ c.Assert(reWithDigest2.MatchString(out), checker.False, check.Commentf("unexpected %q: %s", reWithDigest2.String(), out))
|
|
| 388 |
+} |
|
| 389 |
+ |
|
| 317 | 390 |
func (s *DockerRegistrySuite) TestInspectImageWithDigests(c *check.C) {
|
| 318 | 391 |
digest, err := setupImage(c) |
| 319 | 392 |
c.Assert(err, check.IsNil, check.Commentf("error setting up image"))
|