diff --git a/.gitignore b/.gitignore index 8b75d9ae1c2..1a3f16cecb7 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,8 @@ *.orig *~ +coverage.txt + .ipfs bin/gx bin/gx* diff --git a/Makefile b/Makefile index 3b33538425b..eeda945cbb9 100644 --- a/Makefile +++ b/Makefile @@ -3,31 +3,39 @@ IPFS_MIN_GO_VERSION = 1.7 IPFS_MIN_GX_VERSION = 0.6 IPFS_MIN_GX_GO_VERSION = 1.1 +GOTAGS = +GOTAGS += "" # we have to have always at least one tag, empty tag works well + +GOFLAGS = +GOTFLAGS = export IPFS_REUSEPORT=false +export GOFLAGS +export GOTFLAGS -ifneq ($(COVERALLS_TOKEN), ) - covertools_rule = covertools - GOT = overalls -project=github.com/ipfs/go-ipfs -covermode atomic -ignore=.git,Godeps,thirdparty,test,core/commands,cmd -- $(GOTFLAGS) -else - covertools_rule = $() - GOT = go test $(GOTFLAGS) ./... -endif +GOFLAGS += -tags $(call join-with,$(comma),$(GOTAGS)) ifeq ($(TEST_NO_FUSE),1) - GOTFLAGS += -tags nofuse + GOTAGS += nofuse endif ifeq ($(OS),Windows_NT) - GOPATH_DELIMITER = ; + GOPATH_DELIMITER = ; else - GOPATH_DELIMITER = : + GOPATH_DELIMITER = : endif dist_root=/ipfs/QmNZL8wNsvAGdVYr8uGeUE9aGfHjFpHegAWywQFEdSaJbp gx_bin=bin/gx-v0.9.0 gx-go_bin=bin/gx-go-v1.3.0 + +# util functions + +space = +space += +comma =, +join-with = $(subst $(space),$1,$(strip $2)) # use things in our bin before any other system binaries export PATH := bin:$(PATH) export IPFS_API ?= v04x.ipfs.io @@ -58,12 +66,11 @@ path_check: @bin/check_go_path $(realpath $(shell pwd)) $(realpath $(addsuffix /src/github.com/ipfs/go-ipfs,$(subst $(GOPATH_DELIMITER), ,$(GOPATH)))) deps: go_check gx_check path_check $(covertools_rule) - ${gx_bin} --verbose install --global + ${gx_bin} --verbose install --global >/dev/null 2>&1 -covertools: - go get -u github.com/mattn/goveralls +deps_covertools: + go get -u github.com/wadey/gocovmerge go get -u golang.org/x/tools/cmd/cover - go get -u github.com/Kubuxu/overalls # saves/vendors third-party dependencies to Godeps/_workspace # -r flag rewrites import paths to use the vendored path @@ -71,7 +78,11 @@ covertools: vendor: godep godep save -r ./... -install build nofuse: deps +nofuse: GOTAGS += nofuse +nofuse: deps + $(MAKE) -C cmd/ipfs install + +install build: deps $(MAKE) -C cmd/ipfs $@ clean: @@ -99,14 +110,19 @@ test_3node: test_go_fmt: bin/test-go-fmt - test_go_short: GOTFLAGS += -test.short test_go_race: GOTFLAGS += -race test_go_expensive test_go_short test_go_race: - $(GOT) -ifneq ($(COVERALLS_TOKEN), ) - goveralls -coverprofile=overalls.coverprofile -service $(SERVICE) -endif + go test $(GOFLAGS) $(GOTFLAGS) ./... + +coverage: deps_covertools + @echo Running coverage + $(eval PKGS := $(shell go list -f '{{if (len .GoFiles)}}{{.ImportPath}}{{end}}' ./... | grep -v /vendor/ | grep -v /Godeps/)) +#$(eval PKGS_DELIM := $(call join-with,$(comma),$(PKGS))) + @go list -f '{{if or (len .TestGoFiles) (len .XTestGoFiles)}}go test $(GOFLAGS) $(GOTFLAGS) -covermode=atomic -coverprofile={{.Name}}_{{len .Imports}}_{{len .Deps}}.coverprofile {{.ImportPath}}{{end}}' $(GOFLAGS) $(PKGS) | xargs -I {} bash -c {} 2>&1 | grep -v 'warning: no packages being tested depend on' + gocovmerge `ls *.coverprofile` > coverage.txt + rm *.coverprofile + bash -c 'bash <(curl -s https://codecov.io/bash)' test_sharness_short: $(MAKE) -j1 -C test/sharness/ diff --git a/circle.yml b/circle.yml index 00761c1b438..acf3aae44b2 100644 --- a/circle.yml +++ b/circle.yml @@ -26,7 +26,7 @@ dependencies: override: - rm -rf "$HOME/.go_workspace/src/$IMPORT_PATH" - mkdir -p "$HOME/.go_workspace/src/$IMPORT_PATH" - - cp -a ./* "$HOME/.go_workspace/src/$IMPORT_PATH" + - cp -aT . "$HOME/.go_workspace/src/$IMPORT_PATH" - cd "$HOME/.go_workspace/src/$IMPORT_PATH" && make deps cache_directories: @@ -35,9 +35,6 @@ dependencies: test: override: - - make test_go_expensive: - pwd: "../.go_workspace/src/$IMPORT_PATH" - parallel: true - - make test_sharness_expensive: + - case $CIRCLE_NODE_INDEX in 0) make coverage ;; 1) make test_sharness_expensive ;; esac: pwd: "../.go_workspace/src/$IMPORT_PATH" parallel: true diff --git a/cmd/ipfs/Makefile b/cmd/ipfs/Makefile index 75b662b7644..59746c62e74 100644 --- a/cmd/ipfs/Makefile +++ b/cmd/ipfs/Makefile @@ -1,19 +1,16 @@ COMMIT := $(shell git rev-parse --short HEAD) -ldflags = "-X "github.com/ipfs/go-ipfs/repo/config".CurrentCommit=$(COMMIT)" +GOFLAGS += -ldflags="-X "github.com/ipfs/go-ipfs/repo/config".CurrentCommit=$(COMMIT)" all: install install: - go install -ldflags=$(ldflags) + go install $(GOFLAGS) build: - go build -i -ldflags=$(ldflags) - -nofuse: - go install -tags nofuse -ldflags=$(ldflags) + go build -i $(GOFLAGS) clean: - go clean -ldflags=$(ldflags) + go clean $(GOFLAGS) uninstall: - go clean -i -ldflags=$(ldflags) + go clean -i $(GOFLAGS) diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 00000000000..bff9fe29865 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,12 @@ +codecov: + ci: + - "ci/circle-ci" + - "!js-ipfs-ap" + - "!teamcity" + - "!continuous-integration/travis-ci/pr" + - "!continuous-integration/travis-ci/push" + notify: + after_n_builds: 1 +coverage: + range: "50...100" +comment: off