all: test cleanup

test: randgentest mysqltest tidbtest gormtest xormtest gosqltest sqllogictest benchtest analyzetest springdatajdbctest cleanup

script-lint:
	@if find . -name "*.sh" | xargs grep -nE "\bgo\s+install(\s+\S+)?\s+[-_a-zA-Z0-9\./]+@latest"; then \
		echo "---------------------------"; \
		echo "ERROR: go install xxx@latest is not allowed, please specify a specific version!"; \
		false; \
	fi

check: script-lint
	./scripts/check.sh

benchtest: benchcount benchkv bencholtp

tidbtest:
	@cd tidb_test && ./run-tests.sh

mysqltest:
	@cd mysql_test && ./run-tests.sh

xormtest:
	@cd xorm_test && ./run-tests.sh

gormtest:
	@cd gorm_test && ./run-tests.sh

gosqltest:
	@cd go-sql-test && ./run-tests.sh

sqllogictest:
	@cd sqllogic_test && ./run-tests.sh

fuzztest:
	@cd fuzz_test && ./run-tests.sh

ddletcdtest:
	@cd ddl_etcd_test/integration_test && ./run-tests.sh

ddltest:
	@cd ddl_test && ./test.sh

massiveddltest:
	@cd massive_ddl_test && ./run-tests.sh

clustertest:
	@cd cluster_test && go build .

stabilitytest:
	@cd stability_test && ./run-tests.sh

tidb-bridge:
	@cd bridge && go build -o tidb-bridge .

push-down-func-test:
	@cd push_down_func_test && chmod +x ./run-tests.sh && ./run-tests.sh

benchcount:
	@cd bench_test/benchcount-test && go build .

benchkv:
	@cd bench_test/benchkv-test && go build .

bencholtp:
	@cd bench_test/bench-oltp && go build .

analyzetest:
	@cd analyze_test && ./run-tests.sh

randgentest:
	@cd randgen-test && ./run-tests.sh

springdatajdbctest:
	@cd spring_data_jdbc_test && ./run-tests.sh

tikv: export TIDB_TEST_STORE_NAME=tikv
tikv:  tikv-env test

tikv-env:
ifndef TIKV_PATH
	$(error Please define TIKV_PATH for tikv tests, the format is 'etcd_host:port')
endif

update:
	rm -rf vendor | true
	mv -i _vendor/src vendor
	dep ensure
	dep prune
	mv -i vendor _vendor/src
	bash hack/clean_vendor.sh
cleanup:
	rm mysql_test/mysql-test.out | true
	rm -rf vendor/github.com/pingcap/tidb | true
