]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/3002'
authorTom Hughes <tom@compton.nu>
Wed, 16 Dec 2020 19:17:22 +0000 (19:17 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 16 Dec 2020 19:17:22 +0000 (19:17 +0000)
.coveralls.yml [deleted file]
.github/dependabot.yml
.github/workflows/lint.yml [new file with mode: 0644]
.github/workflows/tests.yml [new file with mode: 0644]
.travis.yml [deleted file]
Gemfile
Gemfile.lock
README.md
config/github.database.yml [new file with mode: 0644]
script/normalise-structure [new file with mode: 0644]
test/test_helper.rb

diff --git a/.coveralls.yml b/.coveralls.yml
deleted file mode 100644 (file)
index 9160059..0000000
+++ /dev/null
@@ -1 +0,0 @@
-service_name: travis-ci
index 539fa4a1d17509ca98b4b875bf84c8519eb1d3fa..7b28ebfcd65eccc943a707844cb106f413d0aaa0 100644 (file)
@@ -5,3 +5,7 @@ updates:
     directory: "/"
     schedule:
       interval: "daily"
+  - package-ecosystem: "github-actions"
+    directory: "/"
+    schedule:
+      interval: "daily"
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644 (file)
index 0000000..e9b7cfd
--- /dev/null
@@ -0,0 +1,115 @@
+name: Lint
+on:
+  - push
+  - pull_request
+env:
+  os: ubuntu-20.04
+  ruby: 2.7
+jobs:
+  rubocop:
+    name: RuboCop
+    runs-on: ubuntu-20.04
+    steps:
+    - name: Check out code
+      uses: actions/checkout@v2
+    - name: Setup ruby
+      uses: actions/setup-ruby@v1.1.2
+      with:
+        ruby-version: ${{ env.ruby }}
+    - name: Cache gems
+      uses: actions/cache@v2
+      with:
+        path: vendor/bundle
+        key: bundle-${{ env.os }}-${{ env.ruby }}-${{ hashFiles('Gemfile.lock') }}
+        restore-keys: |
+          bundle-${{ env.os }}-${{ env.ruby }}-
+    - name: Install gems
+      run: |
+        gem install bundler
+        bundle config set deployment true
+        bundle install --jobs 4 --retry 3
+    - name: Run rubocop
+      run: bundle exec rubocop --format fuubar
+  erblint:
+    name: ERB Lint
+    runs-on: ubuntu-20.04
+    steps:
+    - name: Check out code
+      uses: actions/checkout@v2
+    - name: Setup ruby
+      uses: actions/setup-ruby@v1.1.2
+      with:
+        ruby-version: ${{ env.ruby }}
+    - name: Cache gems
+      uses: actions/cache@v2
+      with:
+        path: vendor/bundle
+        key: bundle-${{ env.os }}-${{ env.ruby }}-${{ hashFiles('Gemfile.lock') }}
+        restore-keys: |
+          bundle-${{ env.os }}-${{ env.ruby }}-
+    - name: Install gems
+      run: |
+        gem install bundler
+        bundle config set deployment true
+        bundle install --jobs 4 --retry 3
+    - name: Run erblint
+      run: bundle exec erblint .
+  eslint:
+    name: ESLint
+    runs-on: ubuntu-20.04
+    steps:
+    - name: Check out code
+      uses: actions/checkout@v2
+    - name: Setup ruby
+      uses: actions/setup-ruby@v1.1.2
+      with:
+        ruby-version: ${{ env.ruby }}
+    - name: Cache gems
+      uses: actions/cache@v2
+      with:
+        path: vendor/bundle
+        key: bundle-${{ env.os }}-${{ env.ruby }}-${{ hashFiles('Gemfile.lock') }}
+        restore-keys: |
+          bundle-${{ env.os }}-${{ env.ruby }}-
+    - name: Cache node modules
+      uses: actions/cache@v1
+      with:
+        path: node_modules
+        key: yarn-${{ env.os }}-${{ hashFiles('yarn.lock') }}
+        restore-keys: |
+          yarn-${{ env.os }}-
+    - name: Install gems
+      run: |
+        gem install bundler
+        bundle config set deployment true
+        bundle install --jobs 4 --retry 3
+    - name: Install node modules
+      run: bundle exec rake yarn:install
+    - name: Create dummy database configuration
+      run: cp config/example.database.yml config/database.yml
+    - name: Run eslint
+      run: bundle exec rake eslint
+  brakeman:
+    name: Brakeman
+    runs-on: ubuntu-20.04
+    steps:
+    - name: Check out code
+      uses: actions/checkout@v2
+    - name: Setup ruby
+      uses: actions/setup-ruby@v1.1.2
+      with:
+        ruby-version: ${{ env.ruby }}
+    - name: Cache gems
+      uses: actions/cache@v2
+      with:
+        path: vendor/bundle
+        key: bundle-${{ env.os }}-${{ env.ruby }}-${{ hashFiles('Gemfile.lock') }}
+        restore-keys: |
+          bundle-${{ env.os }}-${{ env.ruby }}-
+    - name: Install gems
+      run: |
+        gem install bundler
+        bundle config set deployment true
+        bundle install --jobs 4 --retry 3
+    - name: Run brakeman
+      run: bundle exec brakeman -q
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
new file mode 100644 (file)
index 0000000..b111da9
--- /dev/null
@@ -0,0 +1,85 @@
+name: Tests
+on:
+  - push
+  - pull_request
+jobs:
+  test:
+    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
+    - name: Report completion to Coveralls
+      uses: coverallsapp/github-action@v1.1.2
+      with:
+        github-token: ${{ secrets.github_token }}
+        flag-name: ubuntu-${{ matrix.ubuntu }}-ruby-${{ matrix.ruby }}
+        parallel: true
+  finish:
+    name: Finalise
+    needs: test
+    runs-on: ubuntu-latest
+    steps:
+    - name: Report completion to Coveralls
+      uses: coverallsapp/github-action@v1.1.2
+      with:
+        github-token: ${{ secrets.github_token }}
+        parallel-finished: true
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644 (file)
index 77b17cf..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-dist: bionic
-language: ruby
-rvm:
-  - 2.7.0
-cache:
-  - bundler
-addons:
-  postgresql: 9.5
-  apt:
-    packages:
-      - firefox-geckodriver
-      - libarchive-dev
-      - libgd-dev
-      - libffi-dev
-      - libbz2-dev
-services:
-  - memcached
-before_script:
-  - sed -e 's/ IMMUTABLE / /' -e "/^--/d" db/structure.sql > db/structure.expected
-  - psql -U postgres -c "CREATE DATABASE openstreetmap"
-  - psql -U postgres -c "CREATE EXTENSION btree_gist" openstreetmap
-  - psql -U postgres -f db/functions/functions.sql openstreetmap
-  - cp config/travis.database.yml config/database.yml
-  - cp config/example.storage.yml config/storage.yml
-  - touch config/settings.local.yml
-  - echo -e "---\nmemcache_servers:\n  - 127.0.0.1" > config/settings/test.local.yml
-  - bundle exec rake db:migrate
-  - bundle exec rake i18n:js:export
-  - bundle exec rake yarn:install
-script:
-  - bundle exec rubocop -f fuubar
-  - bundle exec rake eslint
-  - bundle exec erblint .
-  - bundle exec brakeman -q
-  - bundle exec rake db:structure:dump
-  - sed -e "/idle_in_transaction_session_timeout/d" -e 's/ IMMUTABLE / /' -e "/^--/d" db/structure.sql > db/structure.actual
-  - diff -uw db/structure.expected db/structure.actual
-  - bundle exec rake test:db
diff --git a/Gemfile b/Gemfile
index 10cfb970e4b5bf0207d16a7bba9079fa78076af2..8869fb37cf1c92b1b085c2e34d0cd8f4955854bb 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -141,7 +141,6 @@ end
 group :test do
   gem "brakeman"
   gem "capybara", ">= 2.15"
-  gem "coveralls", :require => false
   gem "erb_lint", :require => false
   gem "factory_bot_rails"
   gem "minitest", "~> 5.1"
@@ -152,5 +151,7 @@ group :test do
   gem "rubocop-performance"
   gem "rubocop-rails"
   gem "selenium-webdriver"
+  gem "simplecov", :require => false
+  gem "simplecov-lcov", :require => false
   gem "webmock"
 end
index ee1b533ab1d438384e9c6d830a9472aed4ee86d5..d5924e95b01beed451418af0cf31ceac03839bf1 100644 (file)
@@ -137,12 +137,6 @@ GEM
     config (2.2.3)
       deep_merge (~> 1.2, >= 1.2.1)
       dry-validation (~> 1.0, >= 1.0.0)
-    coveralls (0.8.23)
-      json (>= 1.8, < 3)
-      simplecov (~> 0.16.1)
-      term-ansicolor (~> 1.3)
-      thor (>= 0.19.4, < 2.0)
-      tins (~> 1.6)
     crack (0.4.4)
     crass (1.0.6)
     dalli (2.7.11)
@@ -435,6 +429,7 @@ GEM
       json (>= 1.8, < 3)
       simplecov-html (~> 0.10.0)
     simplecov-html (0.10.2)
+    simplecov-lcov (0.8.0)
     smart_properties (1.15.0)
     sprockets (4.0.2)
       concurrent-ruby (~> 1.0)
@@ -445,14 +440,9 @@ GEM
       sprockets (>= 3.0.0)
     strong_migrations (0.7.3)
       activerecord (>= 5)
-    sync (0.5.0)
-    term-ansicolor (1.7.1)
-      tins (~> 1.0)
     thor (1.0.1)
     thread_safe (0.3.6)
     tilt (2.0.10)
-    tins (1.26.0)
-      sync
     tzinfo (1.2.8)
       thread_safe (~> 0.1)
     uglifier (4.2.0)
@@ -498,7 +488,6 @@ DEPENDENCIES
   capybara (>= 2.15)
   composite_primary_keys (~> 12.0.0)
   config
-  coveralls
   dalli
   delayed_job_active_record
   dynamic_form
@@ -552,6 +541,8 @@ DEPENDENCIES
   sassc-rails
   secure_headers
   selenium-webdriver
+  simplecov
+  simplecov-lcov
   strong_migrations
   uglifier (>= 1.3.0)
   validates_email_format_of (>= 1.5.1)
index 81b8ce7bf6edea94cffd08b203083e6f224a43e5..9d5ac53ebeba81f567adce1ca8c1483fd0fff98a 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
 # "The Rails Port"
 
-[![Build Status](https://travis-ci.org/openstreetmap/openstreetmap-website.svg?branch=master)](https://travis-ci.org/openstreetmap/openstreetmap-website)
+[![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)
 [![Coverage Status](https://coveralls.io/repos/openstreetmap/openstreetmap-website/badge.svg?branch=master)](https://coveralls.io/r/openstreetmap/openstreetmap-website?branch=master)
 
 This is The Rails Port, the [Ruby on Rails](http://rubyonrails.org/)
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 / /
index 720618ba094ec06ca1a5aabea17371d3675771ca..41dac890a4e880af2f61fc3ae9d77dca800bd65a 100644 (file)
@@ -1,21 +1,30 @@
-require "coveralls"
-Coveralls.wear!("rails")
-
-# Override the simplecov output message, since it is mostly unwanted noise
-module SimpleCov
-  module Formatter
-    class HTMLFormatter
-      def output_message(_result); end
+require "simplecov"
+require "simplecov-lcov"
+
+# Fix incompatibility of simplecov-lcov with older versions of simplecov that are not expresses in its gemspec.
+# https://github.com/fortissimo1997/simplecov-lcov/pull/25
+unless SimpleCov.respond_to?(:branch_coverage)
+  module SimpleCov
+    def self.branch_coverage?
+      false
     end
   end
 end
 
-# Output both the local simplecov html and the coveralls report
-SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
-  [SimpleCov::Formatter::HTMLFormatter,
-   Coveralls::SimpleCov::Formatter]
+SimpleCov::Formatter::LcovFormatter.config do |config|
+  config.report_with_single_file = true
+  config.single_report_path = "coverage/lcov.info"
+end
+
+SimpleCov.formatters = SimpleCov::Formatter::MultiFormatter.new(
+  [
+    SimpleCov::Formatter::HTMLFormatter,
+    SimpleCov::Formatter::LcovFormatter
+  ]
 )
 
+SimpleCov.start("rails")
+
 require "securerandom"
 require "digest/sha1"