sea-orm 0.2.6

🐚 An async & dynamic ORM for Rust
Documentation
name: tests

on:
  pull_request:
  push:
    branches:
      - master
      - 0.2.x

env:
  CARGO_TERM_COLOR: always

jobs:

  clippy:
    name: Clippy
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v2

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          components: clippy
          override: true
          
      - uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --all-targets --all

  compile-sqlite:
    name: Compile SQLite
    runs-on: ubuntu-20.04
    strategy:
      matrix:
        runtime: [async-std, actix, tokio]
        tls: [native-tls, rustls]
    steps:
      - uses: actions/checkout@v2

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - uses: actions/cache@v2
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            Cargo.lock
            target
          key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-sqlite-${{ matrix.runtime }}-${{ matrix.tls }}

      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: >
            --features default,sqlx-sqlite,runtime-${{ matrix.runtime }}-${{ matrix.tls }}
            --no-run

  compile-mysql:
    name: Compile MySQL
    runs-on: ubuntu-20.04
    strategy:
      matrix:
        runtime: [async-std, actix, tokio]
        tls: [native-tls, rustls]
    steps:
      - uses: actions/checkout@v2

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - uses: actions/cache@v2
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            Cargo.lock
            target
          key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-mysql-${{ matrix.runtime }}-${{ matrix.tls }}

      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: >
            --features default,sqlx-mysql,runtime-${{ matrix.runtime }}-${{ matrix.tls }}
            --no-run

  compile-postgres:
    name: Compile PostgreSQL
    runs-on: ubuntu-20.04
    strategy:
      matrix:
        runtime: [async-std, actix, tokio]
        tls: [native-tls, rustls]
    steps:
      - uses: actions/checkout@v2

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - uses: actions/cache@v2
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            Cargo.lock
            target
          key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-postgres-${{ matrix.runtime }}-${{ matrix.tls }}

      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: >
            --features default,sqlx-postgres,runtime-${{ matrix.runtime }}-${{ matrix.tls }}
            --no-run

  test:
    name: Unit Test
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v2

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: >
            --all

  cli:
    name: CLI
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
    steps:
      - uses: actions/checkout@v2

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - uses: actions-rs/cargo@v1
        with:
          command: install
          args: >
            --path sea-orm-cli

  examples:
    name: Examples
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        path: [async-std, tokio, actix_example, actix4_example, rocket_example]
    steps:
      - uses: actions/checkout@v2

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: >
            --manifest-path examples/${{ matrix.path }}/Cargo.toml

  sqlite:
    name: SQLite
    runs-on: ubuntu-20.04
    needs: compile-sqlite
    env:
      DATABASE_URL: "sqlite::memory:"
    strategy:
      matrix:
        runtime: [async-std, actix, tokio]
        tls: [native-tls, rustls]
    steps:
      - uses: actions/checkout@v2

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - uses: actions/cache@v2
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            Cargo.lock
            target
          key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-sqlite-${{ matrix.runtime }}-${{ matrix.tls }}

      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: >
            --features default,sqlx-sqlite,runtime-${{ matrix.runtime }}-${{ matrix.tls }}

  mysql:
    name: MySQL
    runs-on: ubuntu-20.04
    needs: compile-mysql
    env:
      DATABASE_URL: "mysql://root:@localhost"
    strategy:
      matrix:
        version: [8.0, 5.7]
        runtime: [async-std, actix, tokio]
        tls: [native-tls]
    services:
      mysql:
        image: mysql:${{ matrix.version }}
        env:
          MYSQL_HOST: 127.0.0.1
          MYSQL_DB: mysql
          MYSQL_USER: sea
          MYSQL_PASSWORD: sea
          MYSQL_ALLOW_EMPTY_PASSWORD: yes
          MYSQL_ROOT_PASSWORD:
        ports:
          - "3306:3306"
        options: >-
          --health-cmd="mysqladmin ping"
          --health-interval=10s
          --health-timeout=5s
          --health-retries=3
    steps:
      - uses: actions/checkout@v2

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - uses: actions/cache@v2
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            Cargo.lock
            target
          key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-mysql-${{ matrix.runtime }}-${{ matrix.tls }}

      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: >
            --features default,sqlx-mysql,runtime-${{ matrix.runtime }}-${{ matrix.tls }}

  mariadb:
    name: MariaDB
    runs-on: ubuntu-20.04
    needs: compile-mysql
    env:
      DATABASE_URL: "mysql://root:@localhost"
    strategy:
      matrix:
        version: [10.6]
        runtime: [async-std, actix, tokio]
        tls: [native-tls]
    services:
      mysql:
        image: mariadb:${{ matrix.version }}
        env:
          MYSQL_HOST: 127.0.0.1
          MYSQL_DB: mysql
          MYSQL_USER: sea
          MYSQL_PASSWORD: sea
          MYSQL_ALLOW_EMPTY_PASSWORD: yes
          MYSQL_ROOT_PASSWORD:
        ports:
          - "3306:3306"
        options: >-
          --health-cmd="mysqladmin ping"
          --health-interval=10s
          --health-timeout=5s
          --health-retries=3
    steps:
      - uses: actions/checkout@v2

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - uses: actions/cache@v2
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            Cargo.lock
            target
          key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-mysql-${{ matrix.runtime }}-${{ matrix.tls }}

      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: >
            --features default,sqlx-mysql,runtime-${{ matrix.runtime }}-${{ matrix.tls }}

  postgres:
    name: Postgres
    runs-on: ubuntu-20.04
    needs: compile-postgres
    env:
      DATABASE_URL: "postgres://root:root@localhost"
    strategy:
      matrix:
        version: [13.3, 12.7, 11.12, 10.17, 9.6.22]
        runtime: [tokio]
        tls: [native-tls]
    services:
      postgres:
        image: postgres:${{ matrix.version }}
        env:
          POSTGRES_HOST: 127.0.0.1
          POSTGRES_USER: root
          POSTGRES_PASSWORD: root
        ports:
          - "5432:5432"
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
    steps:
      - uses: actions/checkout@v2

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - uses: actions/cache@v2
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            Cargo.lock
            target
          key: ${{ github.sha }}-${{ github.run_id }}-${{ runner.os }}-postgres-${{ matrix.runtime }}-${{ matrix.tls }}

      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: >
            --features default,sqlx-postgres,runtime-${{ matrix.runtime }}-${{ matrix.tls }}