Add parsing of image sha
continuous-integration/drone/push Build was killed
Details
continuous-integration/drone/push Build was killed
Details
Not yet using it in comparison
This commit is contained in:
parent
2cfe9429b7
commit
17258861ba
4
main.go
4
main.go
|
@ -24,7 +24,7 @@ var (
|
||||||
maxPages = 10
|
maxPages = 10
|
||||||
|
|
||||||
// Regexp used to extract tag information
|
// Regexp used to extract tag information
|
||||||
tagRegexp = regexp.MustCompile(`(.*):[vV]{0,1}([0-9.]+)(-(.*)){0,1}`)
|
tagRegexp = regexp.MustCompile(`(.*):[vV]{0,1}([0-9.]+)(-([a-zA-Z0-9_-]*)){0,1}(@([:0-9a-z]+)){0,1}`)
|
||||||
// version of tag checker
|
// version of tag checker
|
||||||
version = "dev"
|
version = "dev"
|
||||||
)
|
)
|
||||||
|
@ -35,6 +35,7 @@ type ImageTag struct {
|
||||||
Registry string
|
Registry string
|
||||||
Image string
|
Image string
|
||||||
TagDesc string
|
TagDesc string
|
||||||
|
TagSha string
|
||||||
Version string
|
Version string
|
||||||
VersionParts []int
|
VersionParts []int
|
||||||
}
|
}
|
||||||
|
@ -109,6 +110,7 @@ func ParseImageTag(imageTag string) (ImageTag, error) {
|
||||||
Version: version,
|
Version: version,
|
||||||
VersionParts: versionParts,
|
VersionParts: versionParts,
|
||||||
TagDesc: results[4],
|
TagDesc: results[4],
|
||||||
|
TagSha: results[6],
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,110 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestTagParsing(t *testing.T) {
|
||||||
|
cases := []struct {
|
||||||
|
tag string
|
||||||
|
expected ImageTag
|
||||||
|
expectsError bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"image",
|
||||||
|
ImageTag{},
|
||||||
|
true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"image:latest",
|
||||||
|
ImageTag{},
|
||||||
|
true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"image:v1",
|
||||||
|
ImageTag{
|
||||||
|
ImageTag: "image:v1",
|
||||||
|
Image: "library/image",
|
||||||
|
Version: "1",
|
||||||
|
VersionParts: []int{1},
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"image:v1.0",
|
||||||
|
ImageTag{
|
||||||
|
ImageTag: "image:v1.0",
|
||||||
|
Image: "library/image",
|
||||||
|
Version: "1.0",
|
||||||
|
VersionParts: []int{1, 0},
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"image:v1.0.0",
|
||||||
|
ImageTag{
|
||||||
|
ImageTag: "image:v1.0.0",
|
||||||
|
Image: "library/image",
|
||||||
|
Version: "1.0.0",
|
||||||
|
VersionParts: []int{1, 0, 0},
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"image:v1.0.0-desc",
|
||||||
|
ImageTag{
|
||||||
|
ImageTag: "image:v1.0.0-desc",
|
||||||
|
Image: "library/image",
|
||||||
|
TagDesc: "desc",
|
||||||
|
Version: "1.0.0",
|
||||||
|
VersionParts: []int{1, 0, 0},
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"image:v1.0.0-desc@sha256:abc",
|
||||||
|
ImageTag{
|
||||||
|
ImageTag: "image:v1.0.0-desc@sha256:abc",
|
||||||
|
Image: "library/image",
|
||||||
|
TagDesc: "desc",
|
||||||
|
TagSha: "sha256:abc",
|
||||||
|
Version: "1.0.0",
|
||||||
|
VersionParts: []int{1, 0, 0},
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"image:v1.0.0@sha256:abc",
|
||||||
|
ImageTag{
|
||||||
|
ImageTag: "image:v1.0.0@sha256:abc",
|
||||||
|
Image: "library/image",
|
||||||
|
TagSha: "sha256:abc",
|
||||||
|
Version: "1.0.0",
|
||||||
|
VersionParts: []int{1, 0, 0},
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range cases {
|
||||||
|
result, err := ParseImageTag(c.tag)
|
||||||
|
if c.expectsError {
|
||||||
|
if err == nil {
|
||||||
|
t.Errorf("ParseImageTag(%s): expected erro but didn't get one", c.tag)
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("ParseImageTag(%s): unexpected error: %v", c.tag, err)
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(result, c.expected) {
|
||||||
|
t.Errorf(
|
||||||
|
"ParseImageTag(%s): unexpected result. Actual: %+v Expected: %+v",
|
||||||
|
c.tag,
|
||||||
|
result,
|
||||||
|
c.expected,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue