blob: daca144ee0e2c9dbcf6a5cd4ba40f7139c5faaa6 [file] [log] [blame]
#!/bin/bash
# Copyright 2012 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.
set -e
go build -o testgo
ok=true
# Test that error messages have file:line information
# at beginning of line.
for i in testdata/errmsg/*.go
do
# TODO: |cat should not be necessary here but is.
./testgo test $i 2>&1 | cat >err.out || true
if ! grep -q "^$i:" err.out; then
echo "$i: missing file:line in error message"
cat err.out
ok=false
fi
done
# Test local (./) imports.
./testgo build -o hello testdata/local/easy.go
./hello >hello.out
if ! grep -q '^easysub\.Hello' hello.out; then
echo "testdata/local/easy.go did not generate expected output"
cat hello.out
ok=false
fi
./testgo build -o hello testdata/local/easysub/main.go
./hello >hello.out
if ! grep -q '^easysub\.Hello' hello.out; then
echo "testdata/local/easysub/main.go did not generate expected output"
cat hello.out
ok=false
fi
./testgo build -o hello testdata/local/hard.go
./hello >hello.out
if ! grep -q '^sub\.Hello' hello.out || ! grep -q '^subsub\.Hello' hello.out ; then
echo "testdata/local/hard.go did not generate expected output"
cat hello.out
ok=false
fi
rm -f err.out hello.out hello
# Test that go install x.go fails.
if ./testgo install testdata/local/easy.go >/dev/null 2>&1; then
echo "go install testdata/local/easy.go succeeded"
ok=false
fi
# Test tests with relative imports.
if ! ./testgo test ./testdata/testimport; then
echo "go test ./testdata/testimport failed"
ok=false
fi
# Test tests with relative imports in packages synthesized
# from Go files named on the command line.
if ! ./testgo test ./testdata/testimport/*.go; then
echo "go test ./testdata/testimport/*.go failed"
ok=false
fi
if $ok; then
echo PASS
else
echo FAIL
exit 1
fi