]> Cypherpunks repositories - gostls13.git/commitdiff
new gotest shell script (will be a proper command some day, probably)
authorRob Pike <r@golang.org>
Tue, 18 Nov 2008 22:12:14 +0000 (14:12 -0800)
committerRob Pike <r@golang.org>
Tue, 18 Nov 2008 22:12:14 +0000 (14:12 -0800)
automates construction and execution of unit tests.

R=rsc
DELTA=60  (58 added, 0 deleted, 2 changed)
OCL=19482
CL=19484

src/cmd/clean.bash
src/cmd/gotest/Makefile [new file with mode: 0644]
src/cmd/gotest/gotest [new file with mode: 0755]
src/cmd/make.bash
src/lib/make.bash

index 0c0cc7fcf58e5d490d046965151dbe975452e34d..cc5d5ae66bea887a9d3c4f1b4255d05978dd4a68 100644 (file)
@@ -3,7 +3,7 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-for i in cc 6l 6a 6c gc 6g ar db nm blyacc acid cov gobuild prof
+for i in cc 6l 6a 6c gc 6g ar db nm blyacc acid cov gobuild prof gotest
 do
        cd $i
        make clean
diff --git a/src/cmd/gotest/Makefile b/src/cmd/gotest/Makefile
new file mode 100644 (file)
index 0000000..4cfa724
--- /dev/null
@@ -0,0 +1,13 @@
+# 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.
+
+include ../../Make.conf
+
+TARG=gotest
+
+clean:
+       @true
+
+install: $(TARG)
+       cp $(TARG) $(BIN)/$(TARG)
diff --git a/src/cmd/gotest/gotest b/src/cmd/gotest/gotest
new file mode 100755 (executable)
index 0000000..cc0b997
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/bash
+# 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.
+
+# Using all the test*.go files in the current directory, write out a file
+# _testmain.go that runs all its tests. Compile everything and run the
+# tests.
+
+set -e
+
+gofiles=$(echo test*.go)
+ofiles=$(echo $gofiles | sed 's/\.go/.6/g')
+files=$(echo $gofiles | sed 's/\.go//g')
+echo $ofiles
+
+for i in $gofiles
+do
+       6g $i
+done
+
+# They all compile; now generate the code to call them.
+
+{
+       # package spec
+       echo 'package main'
+       echo
+       # imports
+       for i in $files
+       do
+               echo 'import "./'$i'"'
+       done
+       echo 'import "testing"'
+       # test array
+       echo
+       echo 'var tests = &[]testing.Test {'
+       for i in $(6nm $ofiles | grep ' T .*·Test' | sed 's/.* //; s/·/./')
+       do
+               echo '  testing.Test{ "'$i'", &'$i' },'
+       done
+       echo '}'
+       # body
+       echo
+       echo 'func main() {'
+       echo '  testing.Main(tests)'
+       echo '}'
+}>_testmain.go
+
+6g _testmain.go
+6l _testmain.6
+6.out
index 280ae34c129d8109c8151aa289d382b3b9814241..1e29ae76b5a6cac4b4a632cff3cea6a5bdd524ca 100644 (file)
@@ -12,7 +12,7 @@ bash mkenam
 make enam.o
 cd ..
 
-for i in cc 6l 6a 6c gc 6g ar db nm blyacc acid cov gobuild prof
+for i in cc 6l 6a 6c gc 6g ar db nm blyacc acid cov gobuild prof gotest
 do
        echo; echo; echo %%%% making $i %%%%; echo
        cd $i
index b255b081da3a5dea3de9b3e9e29be720aa1170a4..9bc6198817799af381c3b1ebeb4a5365543db162 100755 (executable)
@@ -48,6 +48,7 @@ buildfiles    flag.go\
                bufio.go\
                once.go\
                bignum.go\
+               testing.go\
        
 builddirs      net\
                time\