diff options
author | Rob Pike <r@golang.org> | 2009-05-05 17:05:39 -0700 |
---|---|---|
committer | Rob Pike <r@golang.org> | 2009-05-05 17:05:39 -0700 |
commit | b6708b2dad4af458e69fde7fc596ecdce03280d0 (patch) | |
tree | 11cfc1b980ecce9cb0eec06f49cc53ce05faf350 /src/lib/testing.go | |
parent | 658b10477a16151de7e4d51657993f95445f11ee (diff) | |
download | golang-b6708b2dad4af458e69fde7fc596ecdce03280d0.tar.gz |
directory-per-package step 1: move files from lib/X.go to lib/X/X.go
no substantive changes except:
- new Makefiles, all auto-generated
- go/src/lib/Makefile has been extensively edited
R=rsc
OCL=28310
CL=28310
Diffstat (limited to 'src/lib/testing.go')
-rw-r--r-- | src/lib/testing.go | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/src/lib/testing.go b/src/lib/testing.go deleted file mode 100644 index 2f717d0e9..000000000 --- a/src/lib/testing.go +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// The testing package provides support for automated testing of Go packages. -// It is intended to be used in concert with the ``gotest'' utility, which automates -// execution of any function of the form -// func TestXxx(*testing.T) -// where Xxx can by any alphanumeric string (but the first letter must not be in -// [a-z]) and serves to identify the test routine. -// These TestXxx routines should be declared within the package they are testing. -package testing - -import ( - "flag"; - "fmt"; -) - -// Report as tests are run; default is silent for success. -var chatty = flag.Bool("chatty", false, "chatty") - -// Insert tabs after newlines - but not the last one -func tabify(s string) string { - for i := 0; i < len(s) - 1; i++ { // -1 because if last char is newline, don't bother - if s[i] == '\n' { - return s[0:i+1] + "\t" + tabify(s[i+1:len(s)]); - } - } - return s -} - -// T is a type passed to Test functions to manage test state and support formatted test logs. -// Logs are accumulated during execution and dumped to standard error when done. -type T struct { - errors string; - failed bool; - ch chan *T; -} - -// Fail marks the Test function as having failed but continues execution. -func (t *T) Fail() { - t.failed = true -} - -// FailNow marks the Test function as having failed and stops its execution. -// Execution will continue at the next Test. -func (t *T) FailNow() { - t.Fail(); - t.ch <- t; - sys.Goexit(); -} - -// Log formats its arguments using default formatting, analogous to Print(), -// and records the text in the error log. -func (t *T) Log(args ...) { - t.errors += "\t" + tabify(fmt.Sprintln(args)); -} - -// Log formats its arguments according to the format, analogous to Printf(), -// and records the text in the error log. -func (t *T) Logf(format string, args ...) { - t.errors += tabify(fmt.Sprintf("\t" + 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(). -func (t *T) Error(args ...) { - t.Log(args); - t.Fail(); -} - -// Errorf is equivalent to Logf() followed by Fail(). -func (t *T) Errorf(format string, args ...) { - t.Logf(format, args); - t.Fail(); -} - -// Fatal is equivalent to Log() followed by FailNow(). -func (t *T) Fatal(args ...) { - t.Log(args); - t.FailNow(); -} - -// Fatalf is equivalent to Logf() followed by FailNow(). -func (t *T) Fatalf(format string, args ...) { - t.Logf(format, args); - t.FailNow(); -} - -// An internal type but exported because it is cross-package; part of the implementation -// of gotest. -type Test struct { - Name string; - F func(*T); -} - -func tRunner(t *T, test *Test) { - test.F(t); - t.ch <- t; -} - -// An internal function but exported because it is cross-package; part of the implementation -// of gotest. -func Main(tests []Test) { - flag.Parse(); - ok := true; - if len(tests) == 0 { - println("testing: warning: no tests to run"); - } - for i := 0; i < len(tests); i++ { - if *chatty { - println("=== RUN ", tests[i].Name); - } - t := new(T); - t.ch = make(chan *T); - go tRunner(t, &tests[i]); - <-t.ch; - if t.failed { - println("--- FAIL:", tests[i].Name); - print(t.errors); - ok = false; - } else if *chatty { - println("--- PASS:", tests[i].Name); - print(t.errors); - } - } - if !ok { - println("FAIL"); - sys.Exit(1); - } - println("PASS"); -} |