---
kind: pipeline
name: testing
steps:
- name: test-vet
  image: golang:1.11 # The lowest golang requirement
  environment:
    GO111MODULE: "on"
    GOPROXY: "https://goproxy.cn"
  commands:
    - make vet
    - make test
  when:
    event:
    - push
    - pull_request

- name: test-sqlite
  image: golang:1.12
  environment:
    GO111MODULE: "on"
    GOPROXY: "https://goproxy.cn"
  commands:
  - make test-sqlite
  - TEST_CACHE_ENABLE=true make test-sqlite
  - TEST_QUOTE_POLICY=reserved make test-sqlite
  when:
    event:
    - push
    - pull_request

- name: test-mysql
  image: golang:1.12
  environment:
    GO111MODULE: "on"
    GOPROXY: "https://goproxy.cn"
    TEST_MYSQL_HOST: mysql
    TEST_MYSQL_CHARSET: utf8
    TEST_MYSQL_DBNAME: xorm_test
    TEST_MYSQL_USERNAME: root
    TEST_MYSQL_PASSWORD:
  commands:
  - make test-mysql
  - TEST_CACHE_ENABLE=true make test-mysql
  - TEST_QUOTE_POLICY=reserved make test-mysql
  when:
    event:
    - push
    - pull_request

- name: test-mysql8
  image: golang:1.12
  environment:
    GO111MODULE: "on"
    GOPROXY: "https://goproxy.cn"
    TEST_MYSQL_HOST: mysql8
    TEST_MYSQL_CHARSET: utf8mb4
    TEST_MYSQL_DBNAME: xorm_test
    TEST_MYSQL_USERNAME: root
    TEST_MYSQL_PASSWORD:
  commands:
  - make test-mysql
  - TEST_CACHE_ENABLE=true make test-mysql
  - TEST_QUOTE_POLICY=reserved make test-mysql
  when:
    event:
    - push
    - pull_request

- name: test-mysql-utf8mb4
  image: golang:1.12
  depends_on:
  - test-mysql
  environment:
    GO111MODULE: "on"
    GOPROXY: "https://goproxy.cn"
    TEST_MYSQL_HOST: mysql
    TEST_MYSQL_CHARSET: utf8mb4
    TEST_MYSQL_DBNAME: xorm_test
    TEST_MYSQL_USERNAME: root
    TEST_MYSQL_PASSWORD:
  commands:
  - make test-mysql
  - TEST_CACHE_ENABLE=true make test-mysql
  - TEST_QUOTE_POLICY=reserved make test-mysql
  when:
    event:
    - push
    - pull_request

- name: test-mymysql
  pull: default
  image: golang:1.12
  depends_on:
    - test-mysql-utf8mb4
  environment:
    GO111MODULE: "on"
    GOPROXY: "https://goproxy.cn"
    TEST_MYSQL_HOST: mysql:3306
    TEST_MYSQL_DBNAME: xorm_test
    TEST_MYSQL_USERNAME: root
    TEST_MYSQL_PASSWORD:
  commands:
  - make test-mymysql
  - TEST_CACHE_ENABLE=true make test-mymysql
  - TEST_QUOTE_POLICY=reserved make test-mymysql
  when:
    event:
    - push
    - pull_request

- name: test-postgres
  pull: default
  image: golang:1.12
  environment:
    GO111MODULE: "on"
    GOPROXY: "https://goproxy.cn"
    TEST_PGSQL_HOST: pgsql
    TEST_PGSQL_DBNAME: xorm_test
    TEST_PGSQL_USERNAME: postgres
    TEST_PGSQL_PASSWORD: postgres
  commands:
  - make test-postgres
  - TEST_CACHE_ENABLE=true make test-postgres
  - TEST_QUOTE_POLICY=reserved make test-postgres
  when:
    event:
    - push
    - pull_request

- name: test-postgres-schema
  pull: default
  image: golang:1.12
  depends_on:
  - test-postgres
  environment:
    GO111MODULE: "on"
    GOPROXY: "https://goproxy.cn"
    TEST_PGSQL_HOST: pgsql
    TEST_PGSQL_SCHEMA: xorm
    TEST_PGSQL_DBNAME: xorm_test
    TEST_PGSQL_USERNAME: postgres
    TEST_PGSQL_PASSWORD: postgres
  commands:
  - make test-postgres
  - TEST_CACHE_ENABLE=true make test-postgres
  - TEST_QUOTE_POLICY=reserved make test-postgres
  when:
    event:
    - push
    - pull_request

- name: test-mssql
  pull: default
  image: golang:1.12
  environment:
    GO111MODULE: "on"
    GOPROXY: "https://goproxy.cn"
    TEST_MSSQL_HOST: mssql
    TEST_MSSQL_DBNAME: xorm_test
    TEST_MSSQL_USERNAME: sa
    TEST_MSSQL_PASSWORD: "yourStrong(!)Password"
  commands:
  - make test-mssql
  - TEST_CACHE_ENABLE=true make test-mssql
  - TEST_QUOTE_POLICY=reserved make test-mssql
  when:
    event:
    - push
    - pull_request

- name: test-tidb
  pull: default
  image: golang:1.12
  environment:
    GO111MODULE: "on"
    GOPROXY: "https://goproxy.cn"
    TEST_TIDB_HOST: "tidb:4000"
    TEST_TIDB_DBNAME: xorm_test
    TEST_TIDB_USERNAME: root
    TEST_TIDB_PASSWORD:
  commands:
  - make test-tidb
  - TEST_CACHE_ENABLE=true make test-tidb
  - TEST_QUOTE_POLICY=reserved make test-tidb
  when:
    event:
    - push
    - pull_request

- name: test-cockroach
  pull: default
  image: golang:1.13
  environment:
    GO111MODULE: "on"
    GOPROXY: "https://goproxy.cn"
    TEST_COCKROACH_HOST: "cockroach:26257"
    TEST_COCKROACH_DBNAME: xorm_test
    TEST_COCKROACH_USERNAME: root
    TEST_COCKROACH_PASSWORD:
  commands:
  - sleep 10
  - make test-cockroach
  - TEST_CACHE_ENABLE=true make test-cockroach
  when:
    event:
    - push
    - pull_request

- name: merge_coverage
  pull: default
  image: golang:1.12
  environment:
    GO111MODULE: "on"
    GOPROXY: "https://goproxy.cn"
  depends_on:
  - test-vet
  - test-sqlite
  - test-mysql
  - test-mysql8
  - test-mymysql
  - test-postgres
  - test-postgres-schema
  - test-mssql
  - test-tidb
  - test-cockroach
  commands:
  - make coverage
  when:
    event:
    - push
    - pull_request

services:

- name: mysql
  pull: default
  image: mysql:5.7
  environment:
    MYSQL_ALLOW_EMPTY_PASSWORD: yes
    MYSQL_DATABASE: xorm_test
  when:
    event:
    - push
    - tag
    - pull_request

- name: mysql8
  pull: default
  image: mysql:8.0
  environment:
    MYSQL_ALLOW_EMPTY_PASSWORD: yes
    MYSQL_DATABASE: xorm_test
  when:
    event:
    - push
    - tag
    - pull_request

- name: pgsql
  pull: default
  image: postgres:9.5
  environment:
    POSTGRES_DB: xorm_test
    POSTGRES_USER: postgres
    POSTGRES_PASSWORD: postgres
  when:
    event:
    - push
    - tag
    - pull_request

- name: mssql
  pull: default
  image: microsoft/mssql-server-linux:latest
  environment:
    ACCEPT_EULA: Y
    SA_PASSWORD: yourStrong(!)Password
    MSSQL_PID: Developer
  when:
    event:
    - push
    - tag
    - pull_request

- name: tidb
  pull: default
  image: pingcap/tidb:v3.0.3
  when:
    event:
    - push
    - tag
    - pull_request

- name: cockroach
  pull: default
  image: cockroachdb/cockroach:v19.2.4
  commands:
  - /cockroach/cockroach start --insecure
  when:
    event:
    - push
    - tag
    - pull_request