dotcloud/docker

View on GitHub
integration-cli/requirement/requirement.go

Summary

Maintainability
A
0 mins
Test Coverage
package requirement // import "github.com/docker/docker/integration-cli/requirement"

import (
    "path"
    "reflect"
    "runtime"
    "strings"
    "testing"
)

// Test represent a function that can be used as a requirement validation.
type Test func() bool

// Is checks if the environment satisfies the requirements
// for the test to run or skips the tests.
func Is(t *testing.T, requirements ...Test) {
    t.Helper()
    for _, r := range requirements {
        isValid := r()
        if !isValid {
            requirementFunc := runtime.FuncForPC(reflect.ValueOf(r).Pointer()).Name()
            t.Skipf("unmatched requirement %s", extractRequirement(requirementFunc))
        }
    }
}

func extractRequirement(requirementFunc string) string {
    requirement := path.Base(requirementFunc)
    return strings.SplitN(requirement, ".", 2)[1]
}