RSpec upgrade issue

26 views
Skip to first unread message

Surya

unread,
Aug 26, 2019, 8:36:58 AM8/26/19
to rs...@googlegroups.com
Hi,

I am trying to upgrade RSpec for one of my projects from 2.12 to 2.14(in order to move to the latest one eventually) and facing an issue with regards to RSpec command delegating command-line options to another loader process on 2.14.

Attaching Gemfile-2.12(before) and Gemfile-2.14(after), spec/stripe_spec_helper.rb and spec/spec_helper.rb.

This is the command that I run on the feature branch which has rspec-rails 2.14 and on master:

$ RAILS_ENV=test bundle exec rspec --format documentation --format RspecJunitFormatter --out rspec_results/rspec_result.xml --format html --out rspec_results/rspec_result.html


Here is the error message (Note that the command is working on master branch):


/Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/dante-0.2.0/lib/dante/runner.rb:212:in `parse_options': invalid option: -X (OptionParser::InvalidOption)
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/dante-0.2.0/lib/dante/runner.rb:50:in `execute'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/stripe-ruby-mock-2.5.0/lib/stripe_mock/api/server.rb:18:in `spawn_server'
from /Users/surya/projects/my_rails_application/spec/stripe_spec_helper.rb:2:in `<top (required)>'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:247:in `require'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:247:in `block in require'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:232:in `load_dependency'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:247:in `require'
from /Users/surya/projects/my_rails_application/spec/models/group_spec.rb:4:in `block in <top (required)>'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/rspec-core-2.14.8/lib/rspec/core/example_group.rb:246:in `module_eval'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/rspec-core-2.14.8/lib/rspec/core/example_group.rb:246:in `subclass'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/rspec-core-2.14.8/lib/rspec/core/example_group.rb:232:in `describe'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/rspec-core-2.14.8/lib/rspec/core/dsl.rb:18:in `describe'
from /Users/surya/projects/my_rails_application/spec/models/group_spec.rb:3:in `<top (required)>'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:241:in `load'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:241:in `block in load'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:232:in `load_dependency'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:241:in `load'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/rspec-core-2.14.8/lib/rspec/core/configuration.rb:896:in `block in load_spec_files'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/rspec-core-2.14.8/lib/rspec/core/configuration.rb:896:in `each'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/rspec-core-2.14.8/lib/rspec/core/configuration.rb:896:in `load_spec_files'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/rspec-core-2.14.8/lib/rspec/core/command_line.rb:22:in `run'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/rspec-core-2.14.8/lib/rspec/core/runner.rb:77:in `rescue in run'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/rspec-core-2.14.8/lib/rspec/core/runner.rb:73:in `run'
from /Users/surya/.rvm/gems/ruby-2.2.5@my-gemset/gems/rspec-core-2.14.8/lib/rspec/core/runner.rb:17:in `block in autorun'
Coverage report generated for RSpec to /Users/surya/projects/my_rails_application/coverage. 10134 / 57425 LOC (17.65%) covered.
Coverage report generated for RSpec to /Users/surya/projects/my_rails_application/coverage/coverage.json. 10134 / 57425 LOC (17.65%) covered.
Coverage report Rcov style generated for RSpec to /Users/surya/projects/my_rails_application/coverage/rcov



Any ideas as to why RSpec runner delegates the options to stripe mock server on rspec-rails 2.14 but not on 2.12?

--

 Please consider the environment before printing this email.

Regards,
Surya

Gemfile-2.12
Gemfile-2.14
spec_helper.rb
stripe_spec_helper.rb

Surya

unread,
Aug 26, 2019, 8:59:14 AM8/26/19
to rs...@googlegroups.com
Sorry, this is the exception:

/Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/dante-0.2.0/lib/dante/runner.rb:212:in `parse_options': invalid option: --format (OptionParser::InvalidOption)
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/dante-0.2.0/lib/dante/runner.rb:50:in `execute'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/stripe-ruby-mock-2.5.0/lib/stripe_mock/api/server.rb:18:in `spawn_server'
from /Users/surya/projects/railsApp/spec/stripe_spec_helper.rb:2:in `<top (required)>'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:247:in `require'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:247:in `block in require'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:232:in `load_dependency'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:247:in `require'
from /Users/surya/projects/railsApp/spec/models/group_spec.rb:2:in `<top (required)>'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:241:in `load'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:241:in `block in load'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:232:in `load_dependency'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/activesupport-4.1.15/lib/active_support/dependencies.rb:241:in `load'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/rspec-core-2.14.8/lib/rspec/core/configuration.rb:896:in `block in load_spec_files'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/rspec-core-2.14.8/lib/rspec/core/configuration.rb:896:in `each'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/rspec-core-2.14.8/lib/rspec/core/configuration.rb:896:in `load_spec_files'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/rspec-core-2.14.8/lib/rspec/core/command_line.rb:22:in `run'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/rspec-core-2.14.8/lib/rspec/core/runner.rb:77:in `rescue in run'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/rspec-core-2.14.8/lib/rspec/core/runner.rb:73:in `run'
from /Users/surya/.rvm/gems/ruby-2.2.5@rails4115/gems/rspec-core-2.14.8/lib/rspec/core/runner.rb:17:in `block in autorun'
Coverage report generated for RSpec to /Users/surya/projects/railsApp/coverage. 10134 / 57425 LOC (17.65%) covered.
Coverage report generated for RSpec to /Users/surya/projects/railsApp/coverage/coverage.json. 10134 / 57425 LOC (17.65%) covered.
Coverage report Rcov style generated for RSpec to /Users/surya/projects/railsApp/coverage/rcov
This is my Footrr

Jon Rowe

unread,
Aug 26, 2019, 10:12:16 AM8/26/19
to rs...@googlegroups.com
Hi

From that second exception it seems something else (dante?) is reading `ARGV`, RSpec cannot prevent other gems from reading its arguments. I would seek to remove the troublesome gems until RSpec runs. 

Note whilst you’re upgrading I would heavily consider removing spring. It will cause trouble with this sort of upgrade, make sure its not running inbetween changing gems.

Cheers
Jon Rowe
---------------------------
--
You received this message because you are subscribed to the Google Groups "rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rspec+un...@googlegroups.com.

Surya

unread,
Aug 26, 2019, 2:00:13 PM8/26/19
to rs...@googlegroups.com
Thanks, Jon for the heads-up on spring.

Dante is used in stripe mock server gem. I have specs which uses it to test payments related code. The command works if I comment out those specs but that isn't the solution.

The problem is that I don't see this exception on 2.12, it only occurs on 2.14/2.99.

I'm unsure why the rspec runner doesn't pass those arguments in 2.12 but on later versions (2.14/ 2.99).

Sent from phone, please ignore brevity.

Jon Rowe

unread,
Aug 26, 2019, 2:15:07 PM8/26/19
to rs...@googlegroups.com
Hi Surya

RSpec is not passing arguments anywhere, we take our arguments from ARGV and then parse them internally.

I’ve looked into this for you, and what has changed in the versions you describe is that rspec switched from mutating ARGV directly to duplicating it first thus meaning it remains readable for other gems.

We don’t support older versions of RSpec (in any case we don’t consider this a bug (in fact its the correct behaviour to not modify ARGV)) so I suggest you either upgrade dante to a version thats compatible with this behaviour, or don’t use arguments. 

Cheers
Jon Rowe
---------------------------

Surya

unread,
Aug 26, 2019, 2:34:40 PM8/26/19
to rs...@googlegroups.com
Got it. Thank you.


Sent from phone, please ignore brevity.
--
You received this message because you are subscribed to the Google Groups "rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rspec+un...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages