diff mbox series

[v3,5/6] ci: add tests for sqlite3

Message ID 20211208170238.142017-6-vicamo@gmail.com
State Superseded
Headers show
Series Test SQLite configuration | expand

Commit Message

You-Sheng Yang Dec. 8, 2021, 5:02 p.m. UTC
Signed-off-by: You-Sheng Yang <vicamo@gmail.com>
---
 .github/workflows/ci.yaml  |  8 ++++----
 docker-compose-sqlite3.yml | 19 +++++++++++++++++++
 tools/docker/Dockerfile    |  1 +
 tools/docker/entrypoint.sh | 19 +++++++++++++------
 4 files changed, 37 insertions(+), 10 deletions(-)
 create mode 100644 docker-compose-sqlite3.yml

Comments

You-Sheng Yang Dec. 8, 2021, 5:48 p.m. UTC | #1
You-Sheng Yang <vicamo@gmail.com> 於 2021年12月9日 週四 上午1:02寫道:
>
> Signed-off-by: You-Sheng Yang <vicamo@gmail.com>
> ---
>  .github/workflows/ci.yaml  |  8 ++++----
>  docker-compose-sqlite3.yml | 19 +++++++++++++++++++
>  tools/docker/Dockerfile    |  1 +
>  tools/docker/entrypoint.sh | 19 +++++++++++++------
>  4 files changed, 37 insertions(+), 10 deletions(-)
>  create mode 100644 docker-compose-sqlite3.yml
>
> diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
> index 6e9033d..0818aca 100644
> --- a/.github/workflows/ci.yaml
> +++ b/.github/workflows/ci.yaml
> @@ -24,11 +24,11 @@ jobs:
>      strategy:
>        matrix:
>          python: [3.6, 3.7, 3.8, 3.9]
> -        db: [postgres, mysql]
> +        db: [postgres, mysql, sqlite3]
>      env:
>        DATABASE_TYPE: "${{ matrix.db }}"
>        DATABASE_HOST: "127.0.0.1"
> -      DATABASE_NAME: patchwork
> +      DATABASE_NAME: ${{ matrix.db != 'sqlite3' && 'patchwork' || '/dev/shm/patchwork.test.db.sqlite3' }}
>        DATABASE_USER: patchwork
>        DATABASE_PASSWORD: password
>        MYSQL_ROOT_PASSWORD: root
> @@ -115,9 +115,9 @@ jobs:
>      runs-on: ubuntu-latest
>      strategy:
>        matrix:
> -        db: [postgres, mysql]
> +        db: [postgres, mysql, sqlite3]
>      env:
> -      COMPOSE_FILE: ${{ matrix.db == 'mysql' && 'docker-compose.yml' || 'docker-compose-pg.yml' }}
> +      COMPOSE_FILE: ${{ matrix.db == 'mysql' && 'docker-compose.yml' || (matrix.db == 'postgres' && 'docker-compose-pg.yml') || 'docker-compose-sqlite3.yml' }}
>      steps:
>        - name: Checkout source code
>          uses: actions/checkout@v2
> diff --git a/docker-compose-sqlite3.yml b/docker-compose-sqlite3.yml
> new file mode 100644
> index 0000000..d4c6659
> --- /dev/null
> +++ b/docker-compose-sqlite3.yml
> @@ -0,0 +1,19 @@
> +version: "3"
> +services:
> +  web:
> +    build:
> +      context: .
> +      dockerfile: ./tools/docker/Dockerfile
> +      args:
> +        - UID
> +        - GID
> +    command: python3 manage.py runserver 0.0.0.0:8000
> +    volumes:
> +      - .:/home/patchwork/patchwork/
> +    ports:
> +      - "8000:8000"
> +    environment:
> +      - UID
> +      - GID
> +      - DATABASE_TYPE=sqlite3
> +      - DATABASE_NAME=/home/patchwork/patchwork/tools/docker/db/db.sqlite3
> diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile
> index 71167e0..d9d0905 100644
> --- a/tools/docker/Dockerfile
> +++ b/tools/docker/Dockerfile
> @@ -38,6 +38,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
>      libssl-dev \
>      mysql-client \
>      postgresql-client \
> +    sqlite3 \
>      tzdata \
>      zlib1g-dev \
>      && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
> diff --git a/tools/docker/entrypoint.sh b/tools/docker/entrypoint.sh
> index d1bad82..96a59ed 100755
> --- a/tools/docker/entrypoint.sh
> +++ b/tools/docker/entrypoint.sh
> @@ -3,18 +3,22 @@ set -euo pipefail
>
>  export DATABASE_HOST=${DATABASE_HOST:-}
>  export DATABASE_PORT=${DATABASE_PORT:-}
> -export DATABASE_NAME=${DATABASE_NAME:-patchwork}
>  export DATABASE_USER=${DATABASE_USER:-patchwork}
>  export DATABASE_PASSWORD=${DATABASE_PASSWORD:-password}
>
>  case "${DATABASE_TYPE:-}" in
>  postgres)
> +    export DATABASE_NAME=${DATABASE_NAME:-patchwork}
>      export PGPORT=${DATABASE_PORT}
>      export PGPASSWORD=${DATABASE_PASSWORD}
>      psql_args=( ${DATABASE_HOST:+--host=${DATABASE_HOST}} "--username=${DATABASE_USER}" )
>      ;;
> +sqlite3)
> +    export DATABASE_NAME=${DATABASE_NAME:-}
> +    ;;
>  *)
>      export DATABASE_TYPE=mysql
> +    export DATABASE_NAME=${DATABASE_NAME:-patchwork}
>      mysql_args=( ${DATABASE_HOST:+--host=${DATABASE_HOST}} ${DATABASE_PORT:+--port=${DATABASE_PORT}} "--user=${DATABASE_USER}" "--password=${DATABASE_PASSWORD}" )
>      ;;
>  esac
> @@ -22,11 +26,14 @@ esac
>  # functions
>
>  test_database() {
> -    if [ ${DATABASE_TYPE} = "postgres" ]; then
> -        echo ';' | psql "${psql_args[@]}" "${DATABASE_NAME}" 2> /dev/null
> -    else
> -        echo ';' | mysql "${mysql_args[@]}" "${DATABASE_NAME}" 2> /dev/null
> -    fi
> +    case "${DATABASE_TYPE}" in
> +    "postgres")
> +        echo ';' | psql "${psql_args[@]}" "${DATABASE_NAME}" 2> /dev/null ;;
> +    "mysql")
> +        echo ';' | mysql "${mysql_args[@]}" "${DATABASE_NAME}" 2> /dev/null ;;
> +    "sqlite3")
> +        echo ';' | sqlite3 "${DATABASE_NAME}" > /dev/null 2> /dev/null ;;

