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
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
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_"'
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() {'