RSpec 2 just came out (as a bonus for 10/10/10 date?).
So before going to bed I decided to switch my small non rails project to new RSpec 2 mostly for the new [:focused] feature borrowed from Micronaut.
After bumping gem version in Gemfile
gem 'rspec', '~> 2.0.0'
and running bundle install
...
Installing rspec-core (2.0.0)
Installing rspec-expectations (2.0.0)
Installing rspec-mocks (2.0.0)
Installing rspec (2.0.0)
got it installed (wow, it’s modular now!)
So I fired autotest
to watch my specs passed. But instead I got it stuck doing nothing! WTF?!
Ok, lets try test spec:
$ echo "describe('rspec') { it }" > test_spec.rb
$ rspec test_spec.rb
passed with:
Pending:
rspec
# Not Yet Implemented
# ./test_spec.rb:1
Finished in 0.00024 seconds
1 example, 0 failures, 1 pending
Good. Problem must be somewhere in my code then.
So I tried to run single spec
$ rspec spec/source_spec.rb
and got error:
in require: no such file to load -- spec (MissingSourceFile)
well, turns out that
require 'spec'
is deprecated and now we have to
require 'rspec'
instead! But I can get rid of that require at all now, as
Bundle.require(:test)
takes care about all necessary requires.
Tried to run specs and got another error:
uninitialized constant RSpec::Runner (NameError)
with nice banner:
*****************************************************************
DEPRECATION WARNING: you are using a deprecated constant that will
be removed from a future version of RSpec.
* Spec is deprecated.
* RSpec is the new top-level module in RSpec-2
So I had to change
Spec::Runner.configure do |config|
to
RSpec.configure do |config|
in spec_helper.rb
And now I got my single spec running.
But autotest
still doing nothing!
Ok time to configure autotest for rspec
:
$ rspec --configure autotest
autotest/discover.rb has been added
But attept to run specs this time errored out with:
undefined method `context' for main:Object (NoMethodError)
That’s because i’m using context
along with describe
to define examples.
Adding quick workaround to spec_helper.rb
alias :context :describe
solves the issue for now(but i’ll refactor it out later, promise!)
and finally autotest
is back to work!
$ autotest
...
Finished in 2.43 seconds
69 examples, 1 failure, 4 pending
Cool!
Bonus
Few days ago I tried to colorize autotest
output with redgreen
gem, but it didn’t work out.
Now it’s easy to colorize autotest
output with rspec2
:
$ echo '--color' > .rspec # run in project or $HOME dir
Cool!!
References
- Docs - not very helpful at the moment