name: Test on: workflow_call: inputs: saas: type: boolean required: true secrets: FIZZY_GH_TOKEN: required: false permissions: contents: read jobs: test: name: Tests (${{ matrix.mode }}) runs-on: ubuntu-latest strategy: matrix: include: - mode: SQLite db_adapter: sqlite - mode: MySQL db_adapter: mysql services: mysql: image: mysql:8.0 env: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: fizzy_test ports: - 3306:3306 options: >- --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 env: RAILS_ENV: test DATABASE_ADAPTER: ${{ matrix.db_adapter }} ${{ inputs.saas && 'SAAS' || 'SAAS_DISABLED' }}: ${{ inputs.saas && '1' || '' }} BUNDLE_GEMFILE: ${{ inputs.saas && 'Gemfile.saas' || 'Gemfile' }} MYSQL_HOST: 127.0.0.1 MYSQL_PORT: 3306 MYSQL_USER: root FIZZY_DB_HOST: 127.0.0.1 FIZZY_DB_PORT: 3306 BUNDLE_GITHUB__COM: ${{ inputs.saas && format('x-access-token:{0}', secrets.FIZZY_GH_TOKEN) || '' }} # zizmor: ignore[secrets-outside-env] steps: - name: Install system packages timeout-minutes: 10 run: sudo apt-get update && sudo apt-get install --no-install-recommends -y libsqlite3-0 libvips curl ffmpeg - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - uses: ruby/setup-ruby@e65c17d16e57e481586a6a5a0282698790062f92 # v1.300.0 with: ruby-version: .ruby-version bundler-cache: true - name: Run tests run: bin/rails db:setup test - name: Run system tests run: bin/rails test:system