Add actions workflow to run tests
authorTom Hughes <tom@compton.nu>
Thu, 21 Nov 2019 19:38:03 +0000 (19:38 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 9 Dec 2020 22:07:40 +0000 (22:07 +0000)
.github/workflows/tests.yml [new file with mode: 0644]
README.md
config/github.database.yml [new file with mode: 0644]
script/normalise-structure [new file with mode: 0644]

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
index 1a6c4674097220271477271a1a768412f6ebb229..704826e3e68ff3ec96b125e12e84e2971113c466 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
 # "The Rails Port"
 
 [![Lint](https://github.com/openstreetmap/openstreetmap-website/workflows/Lint/badge.svg?branch=master&event=push)](https://github.com/openstreetmap/openstreetmap-website/actions?query=workflow%3ALint%20branch%3Amaster%20event%3Apush)
 # "The Rails Port"
 
 [![Lint](https://github.com/openstreetmap/openstreetmap-website/workflows/Lint/badge.svg?branch=master&event=push)](https://github.com/openstreetmap/openstreetmap-website/actions?query=workflow%3ALint%20branch%3Amaster%20event%3Apush)
+[![Tests](https://github.com/openstreetmap/openstreetmap-website/workflows/Tests/badge.svg?branch=master&event=push)](https://github.com/openstreetmap/openstreetmap-website/actions?query=workflow%3ATests%20branch%3Amaster%20event%3Apush)
 [![Build Status](https://travis-ci.org/openstreetmap/openstreetmap-website.svg?branch=master)](https://travis-ci.org/openstreetmap/openstreetmap-website)
 [![Coverage Status](https://coveralls.io/repos/openstreetmap/openstreetmap-website/badge.svg?branch=master)](https://coveralls.io/r/openstreetmap/openstreetmap-website?branch=master)
 
 [![Build Status](https://travis-ci.org/openstreetmap/openstreetmap-website.svg?branch=master)](https://travis-ci.org/openstreetmap/openstreetmap-website)
 [![Coverage Status](https://coveralls.io/repos/openstreetmap/openstreetmap-website/badge.svg?branch=master)](https://coveralls.io/r/openstreetmap/openstreetmap-website?branch=master)
 
diff --git a/config/github.database.yml b/config/github.database.yml
new file mode 100644 (file)
index 0000000..9f9c4b1
--- /dev/null
@@ -0,0 +1,4 @@
+test:
+  adapter: postgresql
+  database: openstreetmap
+  encoding: utf8
diff --git a/script/normalise-structure b/script/normalise-structure
new file mode 100644 (file)
index 0000000..9cf0b6c
--- /dev/null
@@ -0,0 +1,10 @@
+/^$/d
+/^--/d
+/^CREATE EXTENSION IF NOT EXISTS plpgsql /d
+/^COMMENT ON EXTENSION plpgsql /d
+/^SET default_with_oids /d
+/^SET default_table_access_method /d
+/^SET idle_in_transaction_session_timeout /d
+/^    AS integer$/d
+
+s/ IMMUTABLE / /