diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000000..8b51487a2e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,93 @@ +name: RSpec CI +on: + push: + branches: + - 'main' + - '*-maintenance' + - '*-dev' + pull_request: + branches: + - '*' +jobs: + test: + name: 'Ruby: ${{ matrix.ruby }}, Rails: ${{ matrix.env.RAILS_VERSION }}' + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + matrix: + include: + # Rails 6.0 builds >= 2.5.0 + - ruby: 3.0.0-preview1 + env: + RAILS_VERSION: '~> 6.0.0' + - ruby: 2.7 + env: + RAILS_VERSION: '~> 6.0.0' + - ruby: 2.6 + env: + RAILS_VERSION: '~> 6.0.0' + - ruby: 2.5 + env: + RAILS_VERSION: '~> 6.0.0' + # Rails 5.2 builds >= 2.2.2 + - ruby: 2.6.6 + env: + RAILS_VERSION: '~> 5.2.0' + - ruby: 2.5.8 + env: + RAILS_VERSION: '~> 5.2.0' + - ruby: 2.4.10 + env: + RAILS_VERSION: '~> 5.2.0' + - ruby: 2.3.8 + env: + RAILS_VERSION: '~> 5.2.0' + - ruby: 2.2.10 + allow_failure: true + env: + RAILS_VERSION: '~> 5.2.0' + - ruby: 2.2.10 + env: + RAILS_VERSION: '5-2-stable' + # Rails 5.1 Builds >= 2.2.2 + - ruby: 2.6.6 + env: + RAILS_VERSION: '~> 5.1.0' + - ruby: 2.5.8 + env: + RAILS_VERSION: '~> 5.1.0' + - ruby: 2.4.10 + env: + RAILS_VERSION: '~> 5.1.0' + - ruby: 2.3.8 + env: + RAILS_VERSION: '~> 5.1.0' + - ruby: 2.2.10 + env: + RAILS_VERSION: '~> 5.1.0' + # Rails 5.0 Builds >= 2.2.2 + - ruby: 2.6.6 + env: + RAILS_VERSION: '~> 5.0.0' + - ruby: 2.5.8 + env: + RAILS_VERSION: '~> 5.0.0' + - ruby: 2.4.10 + env: + RAILS_VERSION: '~> 5.0.0' + - ruby: 2.3.8 + env: + RAILS_VERSION: '~> 5.0.0' + - ruby: 2.2.10 + env: + RAILS_VERSION: '~> 5.0.0' + env: ${{ matrix.env }} + steps: + - uses: actions/checkout@v2 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + - run: script/clone_all_rspec_repos + - run: bundle install --binstubs + - run: script/run_build + continue-on-error: ${{ matrix.allow_failure || false }} diff --git a/.travis.yml b/.travis.yml index 843352ae6e..4012daadfd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,66 +38,24 @@ script: "script/run_build 2>&1" matrix: include: - # Rails 6.0 builds >= 2.5.0 - rvm: jruby-head jdk: oraclejdk11 env: - RAILS_VERSION='~> 6.0.0' - JRUBY_OPT=--dev - JAVA_OPTS="--add-opens java.base/sun.nio.ch=org.jruby.dist --add-opens java.base/java.io=org.jruby.dist --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.security.cert=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/javax.crypto=ALL-UNNAMED --add-opens=java.management/sun.management=ALL-UNNAMED" - - rvm: ruby-3.0.0-preview1 - env: RAILS_VERSION='~> 6.0.0' - allow_failure: true - - rvm: 2.7.1 - env: RAILS_VERSION='~> 6.0.0' - - rvm: 2.6.6 - env: RAILS_VERSION='~> 6.0.0' - - rvm: 2.5.8 - env: RAILS_VERSION='~> 6.0.0' - # Rails 5.2 builds >= 2.2.2 - rvm: jruby-head jdk: oraclejdk11 env: - RAILS_VERSION='~> 5.2.0' - JRUBY_OPT=--dev - JAVA_OPTS="--add-opens java.base/sun.nio.ch=org.jruby.dist --add-opens java.base/java.io=org.jruby.dist --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.security.cert=ALL-UNNAMED --add-opens=java.base/java.util.zip=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/javax.crypto=ALL-UNNAMED --add-opens=java.management/sun.management=ALL-UNNAMED" - - rvm: 2.6.6 - env: RAILS_VERSION='~> 5.2.0' - - rvm: 2.5.8 - env: RAILS_VERSION='~> 5.2.0' - - rvm: 2.4.10 - env: RAILS_VERSION='~> 5.2.0' - - rvm: 2.3.8 - env: RAILS_VERSION='~> 5.2.0' - - rvm: 2.2.10 - env: RAILS_VERSION='~> 5.2.0' - allow_failure: true - - rvm: 2.2.10 - env: RAILS_VERSION='5-2-stable' - - # Rails 5.1 Builds >= 2.2.2 - - rvm: 2.6.6 - env: RAILS_VERSION='~> 5.1.0' - - rvm: 2.5.8 - env: RAILS_VERSION='~> 5.1.0' - - rvm: 2.4.10 - env: RAILS_VERSION='~> 5.1.0' - - rvm: 2.3.8 - env: RAILS_VERSION='~> 5.1.0' - - rvm: 2.2.10 - env: RAILS_VERSION='~> 5.1.0' - - # Rails 5.0 Builds >= 2.2.2 - - rvm: 2.6.6 - env: RAILS_VERSION='~> 5.0.0' - - rvm: 2.5.8 - env: RAILS_VERSION='~> 5.0.0' - - rvm: 2.4.10 - env: RAILS_VERSION='~> 5.0.0' - - rvm: 2.3.8 - env: RAILS_VERSION='~> 5.0.0' - - rvm: 2.2.10 - env: RAILS_VERSION='~> 5.0.0' fast_finish: true + +branches: + only: + - master + - /^\d+-\d+-maintenance$/ + - /^\d+-\d+-dev$/ diff --git a/features/matchers/have_broadcasted_matcher.feature b/features/matchers/have_broadcasted_matcher.feature index ecacadafe9..8b639326ac 100644 --- a/features/matchers/have_broadcasted_matcher.feature +++ b/features/matchers/have_broadcasted_matcher.feature @@ -16,7 +16,7 @@ Feature: have_broadcasted matcher it "matches with stream name" do expect { ActionCable.server.broadcast( - "notifications", text: 'Hello!' + "notifications", { text: "Hello!" } ) }.to have_broadcasted_to("notifications") end @@ -34,7 +34,7 @@ Feature: have_broadcasted matcher it "matches with message" do expect { ActionCable.server.broadcast( - "notifications", text: 'Hello!' + "notifications", { text: "Hello!" } ) }.to have_broadcasted_to("notifications").with(text: 'Hello!') end @@ -52,7 +52,7 @@ Feature: have_broadcasted matcher it "matches with message" do expect { ActionCable.server.broadcast( - "notifications", text: 'Hello!', user_id: 12 + "notifications", { text: 'Hello!', user_id: 12 } ) }.to have_broadcasted_to("notifications").with(a_hash_including(text: 'Hello!')) end @@ -70,7 +70,7 @@ Feature: have_broadcasted matcher it "matches with message" do expect { ActionCable.server.broadcast( - "notifications", text: 'Hello!', user_id: 12 + "notifications", { text: 'Hello!', user_id: 12 } ) }.to have_broadcasted_to("notifications").with { |data| expect(data['user_id']).to eq 12 @@ -90,7 +90,7 @@ Feature: have_broadcasted matcher it "matches with stream name" do expect { ActionCable.server.broadcast( - "notifications", text: 'Hello!' + "notifications", { text: 'Hello!' } ) }.to broadcast_to("notifications") end diff --git a/lib/rspec/rails/example/mailbox_example_group.rb b/lib/rspec/rails/example/mailbox_example_group.rb index 24cd125b60..de85acdf43 100644 --- a/lib/rspec/rails/example/mailbox_example_group.rb +++ b/lib/rspec/rails/example/mailbox_example_group.rb @@ -13,7 +13,7 @@ module MailboxExampleGroup def self.create_inbound_email(arg) case arg when Hash - create_inbound_email_from_mail(arg) + create_inbound_email_from_mail(**arg) else create_inbound_email_from_source(arg.to_s) end diff --git a/spec/generators/rspec/scaffold/scaffold_generator_spec.rb b/spec/generators/rspec/scaffold/scaffold_generator_spec.rb index a56b5858ea..d8417519f1 100644 --- a/spec/generators/rspec/scaffold/scaffold_generator_spec.rb +++ b/spec/generators/rspec/scaffold/scaffold_generator_spec.rb @@ -1,8 +1,10 @@ # Generators are not automatically loaded by Rails require 'generators/rspec/scaffold/scaffold_generator' require 'support/generators' +require 'rspec/support/spec/in_sub_process' RSpec.describe Rspec::Generators::ScaffoldGenerator, type: :generator do + include RSpec::Support::InSubProcess setup_default_destination describe 'standard request specs' do @@ -41,12 +43,13 @@ end describe 'in an engine' do - before do - allow_any_instance_of(::Rails::Generators::NamedBase).to receive(:mountable_engine?).and_return(true) - run_generator %w[posts --request_specs] + it 'generates files with Engine url_helpers' do + in_sub_process do + allow_any_instance_of(::Rails::Generators::NamedBase).to receive(:mountable_engine?).and_return(true) + run_generator %w[posts --request_specs] + is_expected.to contain('Engine.routes.url_helpers') + end end - - it { is_expected.to contain('Engine.routes.url_helpers') } end end