Bump up otelttrpc to 0.1.0
Signed-off-by: Jin Dong <djdongjin95@gmail.com>
This commit is contained in:
		
							
								
								
									
										6
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.mod
									
									
									
									
									
								
							@@ -23,10 +23,10 @@ require (
 | 
			
		||||
	github.com/containerd/imgcrypt/v2 v2.0.0-rc.1
 | 
			
		||||
	github.com/containerd/log v0.1.0
 | 
			
		||||
	github.com/containerd/nri v0.8.0
 | 
			
		||||
	github.com/containerd/otelttrpc v0.0.0-20240305015340-ea5083fda723
 | 
			
		||||
	github.com/containerd/otelttrpc v0.1.0
 | 
			
		||||
	github.com/containerd/platforms v1.0.0-rc.0
 | 
			
		||||
	github.com/containerd/plugin v1.0.0
 | 
			
		||||
	github.com/containerd/ttrpc v1.2.6
 | 
			
		||||
	github.com/containerd/ttrpc v1.2.7
 | 
			
		||||
	github.com/containerd/typeurl/v2 v2.2.3
 | 
			
		||||
	github.com/containerd/zfs/v2 v2.0.0-rc.0
 | 
			
		||||
	github.com/containernetworking/cni v1.2.3
 | 
			
		||||
@@ -59,7 +59,7 @@ require (
 | 
			
		||||
	github.com/pelletier/go-toml/v2 v2.2.3
 | 
			
		||||
	github.com/prometheus/client_golang v1.20.5
 | 
			
		||||
	github.com/sirupsen/logrus v1.9.3
 | 
			
		||||
	github.com/stretchr/testify v1.9.0
 | 
			
		||||
	github.com/stretchr/testify v1.10.0
 | 
			
		||||
	github.com/tchap/go-patricia/v2 v2.3.1
 | 
			
		||||
	github.com/urfave/cli/v2 v2.27.5
 | 
			
		||||
	github.com/vishvananda/netlink v1.3.0
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/github.com/containerd/otelttrpc/metadata_supplier.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/containerd/otelttrpc/metadata_supplier.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -70,6 +70,9 @@ func inject(ctx context.Context, propagators propagation.TextMapPropagator, req
 | 
			
		||||
	md, ok := ttrpc.GetMetadata(ctx)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		md = make(ttrpc.MD)
 | 
			
		||||
	} else {
 | 
			
		||||
		// make a copy to avoid concurrent read/write panic
 | 
			
		||||
		md = md.Clone()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	propagators.Inject(ctx, &metadataSupplier{
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								vendor/github.com/containerd/ttrpc/metadata.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/github.com/containerd/ttrpc/metadata.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -62,6 +62,34 @@ func (m MD) Append(key string, values ...string) {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Clone returns a copy of MD or nil if it's nil.
 | 
			
		||||
// It's copied from golang's `http.Header.Clone` implementation:
 | 
			
		||||
// https://cs.opensource.google/go/go/+/refs/tags/go1.23.4:src/net/http/header.go;l=94
 | 
			
		||||
func (m MD) Clone() MD {
 | 
			
		||||
	if m == nil {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Find total number of values.
 | 
			
		||||
	nv := 0
 | 
			
		||||
	for _, vv := range m {
 | 
			
		||||
		nv += len(vv)
 | 
			
		||||
	}
 | 
			
		||||
	sv := make([]string, nv) // shared backing array for headers' values
 | 
			
		||||
	m2 := make(MD, len(m))
 | 
			
		||||
	for k, vv := range m {
 | 
			
		||||
		if vv == nil {
 | 
			
		||||
			// Preserve nil values.
 | 
			
		||||
			m2[k] = nil
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		n := copy(sv, vv)
 | 
			
		||||
		m2[k] = sv[:n:n]
 | 
			
		||||
		sv = sv[n:]
 | 
			
		||||
	}
 | 
			
		||||
	return m2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m MD) setRequest(r *Request) {
 | 
			
		||||
	for k, values := range m {
 | 
			
		||||
		for _, v := range values {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										15
									
								
								vendor/github.com/containerd/ttrpc/server.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/containerd/ttrpc/server.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -74,9 +74,18 @@ func (s *Server) RegisterService(name string, desc *ServiceDesc) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *Server) Serve(ctx context.Context, l net.Listener) error {
 | 
			
		||||
	s.addListener(l)
 | 
			
		||||
	s.mu.Lock()
 | 
			
		||||
	s.addListenerLocked(l)
 | 
			
		||||
	defer s.closeListener(l)
 | 
			
		||||
 | 
			
		||||
	select {
 | 
			
		||||
	case <-s.done:
 | 
			
		||||
		s.mu.Unlock()
 | 
			
		||||
		return ErrServerClosed
 | 
			
		||||
	default:
 | 
			
		||||
	}
 | 
			
		||||
	s.mu.Unlock()
 | 
			
		||||
 | 
			
		||||
	var (
 | 
			
		||||
		backoff    time.Duration
 | 
			
		||||
		handshaker = s.config.handshaker
 | 
			
		||||
@@ -188,9 +197,7 @@ func (s *Server) Close() error {
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *Server) addListener(l net.Listener) {
 | 
			
		||||
	s.mu.Lock()
 | 
			
		||||
	defer s.mu.Unlock()
 | 
			
		||||
func (s *Server) addListenerLocked(l net.Listener) {
 | 
			
		||||
	s.listeners[l] = struct{}{}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										35
									
								
								vendor/github.com/stretchr/testify/assert/assertion_compare.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								vendor/github.com/stretchr/testify/assert/assertion_compare.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -7,10 +7,13 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type CompareType int
 | 
			
		||||
// Deprecated: CompareType has only ever been for internal use and has accidentally been published since v1.6.0. Do not use it.
 | 
			
		||||
type CompareType = compareResult
 | 
			
		||||
 | 
			
		||||
type compareResult int
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	compareLess CompareType = iota - 1
 | 
			
		||||
	compareLess compareResult = iota - 1
 | 
			
		||||
	compareEqual
 | 
			
		||||
	compareGreater
 | 
			
		||||
)
 | 
			
		||||
@@ -39,7 +42,7 @@ var (
 | 
			
		||||
	bytesType = reflect.TypeOf([]byte{})
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) {
 | 
			
		||||
func compare(obj1, obj2 interface{}, kind reflect.Kind) (compareResult, bool) {
 | 
			
		||||
	obj1Value := reflect.ValueOf(obj1)
 | 
			
		||||
	obj2Value := reflect.ValueOf(obj2)
 | 
			
		||||
 | 
			
		||||
@@ -325,7 +328,13 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) {
 | 
			
		||||
				timeObj2 = obj2Value.Convert(timeType).Interface().(time.Time)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return compare(timeObj1.UnixNano(), timeObj2.UnixNano(), reflect.Int64)
 | 
			
		||||
			if timeObj1.Before(timeObj2) {
 | 
			
		||||
				return compareLess, true
 | 
			
		||||
			}
 | 
			
		||||
			if timeObj1.Equal(timeObj2) {
 | 
			
		||||
				return compareEqual, true
 | 
			
		||||
			}
 | 
			
		||||
			return compareGreater, true
 | 
			
		||||
		}
 | 
			
		||||
	case reflect.Slice:
 | 
			
		||||
		{
 | 
			
		||||
@@ -345,7 +354,7 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) {
 | 
			
		||||
				bytesObj2 = obj2Value.Convert(bytesType).Interface().([]byte)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			return CompareType(bytes.Compare(bytesObj1, bytesObj2)), true
 | 
			
		||||
			return compareResult(bytes.Compare(bytesObj1, bytesObj2)), true
 | 
			
		||||
		}
 | 
			
		||||
	case reflect.Uintptr:
 | 
			
		||||
		{
 | 
			
		||||
@@ -381,7 +390,7 @@ func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	return compareTwoValues(t, e1, e2, []CompareType{compareGreater}, "\"%v\" is not greater than \"%v\"", msgAndArgs...)
 | 
			
		||||
	return compareTwoValues(t, e1, e2, []compareResult{compareGreater}, "\"%v\" is not greater than \"%v\"", msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GreaterOrEqual asserts that the first element is greater than or equal to the second
 | 
			
		||||
@@ -394,7 +403,7 @@ func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...in
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	return compareTwoValues(t, e1, e2, []CompareType{compareGreater, compareEqual}, "\"%v\" is not greater than or equal to \"%v\"", msgAndArgs...)
 | 
			
		||||
	return compareTwoValues(t, e1, e2, []compareResult{compareGreater, compareEqual}, "\"%v\" is not greater than or equal to \"%v\"", msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Less asserts that the first element is less than the second
 | 
			
		||||
@@ -406,7 +415,7 @@ func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{})
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	return compareTwoValues(t, e1, e2, []CompareType{compareLess}, "\"%v\" is not less than \"%v\"", msgAndArgs...)
 | 
			
		||||
	return compareTwoValues(t, e1, e2, []compareResult{compareLess}, "\"%v\" is not less than \"%v\"", msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// LessOrEqual asserts that the first element is less than or equal to the second
 | 
			
		||||
@@ -419,7 +428,7 @@ func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...inter
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	return compareTwoValues(t, e1, e2, []CompareType{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs...)
 | 
			
		||||
	return compareTwoValues(t, e1, e2, []compareResult{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Positive asserts that the specified element is positive
 | 
			
		||||
@@ -431,7 +440,7 @@ func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	zero := reflect.Zero(reflect.TypeOf(e))
 | 
			
		||||
	return compareTwoValues(t, e, zero.Interface(), []CompareType{compareGreater}, "\"%v\" is not positive", msgAndArgs...)
 | 
			
		||||
	return compareTwoValues(t, e, zero.Interface(), []compareResult{compareGreater}, "\"%v\" is not positive", msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Negative asserts that the specified element is negative
 | 
			
		||||
@@ -443,10 +452,10 @@ func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	zero := reflect.Zero(reflect.TypeOf(e))
 | 
			
		||||
	return compareTwoValues(t, e, zero.Interface(), []CompareType{compareLess}, "\"%v\" is not negative", msgAndArgs...)
 | 
			
		||||
	return compareTwoValues(t, e, zero.Interface(), []compareResult{compareLess}, "\"%v\" is not negative", msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowedComparesResults []CompareType, failMessage string, msgAndArgs ...interface{}) bool {
 | 
			
		||||
func compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowedComparesResults []compareResult, failMessage string, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
@@ -469,7 +478,7 @@ func compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowedCompare
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func containsValue(values []CompareType, value CompareType) bool {
 | 
			
		||||
func containsValue(values []compareResult, value compareResult) bool {
 | 
			
		||||
	for _, v := range values {
 | 
			
		||||
		if v == value {
 | 
			
		||||
			return true
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										34
									
								
								vendor/github.com/stretchr/testify/assert/assertion_format.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								vendor/github.com/stretchr/testify/assert/assertion_format.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -104,8 +104,8 @@ func EqualExportedValuesf(t TestingT, expected interface{}, actual interface{},
 | 
			
		||||
	return EqualExportedValues(t, expected, actual, append([]interface{}{msg}, args...)...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertible to the larger
 | 
			
		||||
// type and equal.
 | 
			
		||||
//
 | 
			
		||||
//	assert.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted")
 | 
			
		||||
func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool {
 | 
			
		||||
@@ -186,7 +186,7 @@ func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick
 | 
			
		||||
//	assert.EventuallyWithTf(t, func(c *assert.CollectT, "error message %s", "formatted") {
 | 
			
		||||
//		// add assertions as needed; any assertion failure will fail the current tick
 | 
			
		||||
//		assert.True(c, externalValue, "expected 'externalValue' to be true")
 | 
			
		||||
//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false")
 | 
			
		||||
//	}, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false")
 | 
			
		||||
func EventuallyWithTf(t TestingT, condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -568,6 +568,23 @@ func NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, a
 | 
			
		||||
	return NotContains(t, s, contains, append([]interface{}{msg}, args...)...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified
 | 
			
		||||
// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,
 | 
			
		||||
// the number of appearances of each of them in both lists should not match.
 | 
			
		||||
// This is an inverse of ElementsMatch.
 | 
			
		||||
//
 | 
			
		||||
// assert.NotElementsMatchf(t, [1, 1, 2, 3], [1, 1, 2, 3], "error message %s", "formatted") -> false
 | 
			
		||||
//
 | 
			
		||||
// assert.NotElementsMatchf(t, [1, 1, 2, 3], [1, 2, 3], "error message %s", "formatted") -> true
 | 
			
		||||
//
 | 
			
		||||
// assert.NotElementsMatchf(t, [1, 2, 3], [1, 2, 4], "error message %s", "formatted") -> true
 | 
			
		||||
func NotElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	return NotElementsMatch(t, listA, listB, append([]interface{}{msg}, args...)...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotEmptyf asserts that the specified object is NOT empty.  I.e. not nil, "", false, 0 or either
 | 
			
		||||
// a slice or a channel with len == 0.
 | 
			
		||||
//
 | 
			
		||||
@@ -604,7 +621,16 @@ func NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg s
 | 
			
		||||
	return NotEqualValues(t, expected, actual, append([]interface{}{msg}, args...)...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotErrorIsf asserts that at none of the errors in err's chain matches target.
 | 
			
		||||
// NotErrorAsf asserts that none of the errors in err's chain matches target,
 | 
			
		||||
// but if so, sets target to that error value.
 | 
			
		||||
func NotErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	return NotErrorAs(t, err, target, append([]interface{}{msg}, args...)...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotErrorIsf asserts that none of the errors in err's chain matches target.
 | 
			
		||||
// This is a wrapper for errors.Is.
 | 
			
		||||
func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										68
									
								
								vendor/github.com/stretchr/testify/assert/assertion_forward.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										68
									
								
								vendor/github.com/stretchr/testify/assert/assertion_forward.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -186,8 +186,8 @@ func (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface
 | 
			
		||||
	return EqualExportedValuesf(a.t, expected, actual, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertible to the larger
 | 
			
		||||
// type and equal.
 | 
			
		||||
//
 | 
			
		||||
//	a.EqualValues(uint32(123), int32(123))
 | 
			
		||||
func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
@@ -197,8 +197,8 @@ func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAn
 | 
			
		||||
	return EqualValues(a.t, expected, actual, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertible to the larger
 | 
			
		||||
// type and equal.
 | 
			
		||||
//
 | 
			
		||||
//	a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted")
 | 
			
		||||
func (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool {
 | 
			
		||||
@@ -336,7 +336,7 @@ func (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, ti
 | 
			
		||||
//	a.EventuallyWithT(func(c *assert.CollectT) {
 | 
			
		||||
//		// add assertions as needed; any assertion failure will fail the current tick
 | 
			
		||||
//		assert.True(c, externalValue, "expected 'externalValue' to be true")
 | 
			
		||||
//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false")
 | 
			
		||||
//	}, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false")
 | 
			
		||||
func (a *Assertions) EventuallyWithT(condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -361,7 +361,7 @@ func (a *Assertions) EventuallyWithT(condition func(collect *CollectT), waitFor
 | 
			
		||||
//	a.EventuallyWithTf(func(c *assert.CollectT, "error message %s", "formatted") {
 | 
			
		||||
//		// add assertions as needed; any assertion failure will fail the current tick
 | 
			
		||||
//		assert.True(c, externalValue, "expected 'externalValue' to be true")
 | 
			
		||||
//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false")
 | 
			
		||||
//	}, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false")
 | 
			
		||||
func (a *Assertions) EventuallyWithTf(condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -1128,6 +1128,40 @@ func (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg strin
 | 
			
		||||
	return NotContainsf(a.t, s, contains, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified
 | 
			
		||||
// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,
 | 
			
		||||
// the number of appearances of each of them in both lists should not match.
 | 
			
		||||
// This is an inverse of ElementsMatch.
 | 
			
		||||
//
 | 
			
		||||
// a.NotElementsMatch([1, 1, 2, 3], [1, 1, 2, 3]) -> false
 | 
			
		||||
//
 | 
			
		||||
// a.NotElementsMatch([1, 1, 2, 3], [1, 2, 3]) -> true
 | 
			
		||||
//
 | 
			
		||||
// a.NotElementsMatch([1, 2, 3], [1, 2, 4]) -> true
 | 
			
		||||
func (a *Assertions) NotElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	return NotElementsMatch(a.t, listA, listB, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified
 | 
			
		||||
// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,
 | 
			
		||||
// the number of appearances of each of them in both lists should not match.
 | 
			
		||||
// This is an inverse of ElementsMatch.
 | 
			
		||||
//
 | 
			
		||||
// a.NotElementsMatchf([1, 1, 2, 3], [1, 1, 2, 3], "error message %s", "formatted") -> false
 | 
			
		||||
//
 | 
			
		||||
// a.NotElementsMatchf([1, 1, 2, 3], [1, 2, 3], "error message %s", "formatted") -> true
 | 
			
		||||
//
 | 
			
		||||
// a.NotElementsMatchf([1, 2, 3], [1, 2, 4], "error message %s", "formatted") -> true
 | 
			
		||||
func (a *Assertions) NotElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	return NotElementsMatchf(a.t, listA, listB, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotEmpty asserts that the specified object is NOT empty.  I.e. not nil, "", false, 0 or either
 | 
			
		||||
// a slice or a channel with len == 0.
 | 
			
		||||
//
 | 
			
		||||
@@ -1200,7 +1234,25 @@ func (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg str
 | 
			
		||||
	return NotEqualf(a.t, expected, actual, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotErrorIs asserts that at none of the errors in err's chain matches target.
 | 
			
		||||
// NotErrorAs asserts that none of the errors in err's chain matches target,
 | 
			
		||||
// but if so, sets target to that error value.
 | 
			
		||||
func (a *Assertions) NotErrorAs(err error, target interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	return NotErrorAs(a.t, err, target, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotErrorAsf asserts that none of the errors in err's chain matches target,
 | 
			
		||||
// but if so, sets target to that error value.
 | 
			
		||||
func (a *Assertions) NotErrorAsf(err error, target interface{}, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	return NotErrorAsf(a.t, err, target, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotErrorIs asserts that none of the errors in err's chain matches target.
 | 
			
		||||
// This is a wrapper for errors.Is.
 | 
			
		||||
func (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
@@ -1209,7 +1261,7 @@ func (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface
 | 
			
		||||
	return NotErrorIs(a.t, err, target, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotErrorIsf asserts that at none of the errors in err's chain matches target.
 | 
			
		||||
// NotErrorIsf asserts that none of the errors in err's chain matches target.
 | 
			
		||||
// This is a wrapper for errors.Is.
 | 
			
		||||
func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...interface{}) bool {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								vendor/github.com/stretchr/testify/assert/assertion_order.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/github.com/stretchr/testify/assert/assertion_order.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -6,7 +6,7 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// isOrdered checks that collection contains orderable elements.
 | 
			
		||||
func isOrdered(t TestingT, object interface{}, allowedComparesResults []CompareType, failMessage string, msgAndArgs ...interface{}) bool {
 | 
			
		||||
func isOrdered(t TestingT, object interface{}, allowedComparesResults []compareResult, failMessage string, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	objKind := reflect.TypeOf(object).Kind()
 | 
			
		||||
	if objKind != reflect.Slice && objKind != reflect.Array {
 | 
			
		||||
		return false
 | 
			
		||||
@@ -50,7 +50,7 @@ func isOrdered(t TestingT, object interface{}, allowedComparesResults []CompareT
 | 
			
		||||
//	assert.IsIncreasing(t, []float{1, 2})
 | 
			
		||||
//	assert.IsIncreasing(t, []string{"a", "b"})
 | 
			
		||||
func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	return isOrdered(t, object, []CompareType{compareLess}, "\"%v\" is not less than \"%v\"", msgAndArgs...)
 | 
			
		||||
	return isOrdered(t, object, []compareResult{compareLess}, "\"%v\" is not less than \"%v\"", msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsNonIncreasing asserts that the collection is not increasing
 | 
			
		||||
@@ -59,7 +59,7 @@ func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) boo
 | 
			
		||||
//	assert.IsNonIncreasing(t, []float{2, 1})
 | 
			
		||||
//	assert.IsNonIncreasing(t, []string{"b", "a"})
 | 
			
		||||
func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	return isOrdered(t, object, []CompareType{compareEqual, compareGreater}, "\"%v\" is not greater than or equal to \"%v\"", msgAndArgs...)
 | 
			
		||||
	return isOrdered(t, object, []compareResult{compareEqual, compareGreater}, "\"%v\" is not greater than or equal to \"%v\"", msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsDecreasing asserts that the collection is decreasing
 | 
			
		||||
@@ -68,7 +68,7 @@ func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{})
 | 
			
		||||
//	assert.IsDecreasing(t, []float{2, 1})
 | 
			
		||||
//	assert.IsDecreasing(t, []string{"b", "a"})
 | 
			
		||||
func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	return isOrdered(t, object, []CompareType{compareGreater}, "\"%v\" is not greater than \"%v\"", msgAndArgs...)
 | 
			
		||||
	return isOrdered(t, object, []compareResult{compareGreater}, "\"%v\" is not greater than \"%v\"", msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsNonDecreasing asserts that the collection is not decreasing
 | 
			
		||||
@@ -77,5 +77,5 @@ func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) boo
 | 
			
		||||
//	assert.IsNonDecreasing(t, []float{1, 2})
 | 
			
		||||
//	assert.IsNonDecreasing(t, []string{"a", "b"})
 | 
			
		||||
func IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	return isOrdered(t, object, []CompareType{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs...)
 | 
			
		||||
	return isOrdered(t, object, []compareResult{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										157
									
								
								vendor/github.com/stretchr/testify/assert/assertions.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										157
									
								
								vendor/github.com/stretchr/testify/assert/assertions.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -19,7 +19,9 @@ import (
 | 
			
		||||
 | 
			
		||||
	"github.com/davecgh/go-spew/spew"
 | 
			
		||||
	"github.com/pmezard/go-difflib/difflib"
 | 
			
		||||
	"gopkg.in/yaml.v3"
 | 
			
		||||
 | 
			
		||||
	// Wrapper around gopkg.in/yaml.v3
 | 
			
		||||
	"github.com/stretchr/testify/assert/yaml"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_format.go.tmpl"
 | 
			
		||||
@@ -45,6 +47,10 @@ type BoolAssertionFunc func(TestingT, bool, ...interface{}) bool
 | 
			
		||||
// for table driven tests.
 | 
			
		||||
type ErrorAssertionFunc func(TestingT, error, ...interface{}) bool
 | 
			
		||||
 | 
			
		||||
// PanicAssertionFunc is a common function prototype when validating a panic value.  Can be useful
 | 
			
		||||
// for table driven tests.
 | 
			
		||||
type PanicAssertionFunc = func(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool
 | 
			
		||||
 | 
			
		||||
// Comparison is a custom function that returns true on success and false on failure
 | 
			
		||||
type Comparison func() (success bool)
 | 
			
		||||
 | 
			
		||||
@@ -496,7 +502,13 @@ func Same(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) b
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !samePointers(expected, actual) {
 | 
			
		||||
	same, ok := samePointers(expected, actual)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		return Fail(t, "Both arguments must be pointers", msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !same {
 | 
			
		||||
		// both are pointers but not the same type & pointing to the same address
 | 
			
		||||
		return Fail(t, fmt.Sprintf("Not same: \n"+
 | 
			
		||||
			"expected: %p %#v\n"+
 | 
			
		||||
			"actual  : %p %#v", expected, expected, actual, actual), msgAndArgs...)
 | 
			
		||||
@@ -516,7 +528,13 @@ func NotSame(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if samePointers(expected, actual) {
 | 
			
		||||
	same, ok := samePointers(expected, actual)
 | 
			
		||||
	if !ok {
 | 
			
		||||
		//fails when the arguments are not pointers
 | 
			
		||||
		return !(Fail(t, "Both arguments must be pointers", msgAndArgs...))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if same {
 | 
			
		||||
		return Fail(t, fmt.Sprintf(
 | 
			
		||||
			"Expected and actual point to the same object: %p %#v",
 | 
			
		||||
			expected, expected), msgAndArgs...)
 | 
			
		||||
@@ -524,21 +542,23 @@ func NotSame(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// samePointers compares two generic interface objects and returns whether
 | 
			
		||||
// they point to the same object
 | 
			
		||||
func samePointers(first, second interface{}) bool {
 | 
			
		||||
// samePointers checks if two generic interface objects are pointers of the same
 | 
			
		||||
// type pointing to the same object. It returns two values: same indicating if
 | 
			
		||||
// they are the same type and point to the same object, and ok indicating that
 | 
			
		||||
// both inputs are pointers.
 | 
			
		||||
func samePointers(first, second interface{}) (same bool, ok bool) {
 | 
			
		||||
	firstPtr, secondPtr := reflect.ValueOf(first), reflect.ValueOf(second)
 | 
			
		||||
	if firstPtr.Kind() != reflect.Ptr || secondPtr.Kind() != reflect.Ptr {
 | 
			
		||||
		return false
 | 
			
		||||
		return false, false //not both are pointers
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	firstType, secondType := reflect.TypeOf(first), reflect.TypeOf(second)
 | 
			
		||||
	if firstType != secondType {
 | 
			
		||||
		return false
 | 
			
		||||
		return false, true // both are pointers, but of different types
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// compare pointer addresses
 | 
			
		||||
	return first == second
 | 
			
		||||
	return first == second, true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// formatUnequalValues takes two values of arbitrary types and returns string
 | 
			
		||||
@@ -572,8 +592,8 @@ func truncatingFormat(data interface{}) string {
 | 
			
		||||
	return value
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertible to the larger
 | 
			
		||||
// type and equal.
 | 
			
		||||
//
 | 
			
		||||
//	assert.EqualValues(t, uint32(123), int32(123))
 | 
			
		||||
func EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
@@ -615,21 +635,6 @@ func EqualExportedValues(t TestingT, expected, actual interface{}, msgAndArgs ..
 | 
			
		||||
		return Fail(t, fmt.Sprintf("Types expected to match exactly\n\t%v != %v", aType, bType), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if aType.Kind() == reflect.Ptr {
 | 
			
		||||
		aType = aType.Elem()
 | 
			
		||||
	}
 | 
			
		||||
	if bType.Kind() == reflect.Ptr {
 | 
			
		||||
		bType = bType.Elem()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if aType.Kind() != reflect.Struct {
 | 
			
		||||
		return Fail(t, fmt.Sprintf("Types expected to both be struct or pointer to struct \n\t%v != %v", aType.Kind(), reflect.Struct), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if bType.Kind() != reflect.Struct {
 | 
			
		||||
		return Fail(t, fmt.Sprintf("Types expected to both be struct or pointer to struct \n\t%v != %v", bType.Kind(), reflect.Struct), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	expected = copyExportedFields(expected)
 | 
			
		||||
	actual = copyExportedFields(actual)
 | 
			
		||||
 | 
			
		||||
@@ -1170,6 +1175,39 @@ func formatListDiff(listA, listB interface{}, extraA, extraB []interface{}) stri
 | 
			
		||||
	return msg.String()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified
 | 
			
		||||
// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,
 | 
			
		||||
// the number of appearances of each of them in both lists should not match.
 | 
			
		||||
// This is an inverse of ElementsMatch.
 | 
			
		||||
//
 | 
			
		||||
// assert.NotElementsMatch(t, [1, 1, 2, 3], [1, 1, 2, 3]) -> false
 | 
			
		||||
//
 | 
			
		||||
// assert.NotElementsMatch(t, [1, 1, 2, 3], [1, 2, 3]) -> true
 | 
			
		||||
//
 | 
			
		||||
// assert.NotElementsMatch(t, [1, 2, 3], [1, 2, 4]) -> true
 | 
			
		||||
func NotElementsMatch(t TestingT, listA, listB interface{}, msgAndArgs ...interface{}) (ok bool) {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	if isEmpty(listA) && isEmpty(listB) {
 | 
			
		||||
		return Fail(t, "listA and listB contain the same elements", msgAndArgs)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !isList(t, listA, msgAndArgs...) {
 | 
			
		||||
		return Fail(t, "listA is not a list type", msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
	if !isList(t, listB, msgAndArgs...) {
 | 
			
		||||
		return Fail(t, "listB is not a list type", msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	extraA, extraB := diffLists(listA, listB)
 | 
			
		||||
	if len(extraA) == 0 && len(extraB) == 0 {
 | 
			
		||||
		return Fail(t, "listA and listB contain the same elements", msgAndArgs)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Condition uses a Comparison to assert a complex condition.
 | 
			
		||||
func Condition(t TestingT, comp Comparison, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
@@ -1488,6 +1526,9 @@ func InEpsilon(t TestingT, expected, actual interface{}, epsilon float64, msgAnd
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return Fail(t, err.Error(), msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
	if math.IsNaN(actualEpsilon) {
 | 
			
		||||
		return Fail(t, "relative error is NaN", msgAndArgs...)
 | 
			
		||||
	}
 | 
			
		||||
	if actualEpsilon > epsilon {
 | 
			
		||||
		return Fail(t, fmt.Sprintf("Relative error is too high: %#v (expected)\n"+
 | 
			
		||||
			"        < %#v (actual)", epsilon, actualEpsilon), msgAndArgs...)
 | 
			
		||||
@@ -1611,7 +1652,6 @@ func ErrorContains(t TestingT, theError error, contains string, msgAndArgs ...in
 | 
			
		||||
 | 
			
		||||
// matchRegexp return true if a specified regexp matches a string.
 | 
			
		||||
func matchRegexp(rx interface{}, str interface{}) bool {
 | 
			
		||||
 | 
			
		||||
	var r *regexp.Regexp
 | 
			
		||||
	if rr, ok := rx.(*regexp.Regexp); ok {
 | 
			
		||||
		r = rr
 | 
			
		||||
@@ -1619,7 +1659,14 @@ func matchRegexp(rx interface{}, str interface{}) bool {
 | 
			
		||||
		r = regexp.MustCompile(fmt.Sprint(rx))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return (r.FindStringIndex(fmt.Sprint(str)) != nil)
 | 
			
		||||
	switch v := str.(type) {
 | 
			
		||||
	case []byte:
 | 
			
		||||
		return r.Match(v)
 | 
			
		||||
	case string:
 | 
			
		||||
		return r.MatchString(v)
 | 
			
		||||
	default:
 | 
			
		||||
		return r.MatchString(fmt.Sprint(v))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1872,7 +1919,7 @@ var spewConfigStringerEnabled = spew.ConfigState{
 | 
			
		||||
	MaxDepth:                10,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type tHelper interface {
 | 
			
		||||
type tHelper = interface {
 | 
			
		||||
	Helper()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1911,6 +1958,9 @@ func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick t
 | 
			
		||||
 | 
			
		||||
// CollectT implements the TestingT interface and collects all errors.
 | 
			
		||||
type CollectT struct {
 | 
			
		||||
	// A slice of errors. Non-nil slice denotes a failure.
 | 
			
		||||
	// If it's non-nil but len(c.errors) == 0, this is also a failure
 | 
			
		||||
	// obtained by direct c.FailNow() call.
 | 
			
		||||
	errors []error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1919,9 +1969,10 @@ func (c *CollectT) Errorf(format string, args ...interface{}) {
 | 
			
		||||
	c.errors = append(c.errors, fmt.Errorf(format, args...))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FailNow panics.
 | 
			
		||||
func (*CollectT) FailNow() {
 | 
			
		||||
	panic("Assertion failed")
 | 
			
		||||
// FailNow stops execution by calling runtime.Goexit.
 | 
			
		||||
func (c *CollectT) FailNow() {
 | 
			
		||||
	c.fail()
 | 
			
		||||
	runtime.Goexit()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Deprecated: That was a method for internal usage that should not have been published. Now just panics.
 | 
			
		||||
@@ -1934,6 +1985,16 @@ func (*CollectT) Copy(TestingT) {
 | 
			
		||||
	panic("Copy() is deprecated")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *CollectT) fail() {
 | 
			
		||||
	if !c.failed() {
 | 
			
		||||
		c.errors = []error{} // Make it non-nil to mark a failure.
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *CollectT) failed() bool {
 | 
			
		||||
	return c.errors != nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EventuallyWithT asserts that given condition will be met in waitFor time,
 | 
			
		||||
// periodically checking target function each tick. In contrast to Eventually,
 | 
			
		||||
// it supplies a CollectT to the condition function, so that the condition
 | 
			
		||||
@@ -1951,14 +2012,14 @@ func (*CollectT) Copy(TestingT) {
 | 
			
		||||
//	assert.EventuallyWithT(t, func(c *assert.CollectT) {
 | 
			
		||||
//		// add assertions as needed; any assertion failure will fail the current tick
 | 
			
		||||
//		assert.True(c, externalValue, "expected 'externalValue' to be true")
 | 
			
		||||
//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false")
 | 
			
		||||
//	}, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false")
 | 
			
		||||
func EventuallyWithT(t TestingT, condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var lastFinishedTickErrs []error
 | 
			
		||||
	ch := make(chan []error, 1)
 | 
			
		||||
	ch := make(chan *CollectT, 1)
 | 
			
		||||
 | 
			
		||||
	timer := time.NewTimer(waitFor)
 | 
			
		||||
	defer timer.Stop()
 | 
			
		||||
@@ -1978,16 +2039,16 @@ func EventuallyWithT(t TestingT, condition func(collect *CollectT), waitFor time
 | 
			
		||||
			go func() {
 | 
			
		||||
				collect := new(CollectT)
 | 
			
		||||
				defer func() {
 | 
			
		||||
					ch <- collect.errors
 | 
			
		||||
					ch <- collect
 | 
			
		||||
				}()
 | 
			
		||||
				condition(collect)
 | 
			
		||||
			}()
 | 
			
		||||
		case errs := <-ch:
 | 
			
		||||
			if len(errs) == 0 {
 | 
			
		||||
		case collect := <-ch:
 | 
			
		||||
			if !collect.failed() {
 | 
			
		||||
				return true
 | 
			
		||||
			}
 | 
			
		||||
			// Keep the errors from the last ended condition, so that they can be copied to t if timeout is reached.
 | 
			
		||||
			lastFinishedTickErrs = errs
 | 
			
		||||
			lastFinishedTickErrs = collect.errors
 | 
			
		||||
			tick = ticker.C
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@@ -2049,7 +2110,7 @@ func ErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	), msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotErrorIs asserts that at none of the errors in err's chain matches target.
 | 
			
		||||
// NotErrorIs asserts that none of the errors in err's chain matches target.
 | 
			
		||||
// This is a wrapper for errors.Is.
 | 
			
		||||
func NotErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
@@ -2090,6 +2151,24 @@ func ErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{
 | 
			
		||||
	), msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotErrorAs asserts that none of the errors in err's chain matches target,
 | 
			
		||||
// but if so, sets target to that error value.
 | 
			
		||||
func NotErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) bool {
 | 
			
		||||
	if h, ok := t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	if !errors.As(err, target) {
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	chain := buildErrorChainString(err)
 | 
			
		||||
 | 
			
		||||
	return Fail(t, fmt.Sprintf("Target error should not be in err chain:\n"+
 | 
			
		||||
		"found: %q\n"+
 | 
			
		||||
		"in chain: %s", target, chain,
 | 
			
		||||
	), msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func buildErrorChainString(err error) string {
 | 
			
		||||
	if err == nil {
 | 
			
		||||
		return ""
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										25
									
								
								vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
//go:build testify_yaml_custom && !testify_yaml_fail && !testify_yaml_default
 | 
			
		||||
// +build testify_yaml_custom,!testify_yaml_fail,!testify_yaml_default
 | 
			
		||||
 | 
			
		||||
// Package yaml is an implementation of YAML functions that calls a pluggable implementation.
 | 
			
		||||
//
 | 
			
		||||
// This implementation is selected with the testify_yaml_custom build tag.
 | 
			
		||||
//
 | 
			
		||||
//	go test -tags testify_yaml_custom
 | 
			
		||||
//
 | 
			
		||||
// This implementation can be used at build time to replace the default implementation
 | 
			
		||||
// to avoid linking with [gopkg.in/yaml.v3].
 | 
			
		||||
//
 | 
			
		||||
// In your test package:
 | 
			
		||||
//
 | 
			
		||||
//		import assertYaml "github.com/stretchr/testify/assert/yaml"
 | 
			
		||||
//
 | 
			
		||||
//		func init() {
 | 
			
		||||
//			assertYaml.Unmarshal = func (in []byte, out interface{}) error {
 | 
			
		||||
//				// ...
 | 
			
		||||
//	     			return nil
 | 
			
		||||
//			}
 | 
			
		||||
//		}
 | 
			
		||||
package yaml
 | 
			
		||||
 | 
			
		||||
var Unmarshal func(in []byte, out interface{}) error
 | 
			
		||||
							
								
								
									
										37
									
								
								vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
//go:build !testify_yaml_fail && !testify_yaml_custom
 | 
			
		||||
// +build !testify_yaml_fail,!testify_yaml_custom
 | 
			
		||||
 | 
			
		||||
// Package yaml is just an indirection to handle YAML deserialization.
 | 
			
		||||
//
 | 
			
		||||
// This package is just an indirection that allows the builder to override the
 | 
			
		||||
// indirection with an alternative implementation of this package that uses
 | 
			
		||||
// another implementation of YAML deserialization. This allows to not either not
 | 
			
		||||
// use YAML deserialization at all, or to use another implementation than
 | 
			
		||||
// [gopkg.in/yaml.v3] (for example for license compatibility reasons, see [PR #1120]).
 | 
			
		||||
//
 | 
			
		||||
// Alternative implementations are selected using build tags:
 | 
			
		||||
//
 | 
			
		||||
//   - testify_yaml_fail: [Unmarshal] always fails with an error
 | 
			
		||||
//   - testify_yaml_custom: [Unmarshal] is a variable. Caller must initialize it
 | 
			
		||||
//     before calling any of [github.com/stretchr/testify/assert.YAMLEq] or
 | 
			
		||||
//     [github.com/stretchr/testify/assert.YAMLEqf].
 | 
			
		||||
//
 | 
			
		||||
// Usage:
 | 
			
		||||
//
 | 
			
		||||
//	go test -tags testify_yaml_fail
 | 
			
		||||
//
 | 
			
		||||
// You can check with "go list" which implementation is linked:
 | 
			
		||||
//
 | 
			
		||||
//	go list -f '{{.Imports}}' github.com/stretchr/testify/assert/yaml
 | 
			
		||||
//	go list -tags testify_yaml_fail -f '{{.Imports}}' github.com/stretchr/testify/assert/yaml
 | 
			
		||||
//	go list -tags testify_yaml_custom -f '{{.Imports}}' github.com/stretchr/testify/assert/yaml
 | 
			
		||||
//
 | 
			
		||||
// [PR #1120]: https://github.com/stretchr/testify/pull/1120
 | 
			
		||||
package yaml
 | 
			
		||||
 | 
			
		||||
import goyaml "gopkg.in/yaml.v3"
 | 
			
		||||
 | 
			
		||||
// Unmarshal is just a wrapper of [gopkg.in/yaml.v3.Unmarshal].
 | 
			
		||||
func Unmarshal(in []byte, out interface{}) error {
 | 
			
		||||
	return goyaml.Unmarshal(in, out)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
//go:build testify_yaml_fail && !testify_yaml_custom && !testify_yaml_default
 | 
			
		||||
// +build testify_yaml_fail,!testify_yaml_custom,!testify_yaml_default
 | 
			
		||||
 | 
			
		||||
// Package yaml is an implementation of YAML functions that always fail.
 | 
			
		||||
//
 | 
			
		||||
// This implementation can be used at build time to replace the default implementation
 | 
			
		||||
// to avoid linking with [gopkg.in/yaml.v3]:
 | 
			
		||||
//
 | 
			
		||||
//	go test -tags testify_yaml_fail
 | 
			
		||||
package yaml
 | 
			
		||||
 | 
			
		||||
import "errors"
 | 
			
		||||
 | 
			
		||||
var errNotImplemented = errors.New("YAML functions are not available (see https://pkg.go.dev/github.com/stretchr/testify/assert/yaml)")
 | 
			
		||||
 | 
			
		||||
func Unmarshal([]byte, interface{}) error {
 | 
			
		||||
	return errNotImplemented
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										432
									
								
								vendor/github.com/stretchr/testify/require/require.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										432
									
								
								vendor/github.com/stretchr/testify/require/require.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2
									
								
								vendor/github.com/stretchr/testify/require/require.go.tmpl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/stretchr/testify/require/require.go.tmpl
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
{{.Comment}}
 | 
			
		||||
{{ replace .Comment "assert." "require."}}
 | 
			
		||||
func {{.DocInfo.Name}}(t TestingT, {{.Params}}) {
 | 
			
		||||
	if h, ok := t.(tHelper); ok { h.Helper() }
 | 
			
		||||
	if assert.{{.DocInfo.Name}}(t, {{.ForwardedParams}}) { return }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										68
									
								
								vendor/github.com/stretchr/testify/require/require_forward.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										68
									
								
								vendor/github.com/stretchr/testify/require/require_forward.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -187,8 +187,8 @@ func (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface
 | 
			
		||||
	EqualExportedValuesf(a.t, expected, actual, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
// EqualValues asserts that two objects are equal or convertible to the larger
 | 
			
		||||
// type and equal.
 | 
			
		||||
//
 | 
			
		||||
//	a.EqualValues(uint32(123), int32(123))
 | 
			
		||||
func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) {
 | 
			
		||||
@@ -198,8 +198,8 @@ func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAn
 | 
			
		||||
	EqualValues(a.t, expected, actual, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertible to the same types
 | 
			
		||||
// and equal.
 | 
			
		||||
// EqualValuesf asserts that two objects are equal or convertible to the larger
 | 
			
		||||
// type and equal.
 | 
			
		||||
//
 | 
			
		||||
//	a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted")
 | 
			
		||||
func (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) {
 | 
			
		||||
@@ -337,7 +337,7 @@ func (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, ti
 | 
			
		||||
//	a.EventuallyWithT(func(c *assert.CollectT) {
 | 
			
		||||
//		// add assertions as needed; any assertion failure will fail the current tick
 | 
			
		||||
//		assert.True(c, externalValue, "expected 'externalValue' to be true")
 | 
			
		||||
//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false")
 | 
			
		||||
//	}, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false")
 | 
			
		||||
func (a *Assertions) EventuallyWithT(condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -362,7 +362,7 @@ func (a *Assertions) EventuallyWithT(condition func(collect *assert.CollectT), w
 | 
			
		||||
//	a.EventuallyWithTf(func(c *assert.CollectT, "error message %s", "formatted") {
 | 
			
		||||
//		// add assertions as needed; any assertion failure will fail the current tick
 | 
			
		||||
//		assert.True(c, externalValue, "expected 'externalValue' to be true")
 | 
			
		||||
//	}, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false")
 | 
			
		||||
//	}, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false")
 | 
			
		||||
func (a *Assertions) EventuallyWithTf(condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
@@ -1129,6 +1129,40 @@ func (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg strin
 | 
			
		||||
	NotContainsf(a.t, s, contains, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified
 | 
			
		||||
// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,
 | 
			
		||||
// the number of appearances of each of them in both lists should not match.
 | 
			
		||||
// This is an inverse of ElementsMatch.
 | 
			
		||||
//
 | 
			
		||||
// a.NotElementsMatch([1, 1, 2, 3], [1, 1, 2, 3]) -> false
 | 
			
		||||
//
 | 
			
		||||
// a.NotElementsMatch([1, 1, 2, 3], [1, 2, 3]) -> true
 | 
			
		||||
//
 | 
			
		||||
// a.NotElementsMatch([1, 2, 3], [1, 2, 4]) -> true
 | 
			
		||||
func (a *Assertions) NotElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	NotElementsMatch(a.t, listA, listB, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified
 | 
			
		||||
// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements,
 | 
			
		||||
// the number of appearances of each of them in both lists should not match.
 | 
			
		||||
// This is an inverse of ElementsMatch.
 | 
			
		||||
//
 | 
			
		||||
// a.NotElementsMatchf([1, 1, 2, 3], [1, 1, 2, 3], "error message %s", "formatted") -> false
 | 
			
		||||
//
 | 
			
		||||
// a.NotElementsMatchf([1, 1, 2, 3], [1, 2, 3], "error message %s", "formatted") -> true
 | 
			
		||||
//
 | 
			
		||||
// a.NotElementsMatchf([1, 2, 3], [1, 2, 4], "error message %s", "formatted") -> true
 | 
			
		||||
func (a *Assertions) NotElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	NotElementsMatchf(a.t, listA, listB, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotEmpty asserts that the specified object is NOT empty.  I.e. not nil, "", false, 0 or either
 | 
			
		||||
// a slice or a channel with len == 0.
 | 
			
		||||
//
 | 
			
		||||
@@ -1201,7 +1235,25 @@ func (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg str
 | 
			
		||||
	NotEqualf(a.t, expected, actual, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotErrorIs asserts that at none of the errors in err's chain matches target.
 | 
			
		||||
// NotErrorAs asserts that none of the errors in err's chain matches target,
 | 
			
		||||
// but if so, sets target to that error value.
 | 
			
		||||
func (a *Assertions) NotErrorAs(err error, target interface{}, msgAndArgs ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	NotErrorAs(a.t, err, target, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotErrorAsf asserts that none of the errors in err's chain matches target,
 | 
			
		||||
// but if so, sets target to that error value.
 | 
			
		||||
func (a *Assertions) NotErrorAsf(err error, target interface{}, msg string, args ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
		h.Helper()
 | 
			
		||||
	}
 | 
			
		||||
	NotErrorAsf(a.t, err, target, msg, args...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotErrorIs asserts that none of the errors in err's chain matches target.
 | 
			
		||||
// This is a wrapper for errors.Is.
 | 
			
		||||
func (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
@@ -1210,7 +1262,7 @@ func (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface
 | 
			
		||||
	NotErrorIs(a.t, err, target, msgAndArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NotErrorIsf asserts that at none of the errors in err's chain matches target.
 | 
			
		||||
// NotErrorIsf asserts that none of the errors in err's chain matches target.
 | 
			
		||||
// This is a wrapper for errors.Is.
 | 
			
		||||
func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...interface{}) {
 | 
			
		||||
	if h, ok := a.t.(tHelper); ok {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/stretchr/testify/require/requirements.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/stretchr/testify/require/requirements.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -6,7 +6,7 @@ type TestingT interface {
 | 
			
		||||
	FailNow()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type tHelper interface {
 | 
			
		||||
type tHelper = interface {
 | 
			
		||||
	Helper()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							@@ -179,8 +179,8 @@ github.com/containerd/nri/pkg/net/multiplex
 | 
			
		||||
github.com/containerd/nri/pkg/runtime-tools/generate
 | 
			
		||||
github.com/containerd/nri/pkg/stub
 | 
			
		||||
github.com/containerd/nri/types/v1
 | 
			
		||||
# github.com/containerd/otelttrpc v0.0.0-20240305015340-ea5083fda723
 | 
			
		||||
## explicit; go 1.13
 | 
			
		||||
# github.com/containerd/otelttrpc v0.1.0
 | 
			
		||||
## explicit; go 1.21
 | 
			
		||||
github.com/containerd/otelttrpc
 | 
			
		||||
github.com/containerd/otelttrpc/internal
 | 
			
		||||
# github.com/containerd/platforms v1.0.0-rc.0
 | 
			
		||||
@@ -191,7 +191,7 @@ github.com/containerd/platforms
 | 
			
		||||
github.com/containerd/plugin
 | 
			
		||||
github.com/containerd/plugin/dynamic
 | 
			
		||||
github.com/containerd/plugin/registry
 | 
			
		||||
# github.com/containerd/ttrpc v1.2.6
 | 
			
		||||
# github.com/containerd/ttrpc v1.2.7
 | 
			
		||||
## explicit; go 1.19
 | 
			
		||||
github.com/containerd/ttrpc
 | 
			
		||||
# github.com/containerd/typeurl/v2 v2.2.3
 | 
			
		||||
@@ -457,9 +457,10 @@ github.com/sirupsen/logrus
 | 
			
		||||
# github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6
 | 
			
		||||
## explicit; go 1.19
 | 
			
		||||
github.com/stefanberger/go-pkcs11uri
 | 
			
		||||
# github.com/stretchr/testify v1.9.0
 | 
			
		||||
# github.com/stretchr/testify v1.10.0
 | 
			
		||||
## explicit; go 1.17
 | 
			
		||||
github.com/stretchr/testify/assert
 | 
			
		||||
github.com/stretchr/testify/assert/yaml
 | 
			
		||||
github.com/stretchr/testify/require
 | 
			
		||||
# github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635
 | 
			
		||||
## explicit
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user