From 3ab8924f5b5414fd70e6512551e983d41d3099f6 Mon Sep 17 00:00:00 2001 From: Phil Pirozhkov Date: Thu, 7 Jul 2022 23:02:46 +0300 Subject: [PATCH 1/4] Move dev dependencies to Gemfile A similar (unmerged) `rspec-support` PR https://github.com/rspec/rspec-support/pull/517 Reasoning (https://bundler.io/v2.2/man/gemfile.5.html#GEMSPEC): > The .gemspec file is ... where you specify the dependencies your gem needs *to run*. Even though it contradicts the very existence of add_development_dependency. Discussions: - https://github.com/rubygems/rubygems/discussions/5065 - https://github.com/rubygems/rubygems/issues/1104 --- Gemfile | 7 +++++++ rubocop-rspec.gemspec | 7 ------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Gemfile b/Gemfile index 515dec7c8..58cca9093 100644 --- a/Gemfile +++ b/Gemfile @@ -4,6 +4,13 @@ source 'https://rubygems.org' gemspec +gem 'rack' +gem 'rake' +gem 'rspec', '>= 3.4' +gem 'rubocop-performance', '~> 1.7' +gem 'rubocop-rake', '~> 0.6' +gem 'yard' + local_gemfile = 'Gemfile.local' if File.exist?(local_gemfile) diff --git a/rubocop-rspec.gemspec b/rubocop-rspec.gemspec index ad4c0ec56..980a0be7a 100644 --- a/rubocop-rspec.gemspec +++ b/rubocop-rspec.gemspec @@ -38,11 +38,4 @@ Gem::Specification.new do |spec| } spec.add_runtime_dependency 'rubocop', '~> 1.31' - - spec.add_development_dependency 'rack' - spec.add_development_dependency 'rake' - spec.add_development_dependency 'rspec', '>= 3.4' - spec.add_development_dependency 'rubocop-performance', '~> 1.7' - spec.add_development_dependency 'rubocop-rake', '~> 0.6' - spec.add_development_dependency 'yard' end From 15b1a9a580dad6098f39bab9b3939aaf94fcdc0f Mon Sep 17 00:00:00 2001 From: Phil Pirozhkov Date: Sat, 9 Jul 2022 16:07:16 +0300 Subject: [PATCH 2/4] Fix RSpec 4 shared context inclusion Starting from RSpec 4, the implicit shared context inclusion, when a shared context would have been included to an example if the example has matching metadata, is not the case anymore. See: - https://github.com/rspec/rspec-core/pull/2834 - https://github.com/rspec/rspec-core/issues/2832 - https://github.com/rspec/rspec-core/pull/2878 --- spec/rubocop/cli/autocorrect_spec.rb | 4 +++- spec/spec_helper.rb | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/spec/rubocop/cli/autocorrect_spec.rb b/spec/rubocop/cli/autocorrect_spec.rb index a709ef369..6740c23f8 100644 --- a/spec/rubocop/cli/autocorrect_spec.rb +++ b/spec/rubocop/cli/autocorrect_spec.rb @@ -1,8 +1,10 @@ # frozen_string_literal: true -RSpec.describe 'RuboCop::CLI --autocorrect', :isolated_environment do # rubocop:disable RSpec/DescribeClass +RSpec.describe 'RuboCop::CLI --autocorrect' do # rubocop:disable RSpec/DescribeClass subject(:cli) { RuboCop::CLI.new } + include_context 'isolated environment' + include_context 'when cli spec behavior' context 'when corrects `RSpec/Capybara/CurrentPathExpectation` with ' \ diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index a205416bf..388e6157b 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -38,6 +38,10 @@ module SpecHelper config.raise_on_warning = true config.include(ExpectOffense) + + config.include_context 'with default RSpec/Language config', :config + config.include_context 'config', :config + config.include_context 'smoke test', type: :cop_spec end $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) From 54b49a64661311b93d20126754ebe3e0320bf81f Mon Sep 17 00:00:00 2001 From: Phil Pirozhkov Date: Sat, 9 Jul 2022 23:50:31 +0300 Subject: [PATCH 3/4] Refactor RuboCop edge CI job --- .github/workflows/main.yml | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index aa1619c16..cea922a6b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -32,22 +32,30 @@ jobs: task: - internal_investigation - spec - rubocop_version: - - gem - include: - - rubocop_version: edge - ruby: 2.7 - task: internal_investigation - - rubocop_version: edge - ruby: 2.7 - task: spec - name: ${{ matrix.task }}, Ruby ${{ matrix.ruby }} (${{ matrix.rubocop_version }}) + name: ${{ matrix.task }}, Ruby ${{ matrix.ruby }} (gem) + steps: + - uses: actions/checkout@v2 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: "${{ matrix.ruby }}" + bundler-cache: true + - run: bundle exec rake ${{ matrix.task }} + + edge-rubocop: + runs-on: ubuntu-latest + strategy: + matrix: + ruby: + - 2.7 + task: + - internal_investigation + - spec + name: ${{ matrix.task }} Ruby ${{ matrix.ruby }} (edge) steps: - uses: actions/checkout@v2 - name: Use latest RuboCop from `master` run: | echo "gem 'rubocop', github: 'rubocop-hq/rubocop'" > Gemfile.local - if: matrix.rubocop_version == 'edge' - uses: ruby/setup-ruby@v1 with: ruby-version: "${{ matrix.ruby }}" From a004d118f6ea761877da806f6191b7c381966a65 Mon Sep 17 00:00:00 2001 From: Phil Pirozhkov Date: Fri, 8 Jul 2022 00:08:31 +0300 Subject: [PATCH 4/4] Use RSpec 4 pre-release RSpec 4 will eventually be released. Since we're checking its style, why don't we add a job to use it to run our specs. This will help a bit to test RSpec 4 out. --- .github/workflows/main.yml | 21 +++++++++++++++++++++ .rspec | 1 - Gemfile | 2 +- spec/smoke_tests/weird_rspec_spec.rb | 2 +- spec/spec_helper.rb | 6 +----- 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index cea922a6b..43762955b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -61,3 +61,24 @@ jobs: ruby-version: "${{ matrix.ruby }}" bundler-cache: true - run: bundle exec rake ${{ matrix.task }} + + rspec4: + runs-on: ubuntu-latest + name: RSpec 4 + steps: + - uses: actions/checkout@v2 + - name: Use latest RSpec 4 from `4-0-dev` branch + run: | + sed -e '/rspec/d' -i Gemfile + cat << EOF > Gemfile.local + gem 'rspec', github: 'rspec/rspec', branch: '4-0-dev' + gem 'rspec-core', github: 'rspec/rspec-core', branch: '4-0-dev' + gem 'rspec-expectations', github: 'rspec/rspec-expectations', branch: '4-0-dev' + gem 'rspec-mocks', github: 'rspec/rspec-mocks', branch: '4-0-dev' + gem 'rspec-support', github: 'rspec/rspec-support', branch: '4-0-dev' + EOF + - uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.7 + bundler-cache: true + - run: bundle exec rake spec diff --git a/.rspec b/.rspec index 4e33a322b..5be63fcb0 100644 --- a/.rspec +++ b/.rspec @@ -1,3 +1,2 @@ --require spec_helper ---color --format documentation diff --git a/Gemfile b/Gemfile index 58cca9093..c7687ff5c 100644 --- a/Gemfile +++ b/Gemfile @@ -6,7 +6,7 @@ gemspec gem 'rack' gem 'rake' -gem 'rspec', '>= 3.4' +gem 'rspec', '~> 3.11' gem 'rubocop-performance', '~> 1.7' gem 'rubocop-rake', '~> 0.6' gem 'yard' diff --git a/spec/smoke_tests/weird_rspec_spec.rb b/spec/smoke_tests/weird_rspec_spec.rb index f235484ae..843adf7d0 100644 --- a/spec/smoke_tests/weird_rspec_spec.rb +++ b/spec/smoke_tests/weird_rspec_spec.rb @@ -86,7 +86,7 @@ end it_behaves_like :something - it_should_behave_like :something + it_should_behave_like :something if RSpec::Core::Version::STRING < '4.0' it_behaves_like :something do let(:foo) { 'bar' } diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 388e6157b..c4f4d7deb 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -24,11 +24,7 @@ module SpecHelper config.order = :random # Run focused tests with `fdescribe`, `fit`, `:focus` etc. - config.filter_run focus: true - config.run_all_when_everything_filtered = true - - # Forbid RSpec from monkey patching any of our objects - config.disable_monkey_patching! + config.filter_run_when_matching :focus # We should address configuration warnings when we upgrade config.raise_errors_for_deprecations!