diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..83996b29 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,41 @@ +name: Test + +on: push + +jobs: + test: + name: Run tests + + runs-on: ubuntu-latest + env: + RAILS_ENV: test + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + bundler: 1.17.2 + bundler-cache: true + + - name: Setup Node.js environment + uses: actions/setup-node@v3.5.1 + with: + node-version: '14.x' + + - name: Install bower + run: npm install -g bower + + - name: Install bowndler packages + run: bundle exec bowndler install && bundle exec bowndler update + + - name: Run npm install + run: npm install + + - name: Run cucumber tests + run: bundle exec cucumber + + - name: Run tests + run: bundle exec rspec diff --git a/.ruby-version b/.ruby-version index aedc15bb..1f7da99d 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.5.3 +2.7.7 diff --git a/Gemfile b/Gemfile index d31bd73e..1a7129aa 100644 --- a/Gemfile +++ b/Gemfile @@ -1,14 +1,18 @@ source 'https://rubygems.org' -source 'http://gems.dev.mas.local' + +# force Bundler to use SSL +git_source(:github) { |repo| "https://github.com/#{repo}.git" } # Declare your gem's dependencies in wpcc.gemspec. # Bundler will treat runtime dependencies like base dependencies, and # development dependencies will be added by default to the :development group. gemspec -ruby '2.5.3' +ruby IO.read('.ruby-version').chomp +gem 'bigdecimal', '1.3.5' gem 'bowndler' +gem 'dough-ruby', github: 'moneyadviceservice/dough', branch: 'PostMessages_v5.45' gem 'rails', '~> 4.2.7' gem 'rubocop', '~> 0.63.1', require: false gem 'sass-rails' @@ -27,13 +31,10 @@ group :development, :test do end group :test do - gem 'brakeman', '~> 4.5.1', require: false gem 'capybara', '< 3.0' gem 'cucumber-rails', require: false - gem 'danger', require: false - gem 'danger-rubocop', require: false gem 'poltergeist' - gem 'simplecov', require: false + gem 'phantomjs', require: 'phantomjs/poltergeist' gem 'site_prism' gem 'timecop' gem 'tzinfo-data' diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index ac116265..00000000 --- a/Jenkinsfile +++ /dev/null @@ -1,48 +0,0 @@ -pipeline { - agent { label "master" } - environment { - COMPOSE_PROJECT_NAME = "${env.JOB_NAME}" - GITHUB_TOKEN = credentials('masbuild-github-token') - } - stages { - stage('prepare') { - steps { - script { - docker.withRegistry('https://masdevtestregistry.azurecr.io', 'acr_credentials') { - sh 'docker-compose -f docker-compose.yml build --force-rm' - sh 'docker-compose -f docker-compose.yml up -d' - } - } - } - } - stage ('branch-test') { - when { not { branch 'PR-*' } } - steps { - sh 'docker-compose -f docker-compose.yml run --rm rails ./jenkins/test' - } - } - stage ('pr-test') { - when { branch 'PR-*' } - environment { - DANGER_CHANGE_ID = "${env.CHANGE_ID}" - DANGER_GIT_URL = "${env.GIT_URL}" - DANGER_JENKINS_URL = "${env.JENKINS_URL}" - } - steps { - sh 'docker-compose -f docker-compose.yml run --rm rails ./jenkins/test' - } - } - stage('build') { - when { branch 'master' } - steps { - sh "docker-compose -f docker-compose.yml run --rm rails ./jenkins/build" - } - } - } - post { - always { - sh 'docker-compose -f docker-compose.yml down --remove-orphans' - cleanWs() - } - } -} diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index a01fdde7..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -version: '3' -services: - rails: - build: - context: . - dockerfile: jenkins/Dockerfile - environment: - - GITHUB_USER=$GITHUB_TOKEN_USR - - GITHUB_PASS=$GITHUB_TOKEN_PSW - - DANGER_GITHUB_API_TOKEN=$GITHUB_TOKEN_PSW - - CHANGE_ID=$DANGER_CHANGE_ID - - GIT_URL=$DANGER_GIT_URL - - JENKINS_URL=$DANGER_JENKINS_URL - - HTTP_REQUEST_TIMEOUT=10 - - LANG=C.UTF-8 \ No newline at end of file diff --git a/hooks/pre-push b/hooks/pre-push deleted file mode 100644 index 28ab45ca..00000000 --- a/hooks/pre-push +++ /dev/null @@ -1,3 +0,0 @@ -#/usr/bin/env sh - -./test.sh diff --git a/jenkins/Dangerfile b/jenkins/Dangerfile deleted file mode 100644 index b015f29d..00000000 --- a/jenkins/Dangerfile +++ /dev/null @@ -1 +0,0 @@ -danger.import_dangerfile(github: 'moneyadviceservice/mas-standards') diff --git a/jenkins/Dockerfile b/jenkins/Dockerfile deleted file mode 100644 index c729339d..00000000 --- a/jenkins/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM masdevtestregistry.azurecr.io/jenkins/sfgb-bundle-2.5.3:latest - -RUN apt-get -qq update > /dev/null && \ - apt-get -qq dist-upgrade > /dev/null && \ - apt-get -qq clean > /dev/null && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -WORKDIR /var/tmp/app/ -COPY . . diff --git a/jenkins/build b/jenkins/build deleted file mode 100755 index 3d3e73d5..00000000 --- a/jenkins/build +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -l - -set -e - -if [ -f /.dockerenv ]; then - source ~/.bashrc - rvm use default -fi - -export RAILS_ENV=build -export BUNDLE_WITHOUT="development:test" -exit_code=0 - -function run { - declare -a build_command=("$@") - echo '' - echo "=== Running \`${build_command[*]}\`" - if ! ${build_command[*]}; then - echo "=== This build failed." - exit_code=1 - fi -} - -run bower cache clean --allow-root -run npm install -run bundle install -run bowndler install --production --allow-root -run gem build *.gemspec -run gem inabox *.gem -g http://gems.dev.mas.local - -exit "$exit_code" diff --git a/jenkins/test b/jenkins/test deleted file mode 100755 index 92803f3a..00000000 --- a/jenkins/test +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -l - -set -e - -if [ -f /.dockerenv ]; then - source ~/.bashrc - rvm use default - rvm gemset list - rvm gemset use wpcc -fi - -export RAILS_ENV=test -export BUNDLE_WITHOUT=development:build - -function run { - declare -a tests_command=("$@") - - echo '' - echo "=== Running \`${tests_command[*]}\`" - if ! ${tests_command[*]}; then - echo "=== These tests failed." - exit 1 - fi -} - -function info { - declare -a info_command=("$@") - echo '' - echo "=== Running for informational purposes \`${info_command[*]}\`" - if ! ${info_command[*]}; then - echo "== This test has errors and/or warnings. Please review results" - fi -} - -# (re)install node packages to local dir before tests run -run bundle install -run npm install -run bundle update brakeman --quiet -run bundle exec bowndler install --allow-root -run bundle exec rubocop . -run bundle exec rspec -run bundle exec cucumber -info brakeman -q --no-pager --ensure-latest --no-exit-on-warn - -if [ -f /.dockerenv ]; then - run bundle exec danger --dangerfile=jenkins/Dangerfile --verbose -fi diff --git a/lib/wpcc/version.rb b/lib/wpcc/version.rb index d478c9bc..b482937b 100644 --- a/lib/wpcc/version.rb +++ b/lib/wpcc/version.rb @@ -1,8 +1,8 @@ module Wpcc module Version MAJOR = 3 - MINOR = 1 - PATCH = 1 + MINOR = 2 + PATCH = 0 STRING = [MAJOR, MINOR, PATCH].join('.') end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 16e5bb8b..56169a79 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -3,18 +3,11 @@ require File.expand_path('dummy/config/environment', __dir__) abort('Do not run the tests in production mode!!!') if Rails.env.production? require 'rspec/rails' -require 'simplecov' Dir[ ::Wpcc::Engine.root.join('spec/shared_examples/**.rb') ].each { |f| require f } -SimpleCov.start do - add_filter '/spec/' -end - -SimpleCov.minimum_coverage 85 - RSpec.configure do |config| config.fixture_path = "#{::Rails.root}/spec/fixtures" @@ -31,3 +24,24 @@ with.library :rails end end + +# a workaround to avoid MonitorMixin double-initialize error +# https://github.com/rails/rails/issues/34790#issuecomment-681034561 +if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.6.0') + if Gem::Version.new(Rails.version) < Gem::Version.new('5.0.0') + class ActionController::TestResponse < ActionDispatch::TestResponse + def recycle! + if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7.0') + @mon_data = nil + @mon_data_owner_object_id = nil + else + @mon_mutex = nil + @mon_mutex_owner_object_id = nil + end + initialize + end + end + else + warn "Monkeypatch for ActionController::TestResponse is no longer needed" + end +end diff --git a/test.sh b/test.sh deleted file mode 100755 index c4c6fb96..00000000 --- a/test.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -set -e -x - -export RAILS_ENV=test -export BUNDLE_WITHOUT=development - -npm install -q -bundle install --quiet -# Fail when Brakeman is outdated -bundle exec brakeman -q --no-pager --ensure-latest -bundle exec rubocop . -bundle exec bowndler install -q - -bundle exec rspec -f progress -bundle exec cucumber -f progress diff --git a/wpcc.gemspec b/wpcc.gemspec index 47304966..3ff92616 100644 --- a/wpcc.gemspec +++ b/wpcc.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |s| s.test_files = Dir['spec/**/*'] - s.add_dependency 'dough-ruby', '~> 5.38' + s.add_dependency 'dough-ruby', '< 6' s.add_dependency 'meta-tags' s.add_runtime_dependency 'modernizr-rails', '~> 2.6.2'