mirror of https://github.com/containers/podman.git
Add unit tests for imageParts
Signed-off-by: Miloslav Trmač <mitr@redhat.com> Closes: #1112 Approved by: rhatdan
This commit is contained in:
parent
eb17182ecf
commit
e8bc914134
|
@ -0,0 +1,69 @@
|
||||||
|
package image
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestDecompose(t *testing.T) {
|
||||||
|
const digestSuffix = "@sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
|
||||||
|
|
||||||
|
for _, c := range []struct {
|
||||||
|
input string
|
||||||
|
transport, registry, name, tag string
|
||||||
|
isTagged, hasRegistry bool
|
||||||
|
assembled string
|
||||||
|
assembledWithTransport string
|
||||||
|
}{
|
||||||
|
{"#", "", "", "", "", false, false, "", ""}, // Entirely invalid input
|
||||||
|
{ // Fully qualified docker.io, name-only input
|
||||||
|
"docker.io/library/busybox", "docker://", "docker.io", "library/busybox", "latest", false, true,
|
||||||
|
"docker.io/library/busybox:latest", "docker://docker.io/library/busybox:latest",
|
||||||
|
},
|
||||||
|
{ // Fully qualified example.com, name-only input
|
||||||
|
"example.com/ns/busybox", "docker://", "example.com", "ns/busybox", "latest", false, true,
|
||||||
|
"example.com/ns/busybox:latest", "docker://example.com/ns/busybox:latest",
|
||||||
|
},
|
||||||
|
{ // Unqualified single-name input
|
||||||
|
"busybox", "docker://", "", "busybox", "latest", false, false,
|
||||||
|
// FIXME? The [empty]/busybox syntax is surprising.
|
||||||
|
"/busybox:latest", "docker:///busybox:latest",
|
||||||
|
},
|
||||||
|
{ // Unqualified namespaced input
|
||||||
|
// FIXME: .registry == "ns" !!
|
||||||
|
"ns/busybox", "docker://", "ns", "busybox", "latest", false, true,
|
||||||
|
"ns/busybox:latest", "docker://ns/busybox:latest",
|
||||||
|
},
|
||||||
|
{ // name:tag
|
||||||
|
"example.com/ns/busybox:notlatest", "docker://", "example.com", "ns/busybox", "notlatest", true, true,
|
||||||
|
"example.com/ns/busybox:notlatest", "docker://example.com/ns/busybox:notlatest",
|
||||||
|
},
|
||||||
|
{ // name@digest
|
||||||
|
// FIXME? .tag == "none"
|
||||||
|
"example.com/ns/busybox" + digestSuffix, "docker://", "example.com", "ns/busybox", "none", false, true,
|
||||||
|
// FIXME: this drops the digest and replaces it with an incorrect tag.
|
||||||
|
"example.com/ns/busybox:none", "docker://example.com/ns/busybox:none",
|
||||||
|
},
|
||||||
|
{ // name:tag@digest
|
||||||
|
"example.com/ns/busybox:notlatest" + digestSuffix, "docker://", "example.com", "ns/busybox", "notlatest", true, true,
|
||||||
|
// FIXME: This drops the digest
|
||||||
|
"example.com/ns/busybox:notlatest", "docker://example.com/ns/busybox:notlatest",
|
||||||
|
},
|
||||||
|
} {
|
||||||
|
parts, err := decompose(c.input)
|
||||||
|
if c.transport == "" {
|
||||||
|
assert.Error(t, err, c.input)
|
||||||
|
} else {
|
||||||
|
assert.NoError(t, err, c.input)
|
||||||
|
assert.Equal(t, c.transport, parts.transport, c.input)
|
||||||
|
assert.Equal(t, c.registry, parts.registry, c.input)
|
||||||
|
assert.Equal(t, c.name, parts.name, c.input)
|
||||||
|
assert.Equal(t, c.tag, parts.tag, c.input)
|
||||||
|
assert.Equal(t, c.isTagged, parts.isTagged, c.input)
|
||||||
|
assert.Equal(t, c.hasRegistry, parts.hasRegistry, c.input)
|
||||||
|
assert.Equal(t, c.assembled, parts.assemble(), c.input)
|
||||||
|
assert.Equal(t, c.assembledWithTransport, parts.assembleWithTransport(), c.input)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue