diff --git a/Gemfile b/Gemfile index 14f39bb..44c1d3c 100644 --- a/Gemfile +++ b/Gemfile @@ -1,4 +1,17 @@ source "https://rubygems.org" +gem "rails", ENV["RAILS_VERSION"] || raise(<<~ERR) + +>>>>> ATTENTION <<<<< + +You are attempting something outside of 'bin/test'. If you are wanting to +run tests, utilize 'bin/test'. Otherwise, set the RAILS_VERSION variable prior to +your current action. + +ERR + +gem "sqlite3" +gem "test-unit" + # Specify your gem's dependencies in pry-rails.gemspec gemspec diff --git a/Rakefile b/Rakefile index 95bb10c..e053a59 100644 --- a/Rakefile +++ b/Rakefile @@ -2,7 +2,6 @@ require "rubygems" require "bundler/setup" require "bundler/gem_tasks" require "rake/testtask" -require "appraisal" Rake::TestTask.new do |t| t.libs.concat %w(pry-rails spec) diff --git a/Readme.md b/Readme.md index ce1b609..a4a58e6 100644 --- a/Readme.md +++ b/Readme.md @@ -108,27 +108,9 @@ Note that you may need to run `spring stop` first. # Developing and Testing -This repo uses [Roadshow] to generate a [Docker Compose] file for each -supported version of Rails (with a compatible version of Ruby for each one). +Requirements: docker or podman with docker compatibility layer. -To run specs across all versions, you can either [get the Roadshow tool] and -run `roadshow run`, or use Docker Compose directly: - -``` -$ for fn in scenarios/*.docker-compose.yml; do docker-compose -f $fn run --rm scenario; done -``` - -You can also manually run the Rails console and server on each version with -`roadshow run rake console` and `roadshow run rake server`, or run them on a -specific version with, e.g., `roadshow run -s rails40 rake console`. - -To update the set of scenarios, edit `scenarios.yml` and run `roadshow -generate`, although the Gemfiles in the `scenarios` directory need to be -maintained manually. - -[Roadshow]: https://github.com/rf-/roadshow -[Docker Compose]: https://docs.docker.com/compose/ -[get the Roadshow tool]: https://github.com/rf-/roadshow/releases +To run the test suite against supported Ruby and Rails versions, run `bin/test`. # Alternative diff --git a/bin/test b/bin/test new file mode 100755 index 0000000..18c6b95 --- /dev/null +++ b/bin/test @@ -0,0 +1,48 @@ +#! /usr/bin/env ruby +# frozen_string_literals: true + +require 'optparse' +require 'open3' + +skip_build = false + +OptionParser.new {|opt| + opt.banner = "Usage: bin/test [options]" + opt.on("-B", "--skip-build") { skip_build = true } +}.parse! + +ruby_versions = ['3.2', '3.3', '3.4'] +rails_versions = ['~>7', '~>8'] + +ruby_versions.product(rails_versions).reject { |ruby_v, rails_v| + container_file = <<~CF + FROM docker.io/ruby:#{ruby_v}-slim + RUN apt-get update \ + && apt-get install -y build-essential git pkg-config libyaml-dev \ + && mkdir -p /pry-rails + WORKDIR /pry-rails + ENV RAILS_VERSION="#{rails_v}" LANG=C.UTF-8 + COPY Gemfile *.gemspec . + COPY lib/pry-rails/version.rb lib/pry-rails/version.rb + RUN bundle install + CMD bundle exec rake + CF + + puts "# ruby:#{ruby_v} rails:#{rails_v}\n" + + Open3.popen3("/usr/bin/env docker build -qf - -t pry-rails-#{ruby_v}-#{rails_v[-1]} .") { |i,o,e,wt| + i.puts container_file + i.close + o.each { STDOUT.puts _1 } + e.each { STDERR.puts _1 } + exitstatus = wt.value.exitstatus + exit exitstatus unless exitstatus == 0 + } unless skip_build + + system("/usr/bin/env docker run -v .:/pry-rails pry-rails-#{ruby_v}-#{rails_v[-1]}") +} + .tap {|failures| puts (failures.any? ? "FAILURES:" : "ALL CLEAR!") } + .each {|ruby_v, rails_v| + puts "# ruby:#{ruby_v} rails:#{rails_v}" + } + .then {|failures| exit(failures.any? ? 1 : 0 ) } diff --git a/lib/pry-rails/commands/find_route.rb b/lib/pry-rails/commands/find_route.rb index 8dbfacf..896d81a 100644 --- a/lib/pry-rails/commands/find_route.rb +++ b/lib/pry-rails/commands/find_route.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: true class PryRails::FindRoute < Pry::ClassCommand match 'find-route' group 'Rails' @@ -51,7 +52,7 @@ def show_routes(&block) all_routes = routes.select(&block) if all_routes.any? grouped_routes = all_routes.group_by { |route| route.defaults[:controller] } - result = grouped_routes.each_with_object("") do |(controller, routes), res| + result = grouped_routes.each_with_object(String.new) do |(controller, routes), res| res << "Routes for " + bold(controller.to_s.camelize + "Controller") + "\n" res << "--\n" routes.each do |route| diff --git a/lib/pry-rails/commands/show_routes.rb b/lib/pry-rails/commands/show_routes.rb index 52f88b9..d4c4f74 100644 --- a/lib/pry-rails/commands/show_routes.rb +++ b/lib/pry-rails/commands/show_routes.rb @@ -14,7 +14,6 @@ def options(opt) end def process - Rails.application.reload_routes! all_routes = Rails.application.routes.routes formatted = diff --git a/lib/pry-rails/railtie.rb b/lib/pry-rails/railtie.rb index 0d8e72a..579deb0 100644 --- a/lib/pry-rails/railtie.rb +++ b/lib/pry-rails/railtie.rb @@ -31,11 +31,6 @@ class Railtie < Rails::Railtie require "rails/commands/console/irb_console" Module.new do - def reload! - puts "Reloading..." - Rails.application.reloader.reload! - end - ::IRB::HelperMethod.helper_methods.each do |name, helper_method_class| define_method name do |*args, **opts, &block| helper_method_class.instance.execute(*args, **opts, &block) diff --git a/lib/pry-rails/version.rb b/lib/pry-rails/version.rb index dc61c0e..94e5036 100644 --- a/lib/pry-rails/version.rb +++ b/lib/pry-rails/version.rb @@ -1,5 +1,5 @@ # encoding: UTF-8 module PryRails - VERSION = "0.3.11" + VERSION = '0.3.11' end diff --git a/pry-rails.gemspec b/pry-rails.gemspec index 06a0ce7..00470e4 100644 --- a/pry-rails.gemspec +++ b/pry-rails.gemspec @@ -15,12 +15,9 @@ Gem::Specification.new do |s| # s.rubyforge_project = "pry-rails" - s.files = `git ls-files`.split("\n") - s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") - s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } - s.require_paths = ["lib"] + s.files = Dir['lib/**/*'] + s.test_files = Dir['spec/**/*'] s.add_dependency "pry", ">= 0.13.0" - s.add_development_dependency "appraisal" s.add_development_dependency "minitest" end diff --git a/scenarios.yml b/scenarios.yml deleted file mode 100644 index cf02525..0000000 --- a/scenarios.yml +++ /dev/null @@ -1,30 +0,0 @@ -project: pryrails - -shared: - from: ruby:2.4 - cmd: "(bundle check || (gem install bundler && bundle install)) && bundle exec rake" - service: - volumes: - - bundle_{{scenario_name}}:/usr/local/bundle - environment: - BUNDLE_GEMFILE: scenarios/{{scenario_name}}.gemfile - volumes: - bundle_{{scenario_name}}: - -scenarios: - rails30: - from: ruby:2.0 - rails31: - from: ruby:2.0 - rails32: - from: ruby:2.0 - rails40: - from: ruby:2.3 - rails41: - from: ruby:2.3 - rails42: {} - rails50: {} - rails51: {} - rails52: {} - rails60: - from: ruby:2.5 diff --git a/scenarios/rails30.docker-compose.yml b/scenarios/rails30.docker-compose.yml deleted file mode 100644 index 78d8fef..0000000 --- a/scenarios/rails30.docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -version: "2" -services: - scenario: - build: - context: .. - dockerfile: scenarios/rails30.dockerfile - image: pryrails_scenario_rails30 - volumes: - - "..:/scenario" - - "bundle_rails30:/usr/local/bundle" - environment: - BUNDLE_GEMFILE: scenarios/rails30.gemfile -volumes: - bundle_rails30: {} diff --git a/scenarios/rails30.dockerfile b/scenarios/rails30.dockerfile deleted file mode 100644 index 6ef8ab4..0000000 --- a/scenarios/rails30.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM ruby:2.0 -RUN mkdir -p /scenario -WORKDIR /scenario -ENV LANG=C.UTF-8 -CMD (bundle check || (gem install bundler && bundle install)) && bundle exec rake diff --git a/scenarios/rails30.gemfile b/scenarios/rails30.gemfile deleted file mode 100644 index 6aa3ec6..0000000 --- a/scenarios/rails30.gemfile +++ /dev/null @@ -1,7 +0,0 @@ -source "https://rubygems.org" - -gem "rails", "~> 3.0.0" -gem "sqlite3" -gem "test-unit" - -gemspec :path => "../" diff --git a/scenarios/rails31.docker-compose.yml b/scenarios/rails31.docker-compose.yml deleted file mode 100644 index 8382cab..0000000 --- a/scenarios/rails31.docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -version: "2" -services: - scenario: - build: - context: .. - dockerfile: scenarios/rails31.dockerfile - image: pryrails_scenario_rails31 - volumes: - - "..:/scenario" - - "bundle_rails31:/usr/local/bundle" - environment: - BUNDLE_GEMFILE: scenarios/rails31.gemfile -volumes: - bundle_rails31: {} diff --git a/scenarios/rails31.dockerfile b/scenarios/rails31.dockerfile deleted file mode 100644 index 6ef8ab4..0000000 --- a/scenarios/rails31.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM ruby:2.0 -RUN mkdir -p /scenario -WORKDIR /scenario -ENV LANG=C.UTF-8 -CMD (bundle check || (gem install bundler && bundle install)) && bundle exec rake diff --git a/scenarios/rails31.gemfile b/scenarios/rails31.gemfile deleted file mode 100644 index 30f698e..0000000 --- a/scenarios/rails31.gemfile +++ /dev/null @@ -1,8 +0,0 @@ -source "https://rubygems.org" - -gem "rails", "~> 3.1.0" -gem "mongoid" -gem "sqlite3" -gem "test-unit" - -gemspec :path => "../" diff --git a/scenarios/rails32.docker-compose.yml b/scenarios/rails32.docker-compose.yml deleted file mode 100644 index 2fc141b..0000000 --- a/scenarios/rails32.docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -version: "2" -services: - scenario: - build: - context: .. - dockerfile: scenarios/rails32.dockerfile - image: pryrails_scenario_rails32 - volumes: - - "..:/scenario" - - "bundle_rails32:/usr/local/bundle" - environment: - BUNDLE_GEMFILE: scenarios/rails32.gemfile -volumes: - bundle_rails32: {} diff --git a/scenarios/rails32.dockerfile b/scenarios/rails32.dockerfile deleted file mode 100644 index 6ef8ab4..0000000 --- a/scenarios/rails32.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM ruby:2.0 -RUN mkdir -p /scenario -WORKDIR /scenario -ENV LANG=C.UTF-8 -CMD (bundle check || (gem install bundler && bundle install)) && bundle exec rake diff --git a/scenarios/rails32.gemfile b/scenarios/rails32.gemfile deleted file mode 100644 index d76cc00..0000000 --- a/scenarios/rails32.gemfile +++ /dev/null @@ -1,8 +0,0 @@ -source "https://rubygems.org" - -gem "rails", "~> 3.2.0" -gem "mongoid" -gem "sqlite3" -gem "test-unit" - -gemspec :path => "../" diff --git a/scenarios/rails40.docker-compose.yml b/scenarios/rails40.docker-compose.yml deleted file mode 100644 index 9ffd3e3..0000000 --- a/scenarios/rails40.docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -version: "2" -services: - scenario: - build: - context: .. - dockerfile: scenarios/rails40.dockerfile - image: pryrails_scenario_rails40 - volumes: - - "..:/scenario" - - "bundle_rails40:/usr/local/bundle" - environment: - BUNDLE_GEMFILE: scenarios/rails40.gemfile -volumes: - bundle_rails40: {} diff --git a/scenarios/rails40.dockerfile b/scenarios/rails40.dockerfile deleted file mode 100644 index 0a27afa..0000000 --- a/scenarios/rails40.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM ruby:2.3 -RUN mkdir -p /scenario -WORKDIR /scenario -ENV LANG=C.UTF-8 -CMD (bundle check || (gem install bundler && bundle install)) && bundle exec rake diff --git a/scenarios/rails40.gemfile b/scenarios/rails40.gemfile deleted file mode 100644 index 076600b..0000000 --- a/scenarios/rails40.gemfile +++ /dev/null @@ -1,6 +0,0 @@ -source "https://rubygems.org" - -gem "rails", "~> 4.0.0" -gem "sqlite3" - -gemspec :path => "../" diff --git a/scenarios/rails41.docker-compose.yml b/scenarios/rails41.docker-compose.yml deleted file mode 100644 index a7d3232..0000000 --- a/scenarios/rails41.docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -version: "2" -services: - scenario: - build: - context: .. - dockerfile: scenarios/rails41.dockerfile - image: pryrails_scenario_rails41 - volumes: - - "..:/scenario" - - "bundle_rails41:/usr/local/bundle" - environment: - BUNDLE_GEMFILE: scenarios/rails41.gemfile -volumes: - bundle_rails41: {} diff --git a/scenarios/rails41.dockerfile b/scenarios/rails41.dockerfile deleted file mode 100644 index 0a27afa..0000000 --- a/scenarios/rails41.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM ruby:2.3 -RUN mkdir -p /scenario -WORKDIR /scenario -ENV LANG=C.UTF-8 -CMD (bundle check || (gem install bundler && bundle install)) && bundle exec rake diff --git a/scenarios/rails41.gemfile b/scenarios/rails41.gemfile deleted file mode 100644 index 3d146f9..0000000 --- a/scenarios/rails41.gemfile +++ /dev/null @@ -1,7 +0,0 @@ -source "https://rubygems.org" - -gem "rails", "~> 4.1.0" -gem "mongoid" -gem "sqlite3" - -gemspec :path => "../" diff --git a/scenarios/rails42.docker-compose.yml b/scenarios/rails42.docker-compose.yml deleted file mode 100644 index e7bb7ba..0000000 --- a/scenarios/rails42.docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -version: "2" -services: - scenario: - build: - context: .. - dockerfile: scenarios/rails42.dockerfile - image: pryrails_scenario_rails42 - volumes: - - "..:/scenario" - - "bundle_rails42:/usr/local/bundle" - environment: - BUNDLE_GEMFILE: scenarios/rails42.gemfile -volumes: - bundle_rails42: {} diff --git a/scenarios/rails42.dockerfile b/scenarios/rails42.dockerfile deleted file mode 100644 index 6175f6f..0000000 --- a/scenarios/rails42.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM ruby:2.4 -RUN mkdir -p /scenario -WORKDIR /scenario -ENV LANG=C.UTF-8 -CMD (bundle check || (gem install bundler && bundle install)) && bundle exec rake diff --git a/scenarios/rails42.gemfile b/scenarios/rails42.gemfile deleted file mode 100644 index dc4d5d2..0000000 --- a/scenarios/rails42.gemfile +++ /dev/null @@ -1,7 +0,0 @@ -source "https://rubygems.org" - -gem "rails", "~> 4.2.0" -gem "mongoid" -gem "sqlite3" - -gemspec :path => "../" diff --git a/scenarios/rails50.docker-compose.yml b/scenarios/rails50.docker-compose.yml deleted file mode 100644 index b9d3609..0000000 --- a/scenarios/rails50.docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -version: "2" -services: - scenario: - build: - context: .. - dockerfile: scenarios/rails50.dockerfile - image: pryrails_scenario_rails50 - volumes: - - "..:/scenario" - - "bundle_rails50:/usr/local/bundle" - environment: - BUNDLE_GEMFILE: scenarios/rails50.gemfile -volumes: - bundle_rails50: {} diff --git a/scenarios/rails50.dockerfile b/scenarios/rails50.dockerfile deleted file mode 100644 index 6175f6f..0000000 --- a/scenarios/rails50.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM ruby:2.4 -RUN mkdir -p /scenario -WORKDIR /scenario -ENV LANG=C.UTF-8 -CMD (bundle check || (gem install bundler && bundle install)) && bundle exec rake diff --git a/scenarios/rails50.gemfile b/scenarios/rails50.gemfile deleted file mode 100644 index 7ba9409..0000000 --- a/scenarios/rails50.gemfile +++ /dev/null @@ -1,7 +0,0 @@ -source "https://rubygems.org" - -gem "rails", "~> 5.0.0" -gem "mongoid" -gem "sqlite3" - -gemspec :path => "../" diff --git a/scenarios/rails51.docker-compose.yml b/scenarios/rails51.docker-compose.yml deleted file mode 100644 index 73e2e43..0000000 --- a/scenarios/rails51.docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -version: "2" -services: - scenario: - build: - context: .. - dockerfile: scenarios/rails51.dockerfile - image: pryrails_scenario_rails51 - volumes: - - "..:/scenario" - - "bundle_rails51:/usr/local/bundle" - environment: - BUNDLE_GEMFILE: scenarios/rails51.gemfile -volumes: - bundle_rails51: {} diff --git a/scenarios/rails51.dockerfile b/scenarios/rails51.dockerfile deleted file mode 100644 index 6175f6f..0000000 --- a/scenarios/rails51.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM ruby:2.4 -RUN mkdir -p /scenario -WORKDIR /scenario -ENV LANG=C.UTF-8 -CMD (bundle check || (gem install bundler && bundle install)) && bundle exec rake diff --git a/scenarios/rails51.gemfile b/scenarios/rails51.gemfile deleted file mode 100644 index 139cbca..0000000 --- a/scenarios/rails51.gemfile +++ /dev/null @@ -1,7 +0,0 @@ -source "https://rubygems.org" - -gem "rails", "~> 5.1.0" -gem "mongoid" -gem "sqlite3" - -gemspec :path => "../" diff --git a/scenarios/rails52.docker-compose.yml b/scenarios/rails52.docker-compose.yml deleted file mode 100644 index 80379d0..0000000 --- a/scenarios/rails52.docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -version: "2" -services: - scenario: - build: - context: .. - dockerfile: scenarios/rails52.dockerfile - image: pryrails_scenario_rails52 - volumes: - - "..:/scenario" - - "bundle_rails52:/usr/local/bundle" - environment: - BUNDLE_GEMFILE: scenarios/rails52.gemfile -volumes: - bundle_rails52: {} diff --git a/scenarios/rails52.dockerfile b/scenarios/rails52.dockerfile deleted file mode 100644 index 6175f6f..0000000 --- a/scenarios/rails52.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM ruby:2.4 -RUN mkdir -p /scenario -WORKDIR /scenario -ENV LANG=C.UTF-8 -CMD (bundle check || (gem install bundler && bundle install)) && bundle exec rake diff --git a/scenarios/rails52.gemfile b/scenarios/rails52.gemfile deleted file mode 100644 index 0cb263b..0000000 --- a/scenarios/rails52.gemfile +++ /dev/null @@ -1,7 +0,0 @@ -source "https://rubygems.org" - -gem "rails", "~> 5.2.0" -gem "mongoid" -gem "sqlite3" - -gemspec :path => "../" diff --git a/scenarios/rails60.docker-compose.yml b/scenarios/rails60.docker-compose.yml deleted file mode 100644 index 1de7dd4..0000000 --- a/scenarios/rails60.docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -version: "2" -services: - scenario: - build: - context: .. - dockerfile: scenarios/rails60.dockerfile - image: pryrails_scenario_rails60 - volumes: - - "..:/scenario" - - "bundle_rails60:/usr/local/bundle" - environment: - BUNDLE_GEMFILE: scenarios/rails60.gemfile -volumes: - bundle_rails60: {} diff --git a/scenarios/rails60.dockerfile b/scenarios/rails60.dockerfile deleted file mode 100644 index e47cf03..0000000 --- a/scenarios/rails60.dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM ruby:2.5 -RUN mkdir -p /scenario -WORKDIR /scenario -ENV LANG=C.UTF-8 -CMD (bundle check || (gem install bundler && bundle install)) && bundle exec rake diff --git a/scenarios/rails60.gemfile b/scenarios/rails60.gemfile deleted file mode 100644 index 7278a4c..0000000 --- a/scenarios/rails60.gemfile +++ /dev/null @@ -1,7 +0,0 @@ -source "https://rubygems.org" - -gem "rails", github: "rails/rails" -gem "mongoid" -gem "sqlite3" - -gemspec :path => "../" diff --git a/spec/config/environment.rb b/spec/config/environment.rb index b6ba7f1..a56c86e 100644 --- a/spec/config/environment.rb +++ b/spec/config/environment.rb @@ -14,12 +14,14 @@ class TestApp < Rails::Application config.active_support.deprecation = :log config.eager_load = false + config.active_storage.service = :local config.secret_token = 'a' * 100 config.root = File.expand_path('../..', __FILE__) end +ENV['SECRET_KEY_BASE_DUMMY'] = '1' TestApp.initialize! # Create in-memory database @@ -63,6 +65,12 @@ class Pokemon < ActiveRecord::Base has_many :beers, :through => :hacker end +CarsController = Class.new(ActionController::Base) +module Admin + CarsController = Class.new(ActionController::Base) + TrucksController = Class.new(ActionController::Base) +end + if defined?(Mongoid) class Artist include Mongoid::Document diff --git a/spec/config/routes.rb b/spec/config/routes.rb index 4f22059..450b7c9 100644 --- a/spec/config/routes.rb +++ b/spec/config/routes.rb @@ -1,5 +1,12 @@ TestApp.routes.draw do resource :pokemon, :beer + resources :cars + namespace :admin do + resources :cars + resources :trucks + end + get 'exit' => proc { exit! } get 'pry' => proc { binding.pry; [200, {}, ['']] } + root to: 'cars#index' end diff --git a/spec/config/storage.yml b/spec/config/storage.yml new file mode 100644 index 0000000..5b7ae84 --- /dev/null +++ b/spec/config/storage.yml @@ -0,0 +1,3 @@ +local: + service: Disk + root: /dev/null diff --git a/spec/find_route_spec.rb b/spec/find_route_spec.rb index 3de40d5..dc20480 100644 --- a/spec/find_route_spec.rb +++ b/spec/find_route_spec.rb @@ -3,42 +3,31 @@ require 'spec_helper' describe "find-route" do - before do - routes = Rails.application.routes - routes.draw { - namespace :admin do - resources :users - resources :images - end - } - routes.finalize! - end - it 'returns the route for a single action' do - output = mock_pry('find-route Admin::UsersController#show', 'exit-all') - output.must_match(/show GET/) - output.wont_match(/index GET/) + output = mock_pry('find-route Admin::CarsController#show', 'exit-all') + _(output).must_match(/show GET/) + _(output).wont_match(/index GET/) end it 'returns all the routes for a controller' do - output = mock_pry('find-route Admin::UsersController', 'exit-all') - output.must_match(/index GET/) - output.must_match(/show GET/) - output.must_match(/new GET/) - output.must_match(/edit GET/) - output.must_match(/update (PATCH|PUT)/) - output.must_match(/update PUT/) - output.must_match(/destroy DELETE/) + output = mock_pry('find-route Admin::CarsController', 'exit-all') + _(output).must_match(/index GET/) + _(output).must_match(/show GET/) + _(output).must_match(/new GET/) + _(output).must_match(/edit GET/) + _(output).must_match(/update (PATCH|PUT)/) + _(output).must_match(/update PUT/) + _(output).must_match(/destroy DELETE/) end it 'returns all routes for controllers under a namespace' do output = mock_pry('find-route Admin', 'exit-all') - output.must_match(/Routes for Admin::UsersController/) - output.must_match(/Routes for Admin::ImagesController/) + _(output).must_match(/Routes for Admin::CarsController/) + _(output).must_match(/Routes for Admin::TrucksController/) end it 'returns no routes found when controller is not recognized' do output = mock_pry('find-route Foo', 'exit-all') - output.must_match(/No routes found/) + _(output).must_match(/No routes found/) end end diff --git a/spec/railtie_spec.rb b/spec/railtie_spec.rb index f456a5f..3cda57c 100644 --- a/spec/railtie_spec.rb +++ b/spec/railtie_spec.rb @@ -1,6 +1,7 @@ # encoding: UTF-8 require 'spec_helper' +require 'logger' if (Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR >= 1) || Rails::VERSION::MAJOR >= 6 @@ -35,7 +36,7 @@ def self.start(*) end %w(app helper reload!).each do |helper| - TOPLEVEL_BINDING.eval("respond_to?(:#{helper}, true)").must_equal true + _(TOPLEVEL_BINDING.eval("respond_to?(:#{helper}, true)")).must_equal true end end end diff --git a/spec/recognize_path_spec.rb b/spec/recognize_path_spec.rb index 17a7ed7..c488f00 100644 --- a/spec/recognize_path_spec.rb +++ b/spec/recognize_path_spec.rb @@ -3,55 +3,38 @@ require 'spec_helper' describe "recognize-path" do - before do - FooController = Class.new(ActionController::Base) - BoomsController = Class.new(ActionController::Base) - routes = Rails.application.routes - routes.draw { - root(:to => 'foo#index', :constraints => {:host => 'example.com'}) - resources :booms - } - routes.finalize! - end - - after do - [:FooController, :BoomsController].each { |const| - Object.__send__(:remove_const, const) - } - end - it 'fails gracefully if no path is given' do output = mock_pry('recognize-path', 'exit-all') - output.must_equal \ + _(output).must_match \ "Error: The command 'recognize-path' requires an argument.\n" end it "prints info about controller/action that is bound to the given path" do output = mock_pry('recognize-path example.com', 'exit-all') - output.must_match(/controller.+foo/) - output.must_match(/action.+index/) + _(output).must_match(/controller.+cars/) + _(output).must_match(/action.+index/) end it "accepts short path" do - output = mock_pry('recognize-path /booms/1/edit', 'exit-all') - output.must_match(/action.+edit/) - output.must_match(/controller.+booms/) - output.must_match(/id.+1/) + output = mock_pry('recognize-path /cars/1/edit', 'exit-all') + _(output).must_match(/action.+edit/) + _(output).must_match(/controller.+cars/) + _(output).must_match(/id.+1/) end it "accepts -m switch" do - output = mock_pry('recognize-path example.com/booms -m post', 'exit-all') - output.must_match(/controller.+booms/) - output.must_match(/action.+create/) + output = mock_pry('recognize-path example.com/cars -m post', 'exit-all') + _(output).must_match(/controller.+cars/) + _(output).must_match(/action.+create/) end it "doesn't accept unknown methods" do - output = mock_pry('recognize-path example.com/booms -m posty', 'exit-all') - output.must_match 'Unknown HTTP method: posty' + output = mock_pry('recognize-path example.com/cars -m posty', 'exit-all') + _(output).must_match 'Unknown HTTP method: posty' end it "doesn't accept unknown routes" do output = mock_pry('recognize-path bing/bang/bong', 'exit-all') - output.must_match 'No route matches "http://bing/bang/bong"' + _(output).must_match 'No route matches "http://bing/bang/bong"' end end diff --git a/spec/show_middleware_spec.rb b/spec/show_middleware_spec.rb index d9206ea..242bb13 100644 --- a/spec/show_middleware_spec.rb +++ b/spec/show_middleware_spec.rb @@ -6,9 +6,9 @@ it "should print a list of middleware" do output = mock_pry('show-middleware', 'exit-all') - output.must_match %r{^use ActionDispatch::Static$} - output.must_match %r{^use ActionDispatch::ShowExceptions$} - output.must_match %r{^run TestApp.routes\Z} + _(output).must_match %r{^use ActionDispatch::Static$} + _(output).must_match %r{^use ActionDispatch::ShowExceptions$} + _(output).must_match %r{^run TestApp.routes\Z} end end diff --git a/spec/show_model_spec.rb b/spec/show_model_spec.rb index abf51c4..a31cf1d 100644 --- a/spec/show_model_spec.rb +++ b/spec/show_model_spec.rb @@ -17,7 +17,7 @@ belongs_to :hacker MODEL - output.must_equal expected + _(output).must_match expected end if defined? Mongoid @@ -34,22 +34,22 @@ output.gsub!(/^ *_type: String\n/, '') # mongoid 3.0 and 3.1 differ on this output.gsub!(/Moped::BSON/, 'BSON') # mongoid 3 and 4 differ on this - output.must_equal expected + _(output).must_match expected end end it "should print an error if the model doesn't exist" do output = mock_pry('show-model FloojBulb', 'exit-all') - output.must_equal "Couldn't find model FloojBulb!\n" + _(output).must_match "Couldn't find model FloojBulb!\n" end it "should print an error if it doesn't know what to do with the model" do output = mock_pry('show-model PryRails', 'exit-all') - output.must_equal "Don't know how to show PryRails!\n" + _(output).must_match "Don't know how to show PryRails!\n" end it "should print help if no model name is given" do output = mock_pry('show-model', 'exit-all') - output.must_match(/Usage: show-model/) + _(output).must_match(/Usage: show-model/) end end diff --git a/spec/show_models_spec.rb b/spec/show_models_spec.rb index ba33a28..9d8f38b 100644 --- a/spec/show_models_spec.rb +++ b/spec/show_models_spec.rb @@ -43,11 +43,41 @@ MODELS internal_models = <