1
0
mirror of https://github.com/golang/go synced 2024-11-22 01:04:40 -07:00

gotest: enable unit tests for cmd directories

R=r
CC=golang-dev
https://golang.org/cl/4001056
This commit is contained in:
Russ Cox 2011-02-03 14:54:01 -05:00
parent c1a695c160
commit 9d3db4b62e
2 changed files with 49 additions and 16 deletions

View File

@ -27,3 +27,22 @@ CLEANFILES+=$(TARG)
nuke: clean
rm -f $(QUOTED_GOBIN)/$(TARG)
# for gotest
testpackage: _test/main.a
testpackage-clean:
rm -f _test/main.a _gotest_.$O
testpackage: _test/main.a
_test/main.a: _gotest_.$O
@mkdir -p _test
rm -f $@
gopack grc $@ _gotest_.$O
_gotest_.$O: $(GOFILES) $(GOTESTFILES)
$(GC) -o $@ $(GOFILES) $(GOTESTFILES)
importpath:
echo main

View File

@ -119,6 +119,12 @@ nmgrep() {
done
}
localname() {
# The package main has been renamed to __main__ when imported.
# Adjust its uses.
echo $1 | sed 's/^main\./__main__./'
}
importpath=$(gomake -s importpath)
{
# test functions are named TestFoo
@ -139,9 +145,20 @@ importpath=$(gomake -s importpath)
echo
# imports
if echo "$tests" | egrep -v '_test\.' >/dev/null; then
if [ "$importpath" != "testing" ]; then
case "$importpath" in
testing)
;;
main)
# Import path main is reserved, so import with
# explicit reference to ./_test/main instead.
# Also, the file we are writing defines a function named main,
# so rename this import to __main__ to avoid name conflict.
echo 'import __main__ "./_test/main"'
;;
*)
echo 'import "'$importpath'"'
fi
;;
esac
fi
if $havex; then
echo 'import "./_xtest_"'
@ -153,23 +170,20 @@ importpath=$(gomake -s importpath)
echo 'var tests = []testing.InternalTest{'
for i in $tests
do
echo ' {"'$i'", '$i'},'
j=$(localname $i)
echo ' {"'$i'", '$j'},'
done
echo '}'
# benchmark array
if [ "$benchmarks" = "" ]
then
# keep the empty array gofmt-safe.
# (not an issue for the test array, which is never empty.)
echo 'var benchmarks = []testing.InternalBenchmark{}'
else
echo 'var benchmarks = []testing.InternalBenchmark{'
for i in $benchmarks
do
echo ' {"'$i'", '$i'},'
done
echo '}'
fi
# The comment makes the multiline declaration
# gofmt-safe even when there are no benchmarks.
echo 'var benchmarks = []testing.InternalBenchmark{ //'
for i in $benchmarks
do
j=$(localname $i)
echo ' {"'$i'", '$j'},'
done
echo '}'
# body
echo
echo 'func main() {'