From 377cd1ae387bbd4659fddf49d4ef719510454547 Mon Sep 17 00:00:00 2001
From: Lauris BH <lauris@nix.lv>
Date: Wed, 13 Sep 2017 09:03:20 +0300
Subject: [PATCH] Allow changing integration test database connection using env
 variables (#2484)

---
 .gitignore                                 |  2 ++
 Makefile                                   | 22 ++++++++++++++++++++--
 integrations/{mysql.ini => mysql.ini.tmpl} |  8 ++++----
 integrations/{pgsql.ini => pgsql.ini.tmpl} |  8 ++++----
 4 files changed, 30 insertions(+), 10 deletions(-)
 rename integrations/{mysql.ini => mysql.ini.tmpl} (90%)
 rename integrations/{pgsql.ini => pgsql.ini.tmpl} (89%)

diff --git a/.gitignore b/.gitignore
index 1a1aa568bc..967a5a62cf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -52,3 +52,5 @@ _testmain.go
 /integrations/gitea-integration-mysql
 /integrations/gitea-integration-pgsql
 /integrations/gitea-integration-sqlite
+/integrations/mysql.ini
+/integrations/pgsql.ini
diff --git a/Makefile b/Makefile
index 76cb85fdb1..1d69a6d49c 100644
--- a/Makefile
+++ b/Makefile
@@ -32,6 +32,15 @@ TAGS ?=
 
 TMPDIR := $(shell mktemp -d 2>/dev/null || mktemp -d -t 'gitea-temp')
 
+TEST_MYSQL_HOST ?= mysql:3306
+TEST_MYSQL_DBNAME ?= testgitea
+TEST_MYSQL_USERNAME ?= root
+TEST_MYSQL_PASSWORD ?=
+TEST_PGSQL_HOST ?= pgsql:5432
+TEST_PGSQL_DBNAME ?= testgitea
+TEST_PGSQL_USERNAME ?= postgres
+TEST_PGSQL_PASSWORD ?= postgres
+
 ifeq ($(OS), Windows_NT)
 	EXECUTABLE := gitea.exe
 else
@@ -54,7 +63,7 @@ all: build
 .PHONY: clean
 clean:
 	$(GO) clean -i ./...
-	rm -rf $(EXECUTABLE) $(DIST) $(BINDATA) integrations*.test integrations/gitea-integration-pgsql/ integrations/gitea-integration-mysql/ integrations/gitea-integration-sqlite/
+	rm -rf $(EXECUTABLE) $(DIST) $(BINDATA) integrations*.test integrations/gitea-integration-pgsql/ integrations/gitea-integration-mysql/ integrations/gitea-integration-sqlite/ integrations/mysql.ini integrations/pgsql.ini
 
 required-gofmt-version:
 	@$(GO) version  | grep -q '\(1.7\|1.8\)' || { echo "We require go version 1.7 or 1.8 to format code" >&2 && exit 1; }
@@ -161,13 +170,22 @@ test-sqlite: integrations.sqlite.test
 
 .PHONY: test-mysql
 test-mysql: integrations.mysql.test
+	sed -e 's|{{TEST_MYSQL_HOST}}|${TEST_MYSQL_HOST}|g' \
+	    -e 's|{{TEST_MYSQL_DBNAME}}|${TEST_MYSQL_DBNAME}|g' \
+	    -e 's|{{TEST_MYSQL_USERNAME}}|${TEST_MYSQL_USERNAME}|g' \
+	    -e 's|{{TEST_MYSQL_PASSWORD}}|${TEST_MYSQL_PASSWORD}|g' \
+		  integrations/mysql.ini.tmpl > integrations/mysql.ini
 	GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql.ini ./integrations.mysql.test
 
 .PHONY: test-pgsql
 test-pgsql: integrations.pgsql.test
+	sed -e 's|{{TEST_PGSQL_HOST}}|${TEST_PGSQL_HOST}|g' \
+	    -e 's|{{TEST_PGSQL_DBNAME}}|${TEST_PGSQL_DBNAME}|g' \
+	    -e 's|{{TEST_PGSQL_USERNAME}}|${TEST_PGSQL_USERNAME}|g' \
+	    -e 's|{{TEST_PGSQL_PASSWORD}}|${TEST_PGSQL_PASSWORD}|g' \
+		  integrations/pgsql.ini.tmpl > integrations/pgsql.ini
 	GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/pgsql.ini ./integrations.pgsql.test
 
-
 .PHONY: bench-sqlite
 bench-sqlite: integrations.sqlite.test
 	GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/sqlite.ini ./integrations.sqlite.test -test.bench .
diff --git a/integrations/mysql.ini b/integrations/mysql.ini.tmpl
similarity index 90%
rename from integrations/mysql.ini
rename to integrations/mysql.ini.tmpl
index 9d3d6dfce2..1023617754 100644
--- a/integrations/mysql.ini
+++ b/integrations/mysql.ini.tmpl
@@ -3,10 +3,10 @@ RUN_MODE = prod
 
 [database]
 DB_TYPE  = mysql
-HOST     = mysql:3306
-NAME     = testgitea
-USER     = root
-PASSWD   =
+HOST     = {{TEST_MYSQL_HOST}}
+NAME     = {{TEST_MYSQL_DBNAME}}
+USER     = {{TEST_MYSQL_USERNAME}}
+PASSWD   = {{TEST_MYSQL_PASSWORD}}
 SSL_MODE = disable
 PATH     = data/gitea.db
 
diff --git a/integrations/pgsql.ini b/integrations/pgsql.ini.tmpl
similarity index 89%
rename from integrations/pgsql.ini
rename to integrations/pgsql.ini.tmpl
index 859e3250c1..fa1fd6aa12 100644
--- a/integrations/pgsql.ini
+++ b/integrations/pgsql.ini.tmpl
@@ -3,10 +3,10 @@ RUN_MODE = prod
 
 [database]
 DB_TYPE  = postgres
-HOST     = pgsql:5432
-NAME     = testgitea
-USER     = postgres
-PASSWD   = postgres
+HOST     = {{TEST_PGSQL_HOST}}
+NAME     = {{TEST_PGSQL_DBNAME}}
+USER     = {{TEST_PGSQL_USERNAME}}
+PASSWD   = {{TEST_PGSQL_PASSWORD}}
 SSL_MODE = disable
 PATH     = data/gitea.db