|
|
@ -226,6 +226,19 @@ test_race: |
|
|
|
@echo "--> Running go test --race" |
|
|
|
@GOCACHE=off go test -p 1 -v -race $(PACKAGES) |
|
|
|
|
|
|
|
# uses https://github.com/sasha-s/go-deadlock/ to detect potential deadlocks
|
|
|
|
test_with_deadlock: |
|
|
|
find . -name "*.go" | grep -v "vendor/" | xargs -n 1 sed -i.bak 's/sync.RWMutex/deadlock.RWMutex/' |
|
|
|
find . -name "*.go" | grep -v "vendor/" | xargs -n 1 sed -i.bak 's/sync.Mutex/deadlock.Mutex/' |
|
|
|
find . -name "*.go" | grep -v "vendor/" | xargs -n 1 goimports -w |
|
|
|
make test |
|
|
|
make cleanup_after_test_with_deadlock |
|
|
|
|
|
|
|
# cleanes up after you ran test_with_deadlock
|
|
|
|
cleanup_after_test_with_deadlock: |
|
|
|
find . -name "*.go" | grep -v "vendor/" | xargs -n 1 sed -i.bak 's/deadlock.RWMutex/sync.RWMutex/' |
|
|
|
find . -name "*.go" | grep -v "vendor/" | xargs -n 1 sed -i.bak 's/deadlock.Mutex/sync.Mutex/' |
|
|
|
find . -name "*.go" | grep -v "vendor/" | xargs -n 1 goimports -w |
|
|
|
|
|
|
|
########################################
|
|
|
|
### Formatting, linting, and vetting
|
|
|
@ -330,4 +343,4 @@ build-slate: |
|
|
|
# To avoid unintended conflicts with file names, always add to .PHONY
|
|
|
|
# unless there is a reason not to.
|
|
|
|
# https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
|
|
|
|
.PHONY: check build build_race build_abci dist install install_abci check_dep check_tools get_tools get_dev_tools update_tools get_vendor_deps draw_deps get_protoc protoc_abci protoc_libs gen_certs clean_certs grpc_dbserver test_cover test_apps test_persistence test_p2p test test_race test_integrations test_release test100 vagrant_test fmt rpc-docs build-linux localnet-start localnet-stop build-docker build-docker-localnode sentry-start sentry-config sentry-stop build-slate protoc_grpc protoc_all build_c install_c |
|
|
|
.PHONY: check build build_race build_abci dist install install_abci check_dep check_tools get_tools get_dev_tools update_tools get_vendor_deps draw_deps get_protoc protoc_abci protoc_libs gen_certs clean_certs grpc_dbserver test_cover test_apps test_persistence test_p2p test test_race test_integrations test_release test100 vagrant_test fmt rpc-docs build-linux localnet-start localnet-stop build-docker build-docker-localnode sentry-start sentry-config sentry-stop build-slate protoc_grpc protoc_all build_c install_c test_with_deadlock cleanup_after_test_with_deadlock |