diff --git a/.travis.yml b/.travis.yml index 50806b4..d79bca9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,6 @@ -sudo: false +dist: bionic + +sudo: required notifications: email: false @@ -6,26 +8,21 @@ notifications: language: go go: - - 1.11.x - - 1.12.x - - 1.13.x + - "1.12" + - "1.13" + +services: + - docker env: global: - GOARCH=amd64 - TEST_HOST=127.0.0.1 -addons: - postgresql: "10" - apt: - packages: - - postgresql-10 - - postgresql-client-10 - before_install: - - sudo sed -i -e '/local.*peer/s/postgres/all/' -e 's/peer\|md5/trust/g' /etc/postgresql/*/main/pg_hba.conf - - "sudo sed -i 's/port = 5433/port = 5432/' /etc/postgresql/10/main/postgresql.conf" - - "sudo service postgresql restart 10" + - sudo service mysql stop + - sudo service postgresql stop + - sleep 10 install: - mkdir -p $GOPATH/src/upper.io @@ -35,4 +32,5 @@ install: - export TRAVIS_BUILD_DIR=$GOPATH/src/upper.io/bond script: - - make test + - make -C internal/tests server-up test server-down + diff --git a/Makefile b/internal/tests/Makefile similarity index 75% rename from Makefile rename to internal/tests/Makefile index 5ac27fe..53c56de 100644 --- a/Makefile +++ b/internal/tests/Makefile @@ -1,7 +1,9 @@ +PROJECT ?= bond + DB_HOST ?= 127.0.0.1 DB_PORT ?= 5432 DB_USER ?= postgres -DB_PASSWORD ?= +DB_PASSWORD ?= postgr3s BOND_DB ?= bond_test BOND_USER ?= bond_user @@ -9,15 +11,22 @@ BOND_PASSWORD ?= bond_password TEST_FLAGS ?= -all: test +export POSTGRES_VERSION -build: - @go build +export DB_HOST +export DB_NAME +export DB_PASSWORD +export DB_PORT +export DB_USERNAME -test: resetdb +export TEST_FLAGS + +all: test + +test: db-reset UPPERIO_DB_DEBUG=1 go test -v ./... $(TEST_FLAGS) -resetdb: +db-reset: export PGPASSWORD="$(DB_PASSWORD)" && \ psql -U$(DB_USER) -h$(DB_HOST) -p$(DB_PORT) -c "DROP DATABASE IF EXISTS $(BOND_DB)" && \ psql -U$(DB_USER) -h$(DB_HOST) -p$(DB_PORT) -c "DROP ROLE IF EXISTS $(BOND_USER)" && \ @@ -26,3 +35,10 @@ resetdb: psql -U$(DB_USER) -h$(DB_HOST) -p$(DB_PORT) -c "GRANT ALL PRIVILEGES ON DATABASE $(BOND_DB) TO $(BOND_USER)" export PGPASSWORD="$(BOND_PASSWORD)" && \ psql -U$(BOND_USER) -h$(DB_HOST) -p$(DB_PORT) $(BOND_DB) < test_schema.sql + +server-up: server-down + docker-compose -p $(PROJECT) up -d && \ + sleep 10 + +server-down: + docker-compose -p $(PROJECT) down diff --git a/bond_test.go b/internal/tests/bond_test.go similarity index 98% rename from bond_test.go rename to internal/tests/bond_test.go index 3b6afd9..097f86f 100644 --- a/bond_test.go +++ b/internal/tests/bond_test.go @@ -127,16 +127,13 @@ func dbConnected() bool { return false } err := DB.Ping() - if err != nil { - return false - } - return true + return err == nil } func dbReset() { cols, _ := DB.Collections() for _, k := range cols { - DB.Collection(k).Truncate() + _ = DB.Collection(k).Truncate() } } @@ -170,8 +167,7 @@ func TestAccount(t *testing.T) { // ------- // Read // ------- - var acctChk *Account - acctChk = &Account{} + acctChk := &Account{} err = DB.Account.Find(db.Cond{"id": acct.ID}).One(&acctChk) assert.NoError(t, err) @@ -237,7 +233,7 @@ func TestDelete(t *testing.T) { assert.NoError(t, err) err = DB.Account.Delete(&Account{Name: "X"}) - assert.Error(t, bond.ErrZeroItemID) + assert.NoError(t, err) } func TestSlices(t *testing.T) { diff --git a/internal/tests/docker-compose.yml b/internal/tests/docker-compose.yml new file mode 100644 index 0000000..27f9ec5 --- /dev/null +++ b/internal/tests/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3' + +services: + + server: + image: postgres:${POSTGRES_VERSION:-11} + environment: + POSTGRES_USER: ${DB_USERNAME:-postgres} + POSTGRES_PASSWORD: ${DB_PASSWORD:-postgr3s} + ports: + - '${DB_HOST:-127.0.0.1}:${DB_PORT:-5432}:5432' + diff --git a/model_test.go b/internal/tests/model_test.go similarity index 98% rename from model_test.go rename to internal/tests/model_test.go index afb560a..6d400c3 100644 --- a/model_test.go +++ b/internal/tests/model_test.go @@ -71,7 +71,7 @@ func dbUp() bond.Session { cols, _ := sess.Collections() for _, c := range cols { - sess.Collection(c).Truncate() + _ = sess.Collection(c).Truncate() } return sess diff --git a/test_schema.sql b/internal/tests/test_schema.sql similarity index 100% rename from test_schema.sql rename to internal/tests/test_schema.sql