github.com/robertojrojas/docker@v1.9.1/pkg/integration/checker/checker.go (about)

     1  // Package checker provide Docker specific implementations of the go-check.Checker interface.
     2  package checker
     3  
     4  import (
     5  	"fmt"
     6  	"strings"
     7  
     8  	"github.com/go-check/check"
     9  )
    10  
    11  // As a commodity, we bring all check.Checker variables into the current namespace to avoid having
    12  // to think about check.X versus checker.X.
    13  var (
    14  	DeepEquals   = check.DeepEquals
    15  	Equals       = check.Equals
    16  	ErrorMatches = check.ErrorMatches
    17  	FitsTypeOf   = check.FitsTypeOf
    18  	HasLen       = check.HasLen
    19  	Implements   = check.Implements
    20  	IsNil        = check.IsNil
    21  	Matches      = check.Matches
    22  	Not          = check.Not
    23  	NotNil       = check.NotNil
    24  	PanicMatches = check.PanicMatches
    25  	Panics       = check.Panics
    26  )
    27  
    28  // Contains checker verifies that string value contains a substring.
    29  var Contains check.Checker = &containsChecker{
    30  	&check.CheckerInfo{
    31  		Name:   "Contains",
    32  		Params: []string{"value", "substring"},
    33  	},
    34  }
    35  
    36  type containsChecker struct {
    37  	*check.CheckerInfo
    38  }
    39  
    40  func (checker *containsChecker) Check(params []interface{}, names []string) (bool, string) {
    41  	return contains(params[0], params[1])
    42  }
    43  
    44  func contains(value, substring interface{}) (bool, string) {
    45  	substringStr, ok := substring.(string)
    46  	if !ok {
    47  		return false, "Substring must be a string"
    48  	}
    49  	valueStr, valueIsStr := value.(string)
    50  	if !valueIsStr {
    51  		if valueWithStr, valueHasStr := value.(fmt.Stringer); valueHasStr {
    52  			valueStr, valueIsStr = valueWithStr.String(), true
    53  		}
    54  	}
    55  	if valueIsStr {
    56  		return strings.Contains(valueStr, substringStr), ""
    57  	}
    58  	return false, "Obtained value is not a string and has no .String()"
    59  }