blob: ac83700e8923afb7a74cded365e21045bd0e0077 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#!/usr/bin/env bash
# because things are never simple.
# See https://github.com/codecov/example-go#caveat-multiple-files
set -e
echo "" > coverage.txt
# show the network configuration. This can help troubleshooting integration
# tests.
ip a
GO_TEST_OPTS=()
if [[ "$TRAVIS_GO_VERSION" =~ ^1.(9|10|11|12)$ ]]
then
# We use fmt.Errorf with verb "%w" which appeared only in Go1.13.
# So the code compiles and works with Go1.12, but error descriptions
# looks uglier and it does not pass "vet" tests on Go<1.13.
GO_TEST_OPTS+='-vet=off'
fi
for d in $(go list ./... | grep -v vendor); do
go test -race -coverprofile=profile.out -covermode=atomic ${GO_TEST_OPTS[@]} $d
if [ -f profile.out ]; then
cat profile.out >> coverage.txt
rm profile.out
fi
# integration tests
go test -c -cover -tags=integration -race -covermode=atomic ${GO_TEST_OPTS[@]} $d
testbin="./$(basename $d).test"
# only run it if it was built - i.e. if there are integ tests
test -x "${testbin}" && sudo "./${testbin}" -test.coverprofile=profile.out
if [ -f profile.out ]; then
cat profile.out >> coverage.txt
rm -f profile.out
fi
done
# check that we are not breaking some projects that depend on us. Remove this after moving to
# Go versioned modules, see https://github.com/insomniacslk/dhcp/issues/123
# Skip go1.12 for this check. rtr7/router7 depends on google/nftables, which does not
# support go1.12
if [[ "$TRAVIS_GO_VERSION" =~ ^1.(9|10|11|12)$ ]]
then
exit 0
fi
go get github.com/rtr7/router7/cmd/...
cd "${GOPATH}/src/github.com/rtr7/router7"
go build github.com/rtr7/router7/cmd/...
|