package matchers import ( "fmt" "os" "github.com/onsi/gomega/format" ) type BeAnExistingFileMatcher struct { expected interface{} } func (matcher *BeAnExistingFileMatcher) Match(actual interface{}) (success bool, err error) { actualFilename, ok := actual.(string) if !ok { return false, fmt.Errorf("BeAnExistingFileMatcher matcher expects a file path") } if _, err = os.Stat(actualFilename); err != nil { switch { case os.IsNotExist(err): return false, nil default: return false, err } } return true, nil } func (matcher *BeAnExistingFileMatcher) FailureMessage(actual interface{}) (message string) { return format.Message(actual, fmt.Sprintf("to exist")) } func (matcher *BeAnExistingFileMatcher) NegatedFailureMessage(actual interface{}) (message string) { return format.Message(actual, fmt.Sprintf("not to exist")) }