So DATABASE_NAME shall not be empty if not specified.

> +    esac
>  }
>
>  # the script begins!
> --
> 2.32.0
>
diff mbox series

Patch

diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 6e9033d..0818aca 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -24,11 +24,11 @@  jobs:
     strategy:
       matrix:
         python: [3.6, 3.7, 3.8, 3.9]
-        db: [postgres, mysql]
+        db: [postgres, mysql, sqlite3]
     env:
       DATABASE_TYPE: "${{ matrix.db }}"
       DATABASE_HOST: "127.0.0.1"
-      DATABASE_NAME: patchwork
+      DATABASE_NAME: ${{ matrix.db != 'sqlite3' && 'patchwork' || '/dev/shm/patchwork.test.db.sqlite3' }}
       DATABASE_USER: patchwork
       DATABASE_PASSWORD: password
       MYSQL_ROOT_PASSWORD: root
@@ -115,9 +115,9 @@  jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        db: [postgres, mysql]
+        db: [postgres, mysql, sqlite3]
     env:
-      COMPOSE_FILE: ${{ matrix.db == 'mysql' && 'docker-compose.yml' || 'docker-compose-pg.yml' }}
+      COMPOSE_FILE: ${{ matrix.db == 'mysql' && 'docker-compose.yml' || (matrix.db == 'postgres' && 'docker-compose-pg.yml') || 'docker-compose-sqlite3.yml' }}
     steps:
       - name: Checkout source code
         uses: actions/checkout@v2
