github.com/wozhu6104/docker@v20.10.10+incompatible/integration-cli/requirement/requirement.go (about)

     1  package requirement // import "github.com/docker/docker/integration-cli/requirement"
     2  
     3  import (
     4  	"path"
     5  	"reflect"
     6  	"runtime"
     7  	"strings"
     8  	"testing"
     9  )
    10  
    11  // Test represent a function that can be used as a requirement validation.
    12  type Test func() bool
    13  
    14  // Is checks if the environment satisfies the requirements
    15  // for the test to run or skips the tests.
    16  func Is(t *testing.T, requirements ...Test) {
    17  	t.Helper()
    18  	for _, r := range requirements {
    19  		isValid := r()
    20  		if !isValid {
    21  			requirementFunc := runtime.FuncForPC(reflect.ValueOf(r).Pointer()).Name()
    22  			t.Skipf("unmatched requirement %s", extractRequirement(requirementFunc))
    23  		}
    24  	}
    25  }
    26  
    27  func extractRequirement(requirementFunc string) string {
    28  	requirement := path.Base(requirementFunc)
    29  	return strings.SplitN(requirement, ".", 2)[1]
    30  }