+++ /dev/null
-service_name: travis-ci
directory: "/"
schedule:
interval: "daily"
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "daily"
--- /dev/null
+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
--- /dev/null
+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
+++ /dev/null
-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
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"
gem "rubocop-performance"
gem "rubocop-rails"
gem "selenium-webdriver"
+ gem "simplecov", :require => false
+ gem "simplecov-lcov", :require => false
gem "webmock"
end
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)
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)
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)
capybara (>= 2.15)
composite_primary_keys (~> 12.0.0)
config
- coveralls
dalli
delayed_job_active_record
dynamic_form
sassc-rails
secure_headers
selenium-webdriver
+ simplecov
+ simplecov-lcov
strong_migrations
uglifier (>= 1.3.0)
validates_email_format_of (>= 1.5.1)
# "The Rails Port"
-[](https://travis-ci.org/openstreetmap/openstreetmap-website)
+[](https://github.com/openstreetmap/openstreetmap-website/actions?query=workflow%3ALint%20branch%3Amaster%20event%3Apush)
+[](https://github.com/openstreetmap/openstreetmap-website/actions?query=workflow%3ATests%20branch%3Amaster%20event%3Apush)
[](https://coveralls.io/r/openstreetmap/openstreetmap-website?branch=master)
This is The Rails Port, the [Ruby on Rails](http://rubyonrails.org/)
--- /dev/null
+test:
+ adapter: postgresql
+ database: openstreetmap
+ encoding: utf8
--- /dev/null
+/^$/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 / /
-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"