--- /dev/null
+name: Tests
+
+on:
+ push:
+
+jobs:
+ tests:
+ name: test ${{matrix.db}} ruby-${{ matrix.ruby }}
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ ruby: ['3.1', '3.2', '3.3']
+ db: ['postgresql', 'mysql']
+ fail-fast: false
+
+ services:
+ postgres:
+ image: postgres:13
+ env:
+ POSTGRES_DB: redmine_test
+ POSTGRES_USER: root
+ POSTGRES_PASSWORD: root
+ ports:
+ - 5432:5432
+ options: >-
+ --health-cmd pg_isready
+ --health-interval 10s
+ --health-timeout 5s
+ --health-retries 5
+
+ mysql:
+ image: mysql:8.0
+ env:
+ MYSQL_DATABASE: redmine_test
+ MYSQL_ROOT_PASSWORD: 'root'
+ ports:
+ - 3306:3306
+ options: >-
+ --health-cmd="mysqladmin ping"
+ --health-interval=10s
+ --health-timeout=5s
+ --health-retries=3
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Install package dependencies
+ run: >
+ sudo apt-get install --yes --quiet
+ ghostscript
+ gsfonts
+
+ - name: Allow imagemagick to read PDF files
+ run: |
+ echo '<policymap>' > policy.xml
+ echo '<policy domain="coder" rights="read | write" pattern="PDF" />' >> policy.xml
+ echo '</policymap>' >> policy.xml
+ sudo rm /etc/ImageMagick-6/policy.xml
+ sudo mv policy.xml /etc/ImageMagick-6/policy.xml
+
+ - name: Install Ruby and gems
+ uses: ruby/setup-ruby@v1.176.0
+ with:
+ ruby-version: ${{ matrix.ruby }}
+ bundler-cache: true
+
+ - name: Prepare Redmine configuration for PostgreSQL
+ run: |
+ cp config/database.yml.example config/database.yml
+ sed -i -e "s/mysql2$/postgresql/g" config/database.yml
+ sed -i -e "s/host:.*$/host: localhost/g" config/database.yml
+ sed -i -e "s/password:.*$/password: root/g" config/database.yml
+ sed -i -e "41,43d" config/database.yml
+ if: matrix.db == 'postgresql'
+
+ - name: Prepare Redmine configuration for MySQL
+ run: |
+ cp config/database.yml.example config/database.yml
+ sed -i -e "s/host:.*$/host: 127.0.0.1/g" config/database.yml
+ sed -i -e "s/password:.*$/password: root/g" config/database.yml
+ if: matrix.db == 'mysql'
+
+ - name: Install dependencies
+ env:
+ RAILS_ENV: test
+ run: bundle install --jobs=4 --retry=3
+
+ - name: Run DB migration
+ env:
+ RAILS_ENV: test
+ run: bundle exec rake db:migrate
+
+ - name: Run tests
+ run: bin/rails test