diff --git a/checkers/bool.go b/checkers/bool.go index 108ad1f04..9f48f4231 100644 --- a/checkers/bool.go +++ b/checkers/bool.go @@ -1,4 +1,4 @@ -// Copyright 2013 Canonical Ltd. +// Copyright 2011 Canonical Ltd. // Licensed under the LGPLv3, see LICENCE file for details. package checkers @@ -27,7 +27,9 @@ var IsFalse gc.Checker = gc.Not(IsTrue) func (checker *isTrueChecker) Check(params []interface{}, names []string) (result bool, error string) { value := reflect.ValueOf(params[0]) - + if !value.IsValid() { + return false, fmt.Sprintf("expected type bool, received %s", value) + } switch value.Kind() { case reflect.Bool: return value.Bool(), "" diff --git a/checkers/bool_test.go b/checkers/bool_test.go index 7b09c4f80..d433c5bc9 100644 --- a/checkers/bool_test.go +++ b/checkers/bool_test.go @@ -31,11 +31,15 @@ func (s *BoolSuite) TestIsTrue(c *gc.C) { result, msg = jc.IsTrue.Check([]interface{}{42}, nil) c.Assert(result, gc.Equals, false) c.Assert(msg, gc.Equals, `expected type bool, received type int`) + + result, msg = jc.IsTrue.Check([]interface{}{nil}, nil) + c.Assert(result, gc.Equals, false) + c.Assert(msg, gc.Equals, `expected type bool, received `) } func (s *BoolSuite) TestIsFalse(c *gc.C) { - c.Assert(false, jc.IsFalse) - c.Assert(true, gc.Not(jc.IsFalse)) + c.Check(false, jc.IsFalse) + c.Check(true, gc.Not(jc.IsFalse)) } func is42(i int) bool {