summaryrefslogtreecommitdiff
path: root/test/testlib
diff options
context:
space:
mode:
Diffstat (limited to 'test/testlib')
-rw-r--r--test/testlib107
1 files changed, 106 insertions, 1 deletions
diff --git a/test/testlib b/test/testlib
index 3858431a7..de138b1d1 100644
--- a/test/testlib
+++ b/test/testlib
@@ -5,14 +5,104 @@
# These function names are also known to
# (and are the plan for transitioning to) run.go.
+# helper (not known to run.go)
+# group file list by packages and return list of packages
+# each package is a comma-separated list of go files.
+pkgs() {
+ pkglist=$(grep -h '^package ' $* | awk '{print $2}' | sort -u)
+ for p in $pkglist
+ do
+ echo $(grep -l "^package $p\$" $*) | tr ' ' ,
+ done | sort
+}
+
+# +build aborts execution if the supplied tags don't match,
+# i.e. none of the tags (x or !x) matches GOARCH or GOOS.
++build() {
+ if (( $# == 0 )); then
+ return
+ fi
+ for tag; do
+ case $tag in
+ $GOARCH|$GOOS)
+ #echo >&2 "match $tag in $1"
+ return # don't exclude.
+ ;;
+ '!'$GOARCH|'!'$GOOS)
+ ;;
+ '!'*)
+ # not x where x is neither GOOS nor GOARCH.
+ #echo >&2 "match $tag in $1"
+ return # don't exclude
+ ;;
+ esac
+ done
+ # no match.
+ exit 0
+}
+
compile() {
$G $D/$F.go
}
+compiledir() {
+ for pkg in $(pkgs $D/$F.dir/*.go)
+ do
+ $G -I . $(echo $pkg | tr , ' ') || return 1
+ done
+}
+
+errorcheckdir() {
+ lastzero=""
+ if [ "$1" = "-0" ]; then
+ lastzero="-0"
+ fi
+ pkgs=$(pkgs $D/$F.dir/*.go)
+ for pkg in $pkgs.last
+ do
+ zero="-0"
+ case $pkg in
+ *.last)
+ pkg=$(echo $pkg |sed 's/\.last$//')
+ zero=$lastzero
+ esac
+ errchk $zero $G -D . -I . -e $(echo $pkg | tr , ' ')
+ done
+}
+
+rundir() {
+ lastfile=""
+ for pkg in $(pkgs $D/$F.dir/*.go)
+ do
+ name=$(echo $pkg | sed 's/\.go.*//; s/.*\///')
+ $G -D . -I . -e $(echo $pkg | tr , ' ') || return 1
+ lastfile=$name
+ done
+ $L -o $A.out -L . $lastfile.$A
+ ./$A.out
+}
+
+rundircmpout() {
+ lastfile=""
+ for pkg in $(pkgs $D/$F.dir/*.go)
+ do
+ name=$(echo $pkg | sed 's/\.go.*//; s/.*\///')
+ $G -D . -I . -e $(echo $pkg | tr , ' ') || return 1
+ lastfile=$name
+ done
+ $L -o $A.out -L . $lastfile.$A
+ ./$A.out 2>&1 | cmp - $D/$F.out
+}
+
build() {
$G $D/$F.go && $L $F.$A
}
+runoutput() {
+ go run "$D/$F.go" "$@" > tmp.go
+ go run tmp.go
+}
+
run() {
gofiles=""
ingo=true
@@ -36,7 +126,22 @@ cmpout() {
}
errorcheck() {
- errchk $G -e $D/$F.go
+ zero=""
+ if [ "$1" = "-0" ]; then
+ zero="-0"
+ shift
+ fi
+ errchk $zero $G -e $* $D/$F.go
+}
+
+errorcheckoutput() {
+ zero=""
+ if [ "$1" = "-0" ]; then
+ zero="-0"
+ shift
+ fi
+ go run "$D/$F.go" "$@" > tmp.go
+ errchk $zero $G -e tmp.go
}
skip() {