mirror of
https://github.com/containers/skopeo.git
synced 2025-04-28 03:10:18 +00:00
Make schema1 dir: comparisons nondestructive
Use (diff -x manifest.json) instead of removing the manifest.json files. Also rename the helper from destructiveCheckDirImageAreEqual to assertDirImagesAreEqual.
This commit is contained in:
parent
4afafe9538
commit
6f23c88e84
@ -105,7 +105,7 @@ func (s *CopySuite) TestCopySimpleAtomicRegistry(c *check.C) {
|
|||||||
assertSkopeoSucceeds(c, "", "--tls-verify=false", "--debug", "copy", "dir:"+dir1, "atomic:localhost:5000/myns/unsigned:unsigned")
|
assertSkopeoSucceeds(c, "", "--tls-verify=false", "--debug", "copy", "dir:"+dir1, "atomic:localhost:5000/myns/unsigned:unsigned")
|
||||||
// The result of pushing and pulling is an unmodified image.
|
// The result of pushing and pulling is an unmodified image.
|
||||||
assertSkopeoSucceeds(c, "", "--tls-verify=false", "copy", "atomic:localhost:5000/myns/unsigned:unsigned", "dir:"+dir2)
|
assertSkopeoSucceeds(c, "", "--tls-verify=false", "copy", "atomic:localhost:5000/myns/unsigned:unsigned", "dir:"+dir2)
|
||||||
destructiveCheckDirImagesAreEqual(c, dir1, dir2)
|
assertDirImagesAreEqual(c, dir1, dir2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// The most basic (skopeo copy) use:
|
// The most basic (skopeo copy) use:
|
||||||
@ -139,11 +139,10 @@ func (s *CopySuite) TestCopySimple(c *check.C) {
|
|||||||
c.Assert(err, check.IsNil)
|
c.Assert(err, check.IsNil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check whether dir: images in dir1 and dir2 are equal.
|
// Check whether dir: images in dir1 and dir2 are equal, ignoring schema1 signatures.
|
||||||
// WARNING: This modifies the contents of dir1 and dir2!
|
func assertDirImagesAreEqual(c *check.C, dir1, dir2 string) {
|
||||||
func destructiveCheckDirImagesAreEqual(c *check.C, dir1, dir2 string) {
|
|
||||||
// The manifests may have different JWS signatures; so, compare the manifests by digests, which
|
// The manifests may have different JWS signatures; so, compare the manifests by digests, which
|
||||||
// strips the signatures, and remove them, comparing the rest file by file.
|
// strips the signatures.
|
||||||
digests := []digest.Digest{}
|
digests := []digest.Digest{}
|
||||||
for _, dir := range []string{dir1, dir2} {
|
for _, dir := range []string{dir1, dir2} {
|
||||||
manifestPath := filepath.Join(dir, "manifest.json")
|
manifestPath := filepath.Join(dir, "manifest.json")
|
||||||
@ -152,12 +151,10 @@ func destructiveCheckDirImagesAreEqual(c *check.C, dir1, dir2 string) {
|
|||||||
digest, err := manifest.Digest(m)
|
digest, err := manifest.Digest(m)
|
||||||
c.Assert(err, check.IsNil)
|
c.Assert(err, check.IsNil)
|
||||||
digests = append(digests, digest)
|
digests = append(digests, digest)
|
||||||
err = os.Remove(manifestPath)
|
|
||||||
c.Assert(err, check.IsNil)
|
|
||||||
c.Logf("Manifest file %s (digest %s) removed", manifestPath, digest)
|
|
||||||
}
|
}
|
||||||
c.Assert(digests[0], check.Equals, digests[1])
|
c.Assert(digests[0], check.Equals, digests[1])
|
||||||
out := combinedOutputOfCommand(c, "diff", "-urN", dir1, dir2)
|
// Then compare the rest file by file.
|
||||||
|
out := combinedOutputOfCommand(c, "diff", "-urN", "-x", "manifest.json", dir1, dir2)
|
||||||
c.Assert(out, check.Equals, "")
|
c.Assert(out, check.Equals, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,7 +173,7 @@ func (s *CopySuite) TestCopyStreaming(c *check.C) {
|
|||||||
// Compare (copies of) the original and the copy:
|
// Compare (copies of) the original and the copy:
|
||||||
assertSkopeoSucceeds(c, "", "copy", "docker://estesp/busybox:amd64", "dir:"+dir1)
|
assertSkopeoSucceeds(c, "", "copy", "docker://estesp/busybox:amd64", "dir:"+dir1)
|
||||||
assertSkopeoSucceeds(c, "", "--tls-verify=false", "copy", "atomic:localhost:5000/myns/unsigned:streaming", "dir:"+dir2)
|
assertSkopeoSucceeds(c, "", "--tls-verify=false", "copy", "atomic:localhost:5000/myns/unsigned:streaming", "dir:"+dir2)
|
||||||
destructiveCheckDirImagesAreEqual(c, dir1, dir2)
|
assertDirImagesAreEqual(c, dir1, dir2)
|
||||||
// FIXME: Also check pushing to docker://
|
// FIXME: Also check pushing to docker://
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -501,7 +498,7 @@ func (s *CopySuite) TestCopyAtomicExtension(c *check.C) {
|
|||||||
assertSkopeoSucceeds(c, "", "--tls-verify=false", "--policy", policy, "--registries.d", registriesDir,
|
assertSkopeoSucceeds(c, "", "--tls-verify=false", "--policy", policy, "--registries.d", registriesDir,
|
||||||
"copy", "docker://localhost:5000/myns/extension:atomic", dirDest+"/dirAD")
|
"copy", "docker://localhost:5000/myns/extension:atomic", dirDest+"/dirAD")
|
||||||
// Both access methods result in the same data.
|
// Both access methods result in the same data.
|
||||||
destructiveCheckDirImagesAreEqual(c, filepath.Join(topDir, "dirAA"), filepath.Join(topDir, "dirAD"))
|
assertDirImagesAreEqual(c, filepath.Join(topDir, "dirAA"), filepath.Join(topDir, "dirAD"))
|
||||||
|
|
||||||
// Get another image (different so that they don't share signatures, and sign it using docker://)
|
// Get another image (different so that they don't share signatures, and sign it using docker://)
|
||||||
assertSkopeoSucceeds(c, "", "--tls-verify=false", "--registries.d", registriesDir,
|
assertSkopeoSucceeds(c, "", "--tls-verify=false", "--registries.d", registriesDir,
|
||||||
@ -514,7 +511,7 @@ func (s *CopySuite) TestCopyAtomicExtension(c *check.C) {
|
|||||||
assertSkopeoSucceeds(c, "", "--debug", "--tls-verify=false", "--policy", policy, "--registries.d", registriesDir,
|
assertSkopeoSucceeds(c, "", "--debug", "--tls-verify=false", "--policy", policy, "--registries.d", registriesDir,
|
||||||
"copy", "docker://localhost:5000/myns/extension:extension", dirDest+"/dirDD")
|
"copy", "docker://localhost:5000/myns/extension:extension", dirDest+"/dirDD")
|
||||||
// Both access methods result in the same data.
|
// Both access methods result in the same data.
|
||||||
destructiveCheckDirImagesAreEqual(c, filepath.Join(topDir, "dirDA"), filepath.Join(topDir, "dirDD"))
|
assertDirImagesAreEqual(c, filepath.Join(topDir, "dirDA"), filepath.Join(topDir, "dirDD"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SkopeoSuite) TestCopySrcWithAuth(c *check.C) {
|
func (s *SkopeoSuite) TestCopySrcWithAuth(c *check.C) {
|
||||||
|
Loading…
Reference in New Issue
Block a user