From: Tom Hughes Date: Thu, 21 Nov 2019 19:38:03 +0000 (+0000) Subject: Add actions workflow to run tests X-Git-Tag: live~2353^2~3 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/efef67447ba6c097d12d89987c902526b9ab6df5?ds=sidebyside;hp=e027d5fc5ce3dc381673faf17ca827ae11c0a1f7 Add actions workflow to run tests --- diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 000000000..2eaf153b0 --- /dev/null +++ b/.github/workflows/tests.yml @@ -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 diff --git a/README.md b/README.md index 1a6c46740..704826e3e 100644 --- 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) +[![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) diff --git a/config/github.database.yml b/config/github.database.yml new file mode 100644 index 000000000..9f9c4b1de --- /dev/null +++ b/config/github.database.yml @@ -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 index 000000000..9cf0b6cae --- /dev/null +++ b/script/normalise-structure @@ -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 / /