diff --git a/.travis.yml b/.travis.yml index a38787b..87b2016 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: go go: - - 1.5 + - 1.7 addons: apt: @@ -15,6 +15,7 @@ addons: install: - mkdir -p /home/travis/bin + - sudo ln -s /usr/bin/clang-3.4 /home/travis/bin/clang - sudo ln -s /usr/bin/llvm-config-3.4 /home/travis/bin/llvm-config - sudo ln -s /usr/lib/llvm-3.4/lib/libclang.so.1 /usr/lib/x86_64-linux-gnu/libclang.so - sudo ldconfig @@ -36,7 +37,9 @@ script: - make lint # Do tests and code coverage - - ginkgo -r -cover -skipPackage="testdata" + - make test-throughout + + - ginkgo -cover -skipPackage="testdata" - gover - if [ "$TRAVIS_SECURE_ENV_VARS" = "true" ]; then goveralls -coverprofile=gover.coverprofile -service=travis-ci -repotoken $COVERALLS_TOKEN; fi diff --git a/Makefile b/Makefile index d396d69..138249c 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,8 @@ -.PHONY: all install install-dependencies install-tools lint test test-verbose +.PHONY: all install install-dependencies install-tools lint test test-throughout test-verbose -ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) -export ROOT_DIR +export ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) + +export CC := clang ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) $(eval $(ARGS):;@:) # turn arguments into do-nothing targets @@ -26,8 +27,10 @@ install-tools: go get -u github.com/modocache/gover/... go get -u github.com/mattn/goveralls/... lint: install - scripts/lint.sh + $(ROOT_DIR)/scripts/lint.sh test: - CGO_LDFLAGS="-L`llvm-config --libdir`" go test -timeout 60s -race ./... + CGO_LDFLAGS="-L`llvm-config --libdir`" go test -timeout 60s ./... +test-throughout: + $(ROOT_DIR)/scripts/test-throughout.sh test-verbose: - CGO_LDFLAGS="-L`llvm-config --libdir`" go test -timeout 60s -race -v ./... + CGO_LDFLAGS="-L`llvm-config --libdir`" go test -timeout 60s -v ./... diff --git a/scripts/generate-and-test.sh b/scripts/generate-and-test.sh index 0d0df4d..26d8ded 100755 --- a/scripts/generate-and-test.sh +++ b/scripts/generate-and-test.sh @@ -10,7 +10,7 @@ export LLVM_VERSION=$1 cd clang/ || exit rm -rf clang-c/ -rm *_gen.go +rm -f *_gen.go go-clang-gen || exit diff --git a/scripts/switch-clang-version.sh b/scripts/switch-clang-version.sh index 56da84d..6bfe0df 100755 --- a/scripts/switch-clang-version.sh +++ b/scripts/switch-clang-version.sh @@ -11,8 +11,11 @@ export LLVM_VERSION=$1 sudo add-apt-repository --enable-source "deb http://llvm.org/apt/${CODENAME}/ llvm-toolchain-${CODENAME}-${LLVM_VERSION} main" sudo apt-get update -sudo rm /usr/bin/llvm-config -sudo rm /usr/lib/x86_64-linux-gnu/libclang.so +sudo rm -f /usr/bin/clang +sudo rm -f /usr/bin/llvm-config +sudo rm -f /usr/lib/x86_64-linux-gnu/libclang.so sudo apt-get install -y clang-$LLVM_VERSION libclang1-$LLVM_VERSION libclang-$LLVM_VERSION-dev llvm-$LLVM_VERSION llvm-$LLVM_VERSION-dev llvm-$LLVM_VERSION-runtime libclang-common-$LLVM_VERSION-dev +sudo ln -s /usr/bin/clang-$LLVM_VERSION /usr/bin/clang sudo ln -s /usr/bin/llvm-config-$LLVM_VERSION /usr/bin/llvm-config sudo ln -s /usr/lib/x86_64-linux-gnu/libclang-$LLVM_VERSION.so /usr/lib/x86_64-linux-gnu/libclang.so +sudo ldconfig diff --git a/scripts/test-throughout.sh b/scripts/test-throughout.sh new file mode 100755 index 0000000..7e96b8f --- /dev/null +++ b/scripts/test-throughout.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -exuo pipefail + +clang --version + +LLVM_VERSION=$(clang --version | grep --max-count=1 "clang version" | sed -r 's/^.+clang version ([0-9]+\.[0-9]+).+$/\1/') + +# Test with the address sanitizer +if [ $(echo "$LLVM_VERSION>=3.6" | bc -l) -ne 0 ]; then CGO_LDFLAGS="-L`llvm-config --libdir`" go test -timeout 60s -v -msan ./...; fi + +# Test with the race detector +CGO_LDFLAGS="-L`llvm-config --libdir`" go test -timeout 60s -v -race ./... diff --git a/scripts/update-bootstrap.sh b/scripts/update-bootstrap.sh index 0c35acc..a60d1d5 100755 --- a/scripts/update-bootstrap.sh +++ b/scripts/update-bootstrap.sh @@ -12,7 +12,7 @@ make -C $GOPATH/src/github.com/go-clang/gen install cd $GOPATH/src/github.com/go-clang/bootstrap/clang/ rm -rf clang-c/ -rm *_gen.go +rm -f *_gen.go go-clang-gen diff --git a/scripts/vagrant-environment.sh b/scripts/vagrant-environment.sh index b35f624..d704dbe 100755 --- a/scripts/vagrant-environment.sh +++ b/scripts/vagrant-environment.sh @@ -1,6 +1,6 @@ #!/bin/bash -export GO_VERSION=1.5.3 +export GO_VERSION=1.7.1 # Install Go mkdir -p $HOME/go