]> git.openstreetmap.org Git - rails.git/blobdiff - .github/workflows/tests.yml
Add actions workflow to run tests
[rails.git] / .github / workflows / tests.yml
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
new file mode 100644 (file)
index 0000000..2eaf153
--- /dev/null
@@ -0,0 +1,69 @@
+name: Tests
+on:
+  - push
+  - pull_request
+jobs:
+  tests:
+    name: Ubuntu ${{ matrix.ubuntu }}, Ruby ${{ matrix.ruby }}
+    strategy:
+      matrix:
+        ubuntu: [18.04, 20.04]
+        ruby: [2.5, 2.7]
+    runs-on: ubuntu-${{ matrix.ubuntu }}
+    env:
+      RAILS_ENV: test
+      OPENSTREETMAP_MEMCACHE_SERVERS: 127.0.0.1
+    steps:
+    - name: Checkout source
+      uses: actions/checkout@v1
+    - name: Setup ruby
+      uses: actions/setup-ruby@v1
+      with:
+        ruby-version: ${{ matrix.ruby }}
+    - name: Cache gems
+      uses: actions/cache@v1
+      with:
+        path: vendor/bundle
+        key: bundle-ubuntu-${{ matrix.ubuntu }}-ruby-${{ matrix.ruby }}-${{ hashFiles('Gemfile.lock') }}
+        restore-keys: |
+          bundle-ubuntu-${{ matrix.ubuntu }}-ruby-${{ matrix.ruby }}-
+    - name: Cache node modules
+      uses: actions/cache@v1
+      with:
+        path: node_modules
+        key: yarn-ubuntu-${{ matrix.ubuntu }}-${{ hashFiles('yarn.lock') }}
+        restore-keys: |
+          yarn-ubuntu-${{ matrix.ubuntu }}-
+    - name: Install packages
+      run: |
+        sudo apt-get -yqq update
+        sudo apt-get -yqq install memcached
+    - name: Install gems
+      run: |
+        gem install bundler
+        bundle config set deployment true
+        bundle install --jobs 4 --retry 3
+    - name: Create database
+      run: |
+        sudo systemctl start postgresql
+        sudo -u postgres createuser -s $(id -un)
+        createdb openstreetmap
+        psql -c "CREATE EXTENSION btree_gist" openstreetmap
+        psql -f db/functions/functions.sql openstreetmap
+    - name: Configure rails
+      run: |
+        cp config/github.database.yml config/database.yml
+        cp config/example.storage.yml config/storage.yml
+        touch config/settings.local.yml
+    - name: Populate database
+      run: |
+        sed -f script/normalise-structure db/structure.sql > db/structure.expected
+        bundle exec rake db:migrate
+        sed -f script/normalise-structure db/structure.sql > db/structure.actual
+        diff -uw db/structure.expected db/structure.actual
+    - name: Export javascript strings
+      run: bundle exec rake i18n:js:export
+    - name: Install node modules
+      run: bundle exec rake yarn:install
+    - name: Run tests
+      run: bundle exec rake test:db