Add String function to oci.Runtime interface

Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
Evan Lezar 2024-06-24 10:50:59 +02:00
parent f55aac0232
commit 8df5e33ef6
5 changed files with 58 additions and 3 deletions

View File

@ -16,10 +16,11 @@
package oci package oci
//go:generate moq -stub -out runtime_mock.go . Runtime
// Runtime is an interface for a runtime shim. The Exec method accepts a list // Runtime is an interface for a runtime shim. The Exec method accepts a list
// of command line arguments, and returns an error / nil. // of command line arguments, and returns an error / nil.
//
//go:generate moq -rm -stub -out runtime_mock.go . Runtime
type Runtime interface { type Runtime interface {
Exec([]string) error Exec([]string) error
String() string
} }

View File

@ -20,6 +20,9 @@ var _ Runtime = &RuntimeMock{}
// ExecFunc: func(strings []string) error { // ExecFunc: func(strings []string) error {
// panic("mock out the Exec method") // panic("mock out the Exec method")
// }, // },
// StringFunc: func() string {
// panic("mock out the String method")
// },
// } // }
// //
// // use mockedRuntime in code that requires Runtime // // use mockedRuntime in code that requires Runtime
@ -30,6 +33,9 @@ type RuntimeMock struct {
// ExecFunc mocks the Exec method. // ExecFunc mocks the Exec method.
ExecFunc func(strings []string) error ExecFunc func(strings []string) error
// StringFunc mocks the String method.
StringFunc func() string
// calls tracks calls to the methods. // calls tracks calls to the methods.
calls struct { calls struct {
// Exec holds details about calls to the Exec method. // Exec holds details about calls to the Exec method.
@ -37,8 +43,12 @@ type RuntimeMock struct {
// Strings is the strings argument value. // Strings is the strings argument value.
Strings []string Strings []string
} }
// String holds details about calls to the String method.
String []struct {
}
} }
lockExec sync.RWMutex lockExec sync.RWMutex
lockString sync.RWMutex
} }
// Exec calls ExecFunc. // Exec calls ExecFunc.
@ -75,3 +85,33 @@ func (mock *RuntimeMock) ExecCalls() []struct {
mock.lockExec.RUnlock() mock.lockExec.RUnlock()
return calls return calls
} }
// String calls StringFunc.
func (mock *RuntimeMock) String() string {
callInfo := struct {
}{}
mock.lockString.Lock()
mock.calls.String = append(mock.calls.String, callInfo)
mock.lockString.Unlock()
if mock.StringFunc == nil {
var (
sOut string
)
return sOut
}
return mock.StringFunc()
}
// StringCalls gets all the calls that were made to String.
// Check the length with:
//
// len(mockedRuntime.StringCalls())
func (mock *RuntimeMock) StringCalls() []struct {
} {
var calls []struct {
}
mock.lockString.RLock()
calls = mock.calls.String
mock.lockString.RUnlock()
return calls
}

View File

@ -83,3 +83,8 @@ func (r *modifyingRuntimeWrapper) modify() error {
} }
return nil return nil
} }
// String returns a string representation of the runtime.
func (r *modifyingRuntimeWrapper) String() string {
return fmt.Sprintf("modify on-create and forward to %s", r.runtime.String())
}

View File

@ -63,3 +63,8 @@ func (s pathRuntime) Exec(args []string) error {
return s.execRuntime.Exec(runtimeArgs) return s.execRuntime.Exec(runtimeArgs)
} }
// String returns the path to the specified runtime as the string representation.
func (s pathRuntime) String() string {
return s.path
}

View File

@ -37,3 +37,7 @@ func (r syscallExec) Exec(args []string) error {
// err is nil or not. // err is nil or not.
return fmt.Errorf("unexpected return from exec '%v'", args[0]) return fmt.Errorf("unexpected return from exec '%v'", args[0])
} }
func (r syscallExec) String() string {
return "exec"
}