]> Cypherpunks repositories - gostls13.git/commitdiff
gotestify regexp
authorRob Pike <r@golang.org>
Wed, 19 Nov 2008 23:38:46 +0000 (15:38 -0800)
committerRob Pike <r@golang.org>
Wed, 19 Nov 2008 23:38:46 +0000 (15:38 -0800)
R=rsc
DELTA=101  (53 added, 25 deleted, 23 changed)
OCL=19635
CL=19637

src/lib/regexp/Makefile
src/lib/regexp/test.go

index 45ee7d44181ce9ab54cc0b252f0f1629be49b937..3e82f1c1f6e533e2c8e958766cd853146bd1cfed 100644 (file)
@@ -2,28 +2,54 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-A=6
-G=$(A)g
-L=$(A)l
-PKG=$(GOROOT)/pkg/regexp.$A
+# DO NOT EDIT.  Automatically generated by gobuild.
+# gobuild -m >Makefile
+O=6
+GC=$(O)g
+CC=$(O)c -w
+AS=$(O)a
+AR=$(O)ar
 
-test:  main.$A test.$A
-       $L -o test test.$A
-       ./test
+default: packages
 
-install:       regexp.$A
-       cp regexp.$A $(PKG)
+clean:
+       rm -f *.$O *.a $O.out
 
-main:  main.$A
-       $L -o main main.$A
+test: packages
+       gotest
 
-main.$A: regexp.$A
+coverage: packages
+       gotest
+       6cov -g `pwd` | grep -v '^test.*\.go:'
 
-clean:
-       rm -f *.6 test
+%.$O: %.go
+       $(GC) $*.go
+
+%.$O: %.c
+       $(CC) $*.c
+
+%.$O: %.s
+       $(AS) $*.s
+
+O1=\
+       regexp.$O\
+
+regexp.a: a1
+
+a1:    $(O1)
+       $(AR) grc regexp.a regexp.$O
+       rm -f $(O1)
+
+newpkg: clean
+       $(AR) grc regexp.a
+
+$(O1): newpkg
 
 nuke: clean
-       rm -f $(PKG)
+       rm -f $(GOROOT)/pkg/regexp.a
+
+packages: regexp.a
+
+install: packages
+       cp regexp.a $(GOROOT)/pkg/regexp.a
 
-%.6:   %.go
-       $G $<
index 223064c071d2ca4eee4002a7665f27063eb6cbda..dd2e94712d483fd9bcff8a93319e095a4a0f9685 100644 (file)
@@ -2,11 +2,12 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package main
+package regexp
 
 import (
        "os";
        "regexp";
+       "testing";
 )
 
 var good_re = []string{
@@ -85,11 +86,10 @@ var matches = []Tester {
        Tester{ `a*(|(b))c*`,   "aacc", Vec{0,4, 2,2, -1,-1, END} },
 }
 
-func Compile(expr string, error *os.Error) regexp.Regexp {
+func CompileTest(t *testing.T, expr string, error *os.Error) regexp.Regexp {
        re, err := regexp.Compile(expr);
        if err != error {
-               print("compiling `", expr, "`; unexpected error: ", err.String(), "\n");
-               sys.exit(1);
+               t.Error("compiling `", expr, "`; unexpected error: ", err.String());
        }
        return re
 }
@@ -104,13 +104,13 @@ func MarkedLen(m *[] int) int {
        return i
 }
 
-func PrintVec(m *[] int) {
+func PrintVec(t *testing.T, m *[] int) {
        l := MarkedLen(m);
        if l == 0 {
-               print("<no match>");
+               t.Log("\t<no match>");
        } else {
                for i := 0; i < l && m[i] != END; i = i+2 {
-                       print(m[i], ",", m[i+1], " ")
+                       t.Log("\t", m[i], ",", m[i+1])
                }
        }
 }
@@ -128,33 +128,35 @@ func Equal(m1, m2 *[]int) bool {
        return true
 }
 
-func Match(expr string, str string, match *[]int) {
-       re := Compile(expr, nil);
+func MatchTest(t *testing.T, expr string, str string, match *[]int) {
+       re := CompileTest(t, expr, nil);
+       if re == nil {
+               return
+       }
        m := re.Execute(str);
        if !Equal(m, match) {
-               print("failure on `", expr, "` matching `", str, "`:\n");
-               PrintVec(m);
-               print("\nshould be:\n");
-               PrintVec(match);
-               print("\n");
-               sys.exit(1);
+               t.Error("failure on `", expr, "` matching `", str, "`:");
+               PrintVec(t, m);
+               t.Log("should be:");
+               PrintVec(t, match);
        }
 }
 
-func main() {
-       //regexp.debug = true;
-       if sys.argc() > 1 {
-               Compile(sys.argv(1), nil);
-               sys.exit(0);
-       }
+export func TestGoodCompile(t *testing.T) {
        for i := 0; i < len(good_re); i++ {
-               Compile(good_re[i], nil);
+               CompileTest(t, good_re[i], nil);
        }
+}
+
+export func TestBadCompile(t *testing.T) {
        for i := 0; i < len(bad_re); i++ {
-               Compile(bad_re[i].re, bad_re[i].err)
+               CompileTest(t, bad_re[i].re, bad_re[i].err)
        }
+}
+
+export func TestMatch(t *testing.T) {
        for i := 0; i < len(matches); i++ {
-               t := &matches[i];
-               Match(t.re, t.text, &t.match)
+               test := &matches[i];
+               MatchTest(t, test.re, test.text, &test.match)
        }
 }