From 9a9d140a8a0a9824d54fe6c48d967b8032e7123e Mon Sep 17 00:00:00 2001 From: Clayton Coleman Date: Fri, 11 Jul 2014 14:41:15 -0400 Subject: [PATCH] -cover causes races in Go 1.2 Make -covermode=atomic the default until we drop 1.2 support Enable Go 1.2 in Travis --- .travis.yml | 2 ++ hack/install-std-race.sh | 28 ++++++++++++++++++++++++++++ hack/test-go.sh | 6 ++++-- 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100755 hack/install-std-race.sh diff --git a/.travis.yml b/.travis.yml index 639ae95066545..70d60fcf169ee 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,7 @@ language: go go: - 1.3 + - 1.2 - tip install: @@ -9,6 +10,7 @@ install: - go get github.com/coreos/etcd - ./hack/verify-gofmt.sh - ./hack/verify-boilerplate.sh + - ./hack/install-std-race.sh - ./hack/build-go.sh script: diff --git a/hack/install-std-race.sh b/hack/install-std-race.sh new file mode 100755 index 0000000000000..a57bcfffe3336 --- /dev/null +++ b/hack/install-std-race.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Copyright 2014 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This script installs std -race on Travis (see https://code.google.com/p/go/issues/detail?id=6479) + +set -e + +if [ "${TRAVIS}" == "true" ]; then + GO_VERSION=($(go version)) + + if [ ${GO_VERSION[2]} \< "go1.3" ]; then + echo "Installing the -race compatible version of the std go library" + go install -a -race std + fi +fi diff --git a/hack/test-go.sh b/hack/test-go.sh index f104317c4edac..a1753175118e5 100755 --- a/hack/test-go.sh +++ b/hack/test-go.sh @@ -35,14 +35,16 @@ find_test_dirs() { ) } +# -covermode=atomic becomes default with -race in Go >=1.3 +KUBE_COVER="-cover -covermode=atomic -coverprofile=\"tmp.out\"" cd "${KUBE_TARGET}" if [ "$1" != "" ]; then - go test -race -cover -coverprofile="tmp.out" "$KUBE_GO_PACKAGE/$1" "${@:2}" + go test -race $KUBE_COVER "$KUBE_GO_PACKAGE/$1" "${@:2}" exit 0 fi for package in $(find_test_dirs); do - go test -race -cover -coverprofile="tmp.out" "${KUBE_GO_PACKAGE}/${package}" "${@:2}" + go test -race $KUBE_COVER "${KUBE_GO_PACKAGE}/${package}" "${@:2}" done