diff --git a/test/.gitignore b/test/.gitignore index 4f89478ac1a..c857e91822e 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -1,2 +1 @@ -bin/ipfs -bin/random +IPFS-BUILD-OPTIONS diff --git a/test/Makefile b/test/Makefile index 868eac731de..93a287a3f33 100644 --- a/test/Makefile +++ b/test/Makefile @@ -6,6 +6,9 @@ RANDOM_SRC = ../Godeps/_workspace/src/github.com/jbenet/go-random MULTIHASH_SRC = ../Godeps/_workspace/src/github.com/jbenet/go-multihash POLLENDPOINT_SRC= ../thirdparty/pollEndpoint +# User might want to override those on the command line +GOFLAGS = + all: deps deps: bins @@ -15,17 +18,21 @@ clean: bins: $(BINS) -bin/random: $(RANDOM_SRC)/**/*.go - go build -o bin/random $(RANDOM_SRC)/random +bin/random: $(RANDOM_SRC)/**/*.go IPFS-BUILD-OPTIONS + @echo "*** installing $@ ***" + go build $(GOFLAGS) -o bin/random $(RANDOM_SRC)/random -bin/multihash: $(MULTIHASH_SRC)/**/*.go - go build -o bin/multihash $(MULTIHASH_SRC)/multihash +bin/multihash: $(MULTIHASH_SRC)/**/*.go IPFS-BUILD-OPTIONS + @echo "*** installing $@ ***" + go build $(GOFLAGS) -o bin/multihash $(MULTIHASH_SRC)/multihash -bin/ipfs: $(IPFS_ROOT)/**/*.go - go build -o bin/ipfs $(IPFS_CMD) +bin/ipfs: $(IPFS_ROOT)/**/*.go IPFS-BUILD-OPTIONS + @echo "*** installing $@ ***" + go build $(GOFLAGS) -o bin/ipfs $(IPFS_CMD) -bin/pollEndpoint: $(POLLENDPOINT_SRC)/*.go - go build -o bin/pollEndpoint $(POLLENDPOINT_SRC) +bin/pollEndpoint: $(POLLENDPOINT_SRC)/*.go IPFS-BUILD-OPTIONS + @echo "*** installing $@ ***" + go build $(GOFLAGS) -o bin/pollEndpoint $(POLLENDPOINT_SRC) test: test_expensive @@ -38,4 +45,12 @@ test_cheap: cd sharness && make cd 3nodetest && make -.PHONY: all clean +test_race: + cd sharness && make GOFLAGS=-race TEST_EXPENSIVE=1 + cd 3nodetest && make GOFLAGS=-race + cd dependencies && make GOFLAGS=-race + +IPFS-BUILD-OPTIONS: FORCE + @bin/checkflags '$@' '$(GOFLAGS)' '*** new Go flags ***' + +.PHONY: all clean FORCE diff --git a/test/bin/checkflags b/test/bin/checkflags new file mode 100755 index 00000000000..a246a82c3d8 --- /dev/null +++ b/test/bin/checkflags @@ -0,0 +1,23 @@ +#!/bin/sh +# Author: Christian Couder +# MIT LICENSED + +if test "$#" -lt 3 +then + echo >&2 "usage $0 FILE VALUES MSG..." + exit 1 +fi + +FLAG_FILE="$1" +FLAG_VALS="$2" +shift +shift +FLAG_MSGS="$@" + +# Use x in front of tested values as flags could be +# interpreted by "test" to be for itself. +if test x"$FLAG_VALS" != x"$(cat "$FLAG_FILE" 2>/dev/null)" +then + echo "$FLAG_MSGS" + echo "$FLAG_VALS" >"$FLAG_FILE" +fi diff --git a/test/sharness/Makefile b/test/sharness/Makefile index 144262f98c1..1166df6bb78 100644 --- a/test/sharness/Makefile +++ b/test/sharness/Makefile @@ -11,6 +11,9 @@ BINS = bin/random bin/multihash bin/ipfs bin/pollEndpoint SHARNESS = lib/sharness/sharness.sh IPFS_ROOT = ../.. +# User might want to override those on the command line +GOFLAGS = + all: clean deps $(T) aggregate clean: @@ -32,11 +35,13 @@ $(SHARNESS): @echo "*** installing $@ ***" lib/install-sharness.sh -bin/%: $(IPFS_ROOT)/**/*.go - @echo "*** installing $@ ***" - cd .. && make $@ +bin/%: FORCE + cd .. && make GOFLAGS=$(GOFLAGS) $@ + +race: + make GOFLAGS=-race all -.PHONY: all clean $(T) aggregate +.PHONY: all clean $(T) aggregate FORCE # will fail if curl is not installed. # TODO: get rid of this and install curl with git or ipfs.