reg/vendor/github.com/containerd/continuity/digests_test.go
Jess Frazelle 8e5eba8735
switch to dep
Signed-off-by: Jess Frazelle <acidburn@microsoft.com>
2017-12-11 14:50:55 -05:00

73 lines
1.8 KiB
Go

package continuity
import (
"fmt"
"reflect"
"testing"
"github.com/opencontainers/go-digest"
)
// TestUniqifyDigests ensures that we deterministically sort digest entries
// for a resource.
func TestUniqifyDigests(t *testing.T) {
for _, testcase := range []struct {
description string
input [][]digest.Digest // input is a series of digest collections from separate resources.
expected []digest.Digest
err error
}{
{
description: "simple merge",
input: [][]digest.Digest{
{"sha1:abc", "sha256:def"},
{"sha1:abc", "sha256:def"},
},
expected: []digest.Digest{"sha1:abc", "sha256:def"},
},
{
description: "simple reversed order",
input: [][]digest.Digest{
{"sha1:abc", "sha256:def"},
{"sha256:def", "sha1:abc"},
},
expected: []digest.Digest{"sha1:abc", "sha256:def"},
},
{
description: "conflicting values for sha1",
input: [][]digest.Digest{
{"sha1:abc", "sha256:def"},
{"sha256:def", "sha1:def"},
},
err: fmt.Errorf("conflicting digests for sha1 found"),
},
} {
fatalf := func(format string, args ...interface{}) {
t.Fatalf(testcase.description+": "+format, args...)
}
var assembled []digest.Digest
for _, ds := range testcase.input {
assembled = append(assembled, ds...)
}
merged, err := uniqifyDigests(assembled...)
if err != testcase.err {
if testcase.err == nil {
fatalf("unexpected error uniqifying digests: %v", err)
}
if err != testcase.err && err.Error() != testcase.err.Error() {
// compare by string till we create nice error type
fatalf("unexpected error uniqifying digests: %v != %v", err, testcase.err)
}
}
if !reflect.DeepEqual(merged, testcase.expected) {
fatalf("unexpected uniquification: %v != %v", merged, testcase.expected)
}
}
}