Merge remote-tracking branch 'upstream/pull/3002'

This commit is contained in:
Tom Hughes 2020-12-16 19:17:22 +00:00
commit aeb9c4df97
11 changed files with 245 additions and 64 deletions

View file

@ -1 +0,0 @@
service_name: travis-ci

View file

@ -5,3 +5,7 @@ updates:
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"

115
.github/workflows/lint.yml vendored Normal file
View file

@ -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

85
.github/workflows/tests.yml vendored Normal file
View file

@ -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

View file

@ -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

View file

@ -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

View 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)

View file

@ -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/)

View file

@ -0,0 +1,4 @@
test:
adapter: postgresql
database: openstreetmap
encoding: utf8

View file

@ -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 / /

View file

@ -1,21 +1,30 @@
require "coveralls"
Coveralls.wear!("rails")
require "simplecov"
require "simplecov-lcov"
# Override the simplecov output message, since it is mostly unwanted noise
module SimpleCov
module Formatter
class HTMLFormatter
def output_message(_result); end
# 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"