testing: add t.Failed() bool

R=r
DELTA=18  (10 added, 4 deleted, 4 changed)
OCL=29000
CL=29034
This commit is contained in:
Russ Cox 2009-05-19 11:00:55 -07:00
parent b91a043d02
commit 73c73855ea

View File

@ -21,11 +21,16 @@ import (
// Report as tests are run; default is silent for success. // Report as tests are run; default is silent for success.
var chatty = flag.Bool("chatty", false, "chatty") var chatty = flag.Bool("chatty", false, "chatty")
// Insert tabs after newlines - but not the last one // Insert final newline if needed and tabs after internal newlines.
func tabify(s string) string { func tabify(s string) string {
for i := 0; i < len(s) - 1; i++ { // -1 because if last char is newline, don't bother n := len(s);
if n > 0 && s[n-1] != '\n' {
s += "\n";
n++;
}
for i := 0; i < n - 1; i++ { // -1 to avoid final newline
if s[i] == '\n' { if s[i] == '\n' {
return s[0:i+1] + "\t" + tabify(s[i+1:len(s)]); return s[0:i+1] + "\t" + tabify(s[i+1:n]);
} }
} }
return s return s
@ -44,6 +49,11 @@ func (t *T) Fail() {
t.failed = true t.failed = true
} }
// Failed returns whether the Test function has failed.
func (t *T) Failed() bool {
return t.failed
}
// FailNow marks the Test function as having failed and stops its execution. // FailNow marks the Test function as having failed and stops its execution.
// Execution will continue at the next Test. // Execution will continue at the next Test.
func (t *T) FailNow() { func (t *T) FailNow() {
@ -61,11 +71,7 @@ func (t *T) Log(args ...) {
// Log formats its arguments according to the format, analogous to Printf(), // Log formats its arguments according to the format, analogous to Printf(),
// and records the text in the error log. // and records the text in the error log.
func (t *T) Logf(format string, args ...) { func (t *T) Logf(format string, args ...) {
t.errors += tabify(fmt.Sprintf("\t" + format, args)); t.errors += "\t" + tabify(fmt.Sprintf(format, args));
l := len(t.errors);
if l > 0 && t.errors[l-1] != '\n' {
t.errors += "\n"
}
} }
// Error is equivalent to Log() followed by Fail(). // Error is equivalent to Log() followed by Fail().