Using RSpec 3 in development
907th opened this issue · comments
While doing #254 review I was thinking about usage of different RSpec versions in guard-rspec
development process.
I found that guard-rspec
don't have development dependency on particular RSpec version and 2.14 is used by default.
I added
# guard-rspec.gemspec
s.add_development_dependency 'rspec', '= 3.0.0.beta2'
and found that our test collection is not ready for RSpec 3
Finished in 0.13378 seconds
106 examples, 6 failures
Failures:
1) Guard::RSpec::Formatter::TEMPORARY_FILE_PATH is absolute path
Failure/Error: expect(Pathname.new(temporary_file_path).absolute?).to be_true
NoMethodError:
undefined method `true?' for true:TrueClass
# ./spec/lib/guard/rspec/formatter_spec.rb:9:in `block (3 levels) in <top (required)>'
2) Guard::RSpec::Formatter#dump_summary with only success notifies success
Failure/Error: expect(result).to match /^3 examples, 0 failures in 123\.0 seconds\n$/
expected "" to match /^3 examples, 0 failures in 123\.0 seconds\n$/
Diff:
@@ -1,2 +1,2 @@
-/^3 examples, 0 failures in 123\.0 seconds\n$/
+""
# ./spec/lib/guard/rspec/formatter_spec.rb:111:in `block (4 levels) in <top (required)>'
3) Guard::RSpec::Formatter#dump_summary without stubbed IO creates temporary file and and writes to it
Failure/Error: expect(FileUtils).to receive(:mkdir_p).with(File.dirname(temporary_file_path)) {}
(FileUtils).mkdir_p("/home/laise/Work/Contrib/guard-rspec/tmp")
expected: 1 time with arguments: ("/home/laise/Work/Contrib/guard-rspec/tmp")
received: 0 times with arguments: ("/home/laise/Work/Contrib/guard-rspec/tmp")
# ./spec/lib/guard/rspec/formatter_spec.rb:36:in `block (4 levels) in <top (required)>'
4) Guard::RSpec::Formatter#dump_summary with failures writes summary line and failed location in tmp dir
Failure/Error: expect(result).to match /^3 examples, 1 failures in 123\.0 seconds\n#{spec_filename}\n$/
expected "" to match /^3 examples, 1 failures in 123\.0 seconds\nfailed_location_spec.rb\n$/
Diff:
@@ -1,2 +1,2 @@
-/^3 examples, 1 failures in 123\.0 seconds\nfailed_location_spec.rb\n$/
+""
# ./spec/lib/guard/rspec/formatter_spec.rb:54:in `block (4 levels) in <top (required)>'
5) Guard::RSpec::Formatter#dump_summary with failures writes only uniq filenames out
Failure/Error: expect(result).to match /^3 examples, 1 failures in 123\.0 seconds\n#{spec_filename}\n$/
expected "" to match /^3 examples, 1 failures in 123\.0 seconds\nfailed_location_spec.rb\n$/
Diff:
@@ -1,2 +1,2 @@
-/^3 examples, 1 failures in 123\.0 seconds\nfailed_location_spec.rb\n$/
+""
# ./spec/lib/guard/rspec/formatter_spec.rb:60:in `block (4 levels) in <top (required)>'
6) Guard::RSpec::Formatter#dump_summary with pending notifies pending too
Failure/Error: expect(result).to match /^3 examples, 0 failures \(1 pending\) in 123\.0 seconds\n$/
expected "" to match /^3 examples, 0 failures \(1 pending\) in 123\.0 seconds\n$/
Diff:
@@ -1,2 +1,2 @@
-/^3 examples, 0 failures \(1 pending\) in 123\.0 seconds\n$/
+""
# ./spec/lib/guard/rspec/formatter_spec.rb:118:in `block (4 levels) in <top (required)>'
Failed examples:
rspec ./spec/lib/guard/rspec/formatter_spec.rb:6 # Guard::RSpec::Formatter::TEMPORARY_FILE_PATH is absolute path
rspec ./spec/lib/guard/rspec/formatter_spec.rb:109 # Guard::RSpec::Formatter#dump_summary with only success notifies success
rspec ./spec/lib/guard/rspec/formatter_spec.rb:34 # Guard::RSpec::Formatter#dump_summary without stubbed IO creates temporary file and and writes to it
rspec ./spec/lib/guard/rspec/formatter_spec.rb:51 # Guard::RSpec::Formatter#dump_summary with failures writes summary line and failed location in tmp dir
rspec ./spec/lib/guard/rspec/formatter_spec.rb:57 # Guard::RSpec::Formatter#dump_summary with failures writes only uniq filenames out
rspec ./spec/lib/guard/rspec/formatter_spec.rb:116 # Guard::RSpec::Formatter#dump_summary with pending notifies pending too
If we want to support both RSpec 2.14 and RSpec 3, we should run tests on both versions I think. What is better way to achieve that?
CC @thibaudgg
I would use multiple Gemfile and add them to the travis build matrix. Something like:
language: ruby
bundler_args: --without tool
rvm:
- 1.9.3
- 2.0.0
- 2.1.0
- jruby
- rbx
gemfile:
- gemfiles/Gemfile.rspec2
- gemfiles/Gemfile.rspec3
matrix:
allow_failures:
- rvm: jruby
- rvm: rbx
notifications:
recipients:
- thibaud@thibaud.gg
- # add your email here?
Good idea btw! 👍
@thibaudgg I have fixed tests for RSpec 3.0 and added separate Gemfiles to Travis CI like you've suggested.
👌 perfect, thanks!