diff --git a/docker-compose-sqlite3.yml b/docker-compose-sqlite3.yml
new file mode 100644
index 0000000..d4c6659
--- /dev/null
+++ b/docker-compose-sqlite3.yml
@@ -0,0 +1,19 @@ 
+version: "3"
+services:
+  web:
+    build:
+      context: .
+      dockerfile: ./tools/docker/Dockerfile
+      args:
+        - UID
+        - GID
+    command: python3 manage.py runserver 0.0.0.0:8000
+    volumes:
+      - .:/home/patchwork/patchwork/
+    ports:
+      - "8000:8000"
+    environment:
+      - UID
+      - GID
+      - DATABASE_TYPE=sqlite3
+      - DATABASE_NAME=/home/patchwork/patchwork/tools/docker/db/db.sqlite3
diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile
index 71167e0..d9d0905 100644
--- a/tools/docker/Dockerfile
+++ b/tools/docker/Dockerfile
@@ -38,6 +38,7 @@  RUN apt-get update && apt-get install -y --no-install-recommends \
     libssl-dev \
     mysql-client \
     postgresql-client \
+    sqlite3 \
     tzdata \
     zlib1g-dev \
     && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
diff --git a/tools/docker/entrypoint.sh b/tools/docker/entrypoint.sh
index d1bad82..96a59ed 100755
--- a/tools/docker/entrypoint.sh
+++ b/tools/docker/entrypoint.sh
@@ -3,18 +3,22 @@  set -euo pipefail
 
 export DATABASE_HOST=${DATABASE_HOST:-}
 export DATABASE_PORT=${DATABASE_PORT:-}
-export DATABASE_NAME=${DATABASE_NAME:-patchwork}
 export DATABASE_USER=${DATABASE_USER:-patchwork}
 export DATABASE_PASSWORD=${DATABASE_PASSWORD:-password}
 
 case "${DATABASE_TYPE:-}" in
 postgres)
+    export DATABASE_NAME=${DATABASE_NAME:-patchwork}
     export PGPORT=${DATABASE_PORT}
     export PGPASSWORD=${DATABASE_PASSWORD}
     psql_args=( ${DATABASE_HOST:+--host=${DATABASE_HOST}} "--username=${DATABASE_USER}" )
     ;;
+sqlite3)
+    export DATABASE_NAME=${DATABASE_NAME:-}
+    ;;
 *)
     export DATABASE_TYPE=mysql
+    export DATABASE_NAME=${DATABASE_NAME:-patchwork}
     mysql_args=( ${DATABASE_HOST:+--host=${DATABASE_HOST}} ${DATABASE_PORT:+--port=${DATABASE_PORT}} "--user=${DATABASE_USER}" "--password=${DATABASE_PASSWORD}" )
     ;;
 esac
@@ -22,11 +26,14 @@  esac
 # functions
 
 test_database() {
-    if [ ${DATABASE_TYPE} = "postgres" ]; then
-        echo ';' | psql "${psql_args[@]}" "${DATABASE_NAME}" 2> /dev/null
-    else
-        echo ';' | mysql "${mysql_args[@]}" "${DATABASE_NAME}" 2> /dev/null
-    fi
+    case "${DATABASE_TYPE}" in
+    "postgres")
+        echo ';' | psql "${psql_args[@]}" "${DATABASE_NAME}" 2> /dev/null ;;
+    "mysql")
+        echo ';' | mysql "${mysql_args[@]}" "${DATABASE_NAME}" 2> /dev/null ;;
+    "sqlite3")
+        echo ';' | sqlite3 "${DATABASE_NAME}" > /dev/null 2> /dev/null ;;
+    esac
 }
 
 # the script begins!