You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Makefile 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. IMPORT := xorm.io/xorm
  2. export GO111MODULE=on
  3. GO ?= go
  4. GOFMT ?= gofmt -s
  5. TAGS ?=
  6. SED_INPLACE := sed -i
  7. GO_DIRS := caches contexts integrations core dialects internal log migrate names schemas tags
  8. GOFILES := $(wildcard *.go)
  9. GOFILES += $(shell find $(GO_DIRS) -name "*.go" -type f)
  10. INTEGRATION_PACKAGES := xorm.io/xorm/integrations
  11. PACKAGES ?= $(filter-out $(INTEGRATION_PACKAGES),$(shell $(GO) list ./...))
  12. TEST_COCKROACH_HOST ?= cockroach:26257
  13. TEST_COCKROACH_SCHEMA ?=
  14. TEST_COCKROACH_DBNAME ?= xorm_test
  15. TEST_COCKROACH_USERNAME ?= postgres
  16. TEST_COCKROACH_PASSWORD ?=
  17. TEST_MSSQL_HOST ?= mssql:1433
  18. TEST_MSSQL_DBNAME ?= gitea
  19. TEST_MSSQL_USERNAME ?= sa
  20. TEST_MSSQL_PASSWORD ?= MwantsaSecurePassword1
  21. TEST_MSSQL_DEFAULT_VARCHAR ?= varchar
  22. TEST_MSSQL_DEFAULT_CHAR ?= char
  23. TEST_MSSQL_DO_NVARCHAR_OVERRIDE_TEST ?= true
  24. TEST_MYSQL_HOST ?= mysql:3306
  25. TEST_MYSQL_CHARSET ?= utf8
  26. TEST_MYSQL_DBNAME ?= xorm_test
  27. TEST_MYSQL_USERNAME ?= root
  28. TEST_MYSQL_PASSWORD ?=
  29. TEST_PGSQL_HOST ?= pgsql:5432
  30. TEST_PGSQL_SCHEMA ?=
  31. TEST_PGSQL_DBNAME ?= xorm_test
  32. TEST_PGSQL_USERNAME ?= postgres
  33. TEST_PGSQL_PASSWORD ?= mysecretpassword
  34. TEST_TIDB_HOST ?= tidb:4000
  35. TEST_TIDB_DBNAME ?= xorm_test
  36. TEST_TIDB_USERNAME ?= root
  37. TEST_TIDB_PASSWORD ?=
  38. TEST_CACHE_ENABLE ?= false
  39. TEST_QUOTE_POLICY ?= always
  40. .PHONY: all
  41. all: build
  42. .PHONY: build
  43. build: go-check $(GO_SOURCES)
  44. $(GO) build $(PACKAGES)
  45. .PHONY: clean
  46. clean:
  47. $(GO) clean -i ./...
  48. rm -rf *.sql *.log test.db *coverage.out coverage.all integrations/*.sql
  49. .PHONY: coverage
  50. coverage:
  51. @hash gocovmerge > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  52. $(GO) get -u github.com/wadey/gocovmerge; \
  53. fi
  54. gocovmerge $(shell find . -type f -name "coverage.out") > coverage.all;\
  55. .PHONY: fmt
  56. fmt:
  57. $(GOFMT) -w $(GOFILES)
  58. .PHONY: fmt-check
  59. fmt-check:
  60. # get all go files and run go fmt on them
  61. @diff=$$($(GOFMT) -d $(GOFILES)); \
  62. if [ -n "$$diff" ]; then \
  63. echo "Please run 'make fmt' and commit the result:"; \
  64. echo "$${diff}"; \
  65. exit 1; \
  66. fi;
  67. .PHONY: go-check
  68. go-check:
  69. $(eval GO_VERSION := $(shell printf "%03d%03d%03d" $(shell go version | grep -Eo '[0-9]+\.?[0-9]+?\.?[0-9]?\s' | tr '.' ' ');))
  70. @if [ "$(GO_VERSION)" -lt "001011000" ]; then \
  71. echo "Gitea requires Go 1.11.0 or greater to build. You can get it at https://golang.org/dl/"; \
  72. exit 1; \
  73. fi
  74. .PHONY: help
  75. help:
  76. @echo "Make Routines:"
  77. @echo " - equivalent to \"build\""
  78. @echo " - build creates the entire project"
  79. @echo " - clean delete integration files and build files but not css and js files"
  80. @echo " - fmt format the code"
  81. @echo " - lint run code linter revive"
  82. @echo " - misspell check if a word is written wrong"
  83. @echo " - test run default unit test"
  84. @echo " - test-cockroach run integration tests for cockroach"
  85. @echo " - test-mysql run integration tests for mysql"
  86. @echo " - test-mssql run integration tests for mssql"
  87. @echo " - test-postgres run integration tests for postgres"
  88. @echo " - test-sqlite3 run integration tests for sqlite"
  89. @echo " - test-sqlite run integration tests for pure go sqlite"
  90. @echo " - test-tidb run integration tests for tidb"
  91. @echo " - vet examines Go source code and reports suspicious constructs"
  92. .PHONY: lint
  93. lint: revive
  94. .PHONY: revive
  95. revive:
  96. @hash revive > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  97. $(GO) get -u github.com/mgechev/revive; \
  98. fi
  99. revive -config .revive.toml -exclude=./vendor/... ./... || exit 1
  100. .PHONY: misspell
  101. misspell:
  102. @hash misspell > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  103. $(GO) get -u github.com/client9/misspell/cmd/misspell; \
  104. fi
  105. misspell -w -i unknwon $(GOFILES)
  106. .PHONY: misspell-check
  107. misspell-check:
  108. @hash misspell > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  109. $(GO) get -u github.com/client9/misspell/cmd/misspell; \
  110. fi
  111. misspell -error -i unknwon,destory $(GOFILES)
  112. .PHONY: test
  113. test: go-check
  114. $(GO) test $(PACKAGES)
  115. .PNONY: test-cockroach
  116. test-cockroach: go-check
  117. $(GO) test $(INTEGRATION_PACKAGES) -v -race -db=postgres -schema='$(TEST_COCKROACH_SCHEMA)' -cache=$(TEST_CACHE_ENABLE) \
  118. -conn_str="postgres://$(TEST_COCKROACH_USERNAME):$(TEST_COCKROACH_PASSWORD)@$(TEST_COCKROACH_HOST)/$(TEST_COCKROACH_DBNAME)?sslmode=disable&experimental_serial_normalization=sql_sequence" \
  119. -ignore_update_limit=true -coverprofile=cockroach.$(TEST_COCKROACH_SCHEMA).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m
  120. .PHONY: test-cockroach\#%
  121. test-cockroach\#%: go-check
  122. $(GO) test $(INTEGRATION_PACKAGES) -v -race -run $* -db=postgres -schema='$(TEST_COCKROACH_SCHEMA)' -cache=$(TEST_CACHE_ENABLE) \
  123. -conn_str="postgres://$(TEST_COCKROACH_USERNAME):$(TEST_COCKROACH_PASSWORD)@$(TEST_COCKROACH_HOST)/$(TEST_COCKROACH_DBNAME)?sslmode=disable&experimental_serial_normalization=sql_sequence" \
  124. -ignore_update_limit=true -coverprofile=cockroach.$(TEST_COCKROACH_SCHEMA).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic
  125. .PNONY: test-mssql
  126. test-mssql: go-check
  127. $(GO) test $(INTEGRATION_PACKAGES) -v -race -db=mssql -cache=$(TEST_CACHE_ENABLE) -quote=$(TEST_QUOTE_POLICY) \
  128. -conn_str="server=$(TEST_MSSQL_HOST);user id=$(TEST_MSSQL_USERNAME);password=$(TEST_MSSQL_PASSWORD);database=$(TEST_MSSQL_DBNAME)" \
  129. -default_varchar=$(TEST_MSSQL_DEFAULT_VARCHAR) -default_char=$(TEST_MSSQL_DEFAULT_CHAR) \
  130. -do_nvarchar_override_test=$(TEST_MSSQL_DO_NVARCHAR_OVERRIDE_TEST) \
  131. -coverprofile=mssql.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m
  132. .PNONY: test-mssql\#%
  133. test-mssql\#%: go-check
  134. $(GO) test $(INTEGRATION_PACKAGES) -v -race -run $* -db=mssql -cache=$(TEST_CACHE_ENABLE) -quote=$(TEST_QUOTE_POLICY) \
  135. -conn_str="server=$(TEST_MSSQL_HOST);user id=$(TEST_MSSQL_USERNAME);password=$(TEST_MSSQL_PASSWORD);database=$(TEST_MSSQL_DBNAME)" \
  136. -default_varchar=$(TEST_MSSQL_DEFAULT_VARCHAR) -default_char=$(TEST_MSSQL_DEFAULT_CHAR) \
  137. -do_nvarchar_override_test=$(TEST_MSSQL_DO_NVARCHAR_OVERRIDE_TEST) \
  138. -coverprofile=mssql.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic
  139. .PNONY: test-mymysql
  140. test-mymysql: go-check
  141. $(GO) test $(INTEGRATION_PACKAGES) -v -race -db=mymysql -cache=$(TEST_CACHE_ENABLE) -quote=$(TEST_QUOTE_POLICY) \
  142. -conn_str="tcp:$(TEST_MYSQL_HOST)*$(TEST_MYSQL_DBNAME)/$(TEST_MYSQL_USERNAME)/$(TEST_MYSQL_PASSWORD)" \
  143. -coverprofile=mymysql.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m
  144. .PNONY: test-mymysql\#%
  145. test-mymysql\#%: go-check
  146. $(GO) test $(INTEGRATION_PACKAGES) -v -race -run $* -db=mymysql -cache=$(TEST_CACHE_ENABLE) -quote=$(TEST_QUOTE_POLICY) \
  147. -conn_str="tcp:$(TEST_MYSQL_HOST)*$(TEST_MYSQL_DBNAME)/$(TEST_MYSQL_USERNAME)/$(TEST_MYSQL_PASSWORD)" \
  148. -coverprofile=mymysql.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic
  149. .PNONY: test-mysql
  150. test-mysql: go-check
  151. $(GO) test $(INTEGRATION_PACKAGES) -v -race -db=mysql -cache=$(TEST_CACHE_ENABLE) -quote=$(TEST_QUOTE_POLICY) \
  152. -conn_str="$(TEST_MYSQL_USERNAME):$(TEST_MYSQL_PASSWORD)@tcp($(TEST_MYSQL_HOST))/$(TEST_MYSQL_DBNAME)?charset=$(TEST_MYSQL_CHARSET)" \
  153. -coverprofile=mysql.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m
  154. .PHONY: test-mysql\#%
  155. test-mysql\#%: go-check
  156. $(GO) test $(INTEGRATION_PACKAGES) -v -race -run $* -db=mysql -cache=$(TEST_CACHE_ENABLE) -quote=$(TEST_QUOTE_POLICY) \
  157. -conn_str="$(TEST_MYSQL_USERNAME):$(TEST_MYSQL_PASSWORD)@tcp($(TEST_MYSQL_HOST))/$(TEST_MYSQL_DBNAME)?charset=$(TEST_MYSQL_CHARSET)" \
  158. -coverprofile=mysql.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic
  159. .PNONY: test-postgres
  160. test-postgres: go-check
  161. $(GO) test $(INTEGRATION_PACKAGES) -v -race -db=postgres -schema='$(TEST_PGSQL_SCHEMA)' -cache=$(TEST_CACHE_ENABLE) \
  162. -conn_str="postgres://$(TEST_PGSQL_USERNAME):$(TEST_PGSQL_PASSWORD)@$(TEST_PGSQL_HOST)/$(TEST_PGSQL_DBNAME)?sslmode=disable" \
  163. -quote=$(TEST_QUOTE_POLICY) -coverprofile=postgres.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m
  164. .PHONY: test-postgres\#%
  165. test-postgres\#%: go-check
  166. $(GO) test $(INTEGRATION_PACKAGES) -v -race -run $* -db=postgres -schema='$(TEST_PGSQL_SCHEMA)' -cache=$(TEST_CACHE_ENABLE) \
  167. -conn_str="postgres://$(TEST_PGSQL_USERNAME):$(TEST_PGSQL_PASSWORD)@$(TEST_PGSQL_HOST)/$(TEST_PGSQL_DBNAME)?sslmode=disable" \
  168. -quote=$(TEST_QUOTE_POLICY) -coverprofile=postgres.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic
  169. .PHONY: test-sqlite3
  170. test-sqlite3: go-check
  171. $(GO) test $(INTEGRATION_PACKAGES) -v -race -cache=$(TEST_CACHE_ENABLE) -db=sqlite3 -conn_str="./test.db?cache=shared&mode=rwc" \
  172. -quote=$(TEST_QUOTE_POLICY) -coverprofile=sqlite3.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m
  173. .PHONY: test-sqlite3-schema
  174. test-sqlite3-schema: go-check
  175. $(GO) test $(INTEGRATION_PACKAGES) -v -race -schema=xorm -cache=$(TEST_CACHE_ENABLE) -db=sqlite3 -conn_str="./test.db?cache=shared&mode=rwc" \
  176. -quote=$(TEST_QUOTE_POLICY) -coverprofile=sqlite3.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m
  177. .PHONY: test-sqlite3\#%
  178. test-sqlite3\#%: go-check
  179. $(GO) test $(INTEGRATION_PACKAGES) -v -race -run $* -cache=$(TEST_CACHE_ENABLE) -db=sqlite3 -conn_str="./test.db?cache=shared&mode=rwc" \
  180. -quote=$(TEST_QUOTE_POLICY) -coverprofile=sqlite3.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m
  181. .PNONY: test-pgx
  182. test-pgx: go-check
  183. $(GO) test $(INTEGRATION_PACKAGES) -v -race -db=pgx -schema='$(TEST_PGSQL_SCHEMA)' -cache=$(TEST_CACHE_ENABLE) \
  184. -conn_str="postgres://$(TEST_PGSQL_USERNAME):$(TEST_PGSQL_PASSWORD)@$(TEST_PGSQL_HOST)/$(TEST_PGSQL_DBNAME)?sslmode=disable" \
  185. -quote=$(TEST_QUOTE_POLICY) -coverprofile=postgres.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m
  186. .PHONY: test-pgx\#%
  187. test-pgx\#%: go-check
  188. $(GO) test $(INTEGRATION_PACKAGES) -v -race -run $* -db=pgx -schema='$(TEST_PGSQL_SCHEMA)' -cache=$(TEST_CACHE_ENABLE) \
  189. -conn_str="postgres://$(TEST_PGSQL_USERNAME):$(TEST_PGSQL_PASSWORD)@$(TEST_PGSQL_HOST)/$(TEST_PGSQL_DBNAME)?sslmode=disable" \
  190. -quote=$(TEST_QUOTE_POLICY) -coverprofile=postgres.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m
  191. .PHONY: test-sqlite
  192. test-sqlite: go-check
  193. $(GO) test $(INTEGRATION_PACKAGES) -v -race -cache=$(TEST_CACHE_ENABLE) -db=sqlite -conn_str="./test.db?cache=shared&mode=rwc" \
  194. -quote=$(TEST_QUOTE_POLICY) -coverprofile=sqlite.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m
  195. .PHONY: test-sqlite-schema
  196. test-sqlite-schema: go-check
  197. $(GO) test $(INTEGRATION_PACKAGES) -v -race -schema=xorm -cache=$(TEST_CACHE_ENABLE) -db=sqlite -conn_str="./test.db?cache=shared&mode=rwc" \
  198. -quote=$(TEST_QUOTE_POLICY) -coverprofile=sqlite.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m
  199. .PHONY: test-sqlite\#%
  200. test-sqlite\#%: go-check
  201. $(GO) test $(INTEGRATION_PACKAGES) -v -race -run $* -cache=$(TEST_CACHE_ENABLE) -db=sqlite -conn_str="./test.db?cache=shared&mode=rwc" \
  202. -quote=$(TEST_QUOTE_POLICY) -coverprofile=sqlite.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic
  203. .PNONY: test-tidb
  204. test-tidb: go-check
  205. $(GO) test $(INTEGRATION_PACKAGES) -v -race -db=mysql -cache=$(TEST_CACHE_ENABLE) -ignore_select_update=true \
  206. -conn_str="$(TEST_TIDB_USERNAME):$(TEST_TIDB_PASSWORD)@tcp($(TEST_TIDB_HOST))/$(TEST_TIDB_DBNAME)" \
  207. -quote=$(TEST_QUOTE_POLICY) -coverprofile=tidb.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m
  208. .PHONY: test-tidb\#%
  209. test-tidb\#%: go-check
  210. $(GO) test $(INTEGRATION_PACKAGES) -v -race -run $* -db=mysql -cache=$(TEST_CACHE_ENABLE) -ignore_select_update=true \
  211. -conn_str="$(TEST_TIDB_USERNAME):$(TEST_TIDB_PASSWORD)@tcp($(TEST_TIDB_HOST))/$(TEST_TIDB_DBNAME)" \
  212. -quote=$(TEST_QUOTE_POLICY) -coverprofile=tidb.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic
  213. .PHONY: vet
  214. vet:
  215. $(GO) vet $(shell $(GO) list ./...)