rspec-core 2.8.0.rc1 → 2.8.0.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. data/License.txt +24 -0
  2. data/README.md +197 -37
  3. data/features/command_line/format_option.feature +3 -3
  4. data/features/command_line/init.feature +18 -0
  5. data/features/example_groups/shared_examples.feature +1 -1
  6. data/features/hooks/around_hooks.feature +4 -4
  7. data/features/pending/pending_examples.feature +5 -5
  8. data/features/support/env.rb +8 -1
  9. data/lib/autotest/rspec2.rb +2 -6
  10. data/lib/rspec/core.rb +48 -158
  11. data/lib/rspec/core/backward_compatibility.rb +2 -0
  12. data/lib/rspec/core/command_line.rb +4 -0
  13. data/lib/rspec/core/configuration.rb +201 -106
  14. data/lib/rspec/core/configuration_options.rb +2 -1
  15. data/lib/rspec/core/deprecation.rb +2 -3
  16. data/lib/rspec/core/drb_options.rb +69 -58
  17. data/lib/rspec/core/dsl.rb +12 -0
  18. data/lib/rspec/core/example.rb +53 -18
  19. data/lib/rspec/core/example_group.rb +144 -54
  20. data/lib/rspec/core/extensions.rb +4 -4
  21. data/lib/rspec/core/extensions/instance_eval_with_args.rb +5 -0
  22. data/lib/rspec/core/extensions/kernel.rb +1 -1
  23. data/lib/rspec/core/extensions/module_eval_with_args.rb +4 -0
  24. data/lib/rspec/core/extensions/ordered.rb +7 -2
  25. data/lib/rspec/core/filter_manager.rb +69 -36
  26. data/lib/rspec/core/formatters/base_text_formatter.rb +1 -1
  27. data/lib/rspec/core/formatters/html_formatter.rb +10 -4
  28. data/lib/rspec/core/hooks.rb +93 -34
  29. data/lib/rspec/core/let.rb +62 -61
  30. data/lib/rspec/core/metadata.rb +103 -80
  31. data/lib/rspec/core/metadata_hash_builder.rb +4 -0
  32. data/lib/rspec/core/option_parser.rb +42 -44
  33. data/lib/rspec/core/pending.rb +25 -3
  34. data/lib/rspec/core/project_initializer.rb +62 -0
  35. data/lib/rspec/core/rake_task.rb +7 -13
  36. data/lib/rspec/core/runner.rb +2 -2
  37. data/lib/rspec/core/shared_context.rb +1 -1
  38. data/lib/rspec/core/shared_example_group.rb +11 -5
  39. data/lib/rspec/core/subject.rb +3 -3
  40. data/lib/rspec/core/version.rb +1 -1
  41. data/lib/rspec/monkey.rb +1 -1
  42. data/lib/rspec/monkey/spork/test_framework/rspec.rb +2 -0
  43. data/spec/command_line/order_spec.rb +19 -13
  44. data/spec/rspec/core/command_line_spec.rb +1 -5
  45. data/spec/rspec/core/configuration_options_spec.rb +22 -27
  46. data/spec/rspec/core/configuration_spec.rb +32 -14
  47. data/spec/rspec/core/drb_command_line_spec.rb +20 -37
  48. data/spec/rspec/core/drb_options_spec.rb +51 -3
  49. data/spec/rspec/core/example_group_spec.rb +101 -84
  50. data/spec/rspec/core/example_spec.rb +14 -0
  51. data/spec/rspec/core/filter_manager_spec.rb +114 -33
  52. data/spec/rspec/core/formatters/html_formatted-1.8.7-jruby.html +17 -69
  53. data/spec/rspec/core/formatters/html_formatted-1.8.7.html +14 -4
  54. data/spec/rspec/core/formatters/html_formatted-1.9.2.html +14 -4
  55. data/spec/rspec/core/formatters/html_formatted-1.9.3.html +14 -4
  56. data/spec/rspec/core/formatters/html_formatter_spec.rb +1 -1
  57. data/spec/rspec/core/formatters/text_mate_formatted-1.8.7-jruby.html +20 -72
  58. data/spec/rspec/core/formatters/text_mate_formatted-1.8.7.html +24 -14
  59. data/spec/rspec/core/formatters/text_mate_formatted-1.9.2.html +29 -19
  60. data/spec/rspec/core/formatters/text_mate_formatted-1.9.3.html +29 -19
  61. data/spec/rspec/core/formatters/text_mate_formatter_spec.rb +1 -2
  62. data/spec/rspec/core/metadata_spec.rb +77 -45
  63. data/spec/rspec/core/option_parser_spec.rb +5 -0
  64. data/spec/rspec/core/pending_example_spec.rb +44 -12
  65. data/spec/rspec/core/project_initializer_spec.rb +130 -0
  66. data/spec/rspec/core/rake_task_spec.rb +1 -1
  67. data/spec/spec_helper.rb +2 -0
  68. data/spec/support/matchers.rb +2 -12
  69. metadata +18 -16
  70. data/features/command_line/configure.feature +0 -22
  71. data/lib/rspec/core/command_line_configuration.rb +0 -62
  72. data/lib/rspec/core/errors.rb +0 -13
  73. data/spec/rspec/core/command_line_configuration_spec.rb +0 -26
@@ -1,7 +1,7 @@
1
1
  module RSpec
2
2
  module Core
3
3
  module Version
4
- STRING = '2.8.0.rc1'
4
+ STRING = '2.8.0.rc2'
5
5
  end
6
6
  end
7
7
  end
@@ -1 +1 @@
1
- require "rspec/monkey/spork/test_framework/rspec.rb"
1
+ require_rspec 'monkey/spork/test_framework/rspec.rb'
@@ -1,6 +1,8 @@
1
1
  # TODO (2011-05-08) - remove this as soon as spork 0.9.0 is released
2
2
  if defined?(Spork::TestFramework::RSpec)
3
+ # @private
3
4
  class Spork::TestFramework::RSpec < Spork::TestFramework
5
+ # @private
4
6
  def run_tests(argv, err, out)
5
7
  ::RSpec::Core::CommandLine.new(argv).run(err, out)
6
8
  end
@@ -1,6 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'command line', :ui do
4
+ let(:stderr) { StringIO.new }
5
+ let(:stdout) { StringIO.new }
6
+
4
7
  before :all do
5
8
  write_file 'spec/order_spec.rb', """
6
9
  describe 'group 1' do
@@ -54,9 +57,11 @@ describe 'command line', :ui do
54
57
 
55
58
  describe '--order rand' do
56
59
  it 'runs the examples and groups in a different order each time' do
57
- 2.times { run_command 'rspec spec/order_spec.rb --order rand -f doc' }
60
+ run_command 'tmp/aruba/spec/order_spec.rb --order rand -f doc'
61
+ RSpec.configuration.seed = srand && srand # reset seed in same process
62
+ run_command 'tmp/aruba/spec/order_spec.rb --order rand -f doc'
58
63
 
59
- all_output.should match(/Randomized with seed \d+/)
64
+ stdout.string.should match(/Randomized with seed \d+/)
60
65
 
61
66
  top_level_groups {|first_run, second_run| first_run.should_not eq(second_run)}
62
67
  nested_groups {|first_run, second_run| first_run.should_not eq(second_run)}
@@ -67,9 +72,9 @@ describe 'command line', :ui do
67
72
 
68
73
  describe '--order rand:SEED' do
69
74
  it 'runs the examples and groups in the same order each time' do
70
- 2.times { run_command 'rspec spec/order_spec.rb --order rand:123 -f doc' }
75
+ 2.times { run_command 'tmp/aruba/spec/order_spec.rb --order rand:123 -f doc' }
71
76
 
72
- all_output.should match(/Randomized with seed 123/)
77
+ stdout.string.should match(/Randomized with seed 123/)
73
78
 
74
79
  top_level_groups {|first_run, second_run| first_run.should eq(second_run)}
75
80
  nested_groups {|first_run, second_run| first_run.should eq(second_run)}
@@ -80,9 +85,9 @@ describe 'command line', :ui do
80
85
 
81
86
  describe '--seed SEED' do
82
87
  it "forces '--order rand' and runs the examples and groups in the same order each time" do
83
- 2.times { run_command 'rspec spec/order_spec.rb --seed 123 -f doc' }
88
+ 2.times { run_command 'tmp/aruba/spec/order_spec.rb --seed 123 -f doc' }
84
89
 
85
- all_output.should match(/Randomized with seed \d+/)
90
+ stdout.string.should match(/Randomized with seed \d+/)
86
91
 
87
92
  top_level_groups {|first_run, second_run| first_run.should eq(second_run)}
88
93
  nested_groups {|first_run, second_run| first_run.should eq(second_run)}
@@ -95,16 +100,18 @@ describe 'command line', :ui do
95
100
  it "overrides --order rand with --order default" do
96
101
  write_file '.rspec', '--order rand'
97
102
 
98
- run_command 'rspec spec/order_spec.rb --order default -f doc'
103
+ run_command 'tmp/aruba/spec/order_spec.rb --order default -f doc'
99
104
 
100
- all_output.should_not match(/Randomized/)
105
+ stdout.string.should_not match(/Randomized/)
101
106
 
102
- all_output.should match(/group 1.*group 1 example 1.*group 1 example 2.*group 1-1.*group 1-2.*group 2.*/m)
107
+ stdout.string.should match(
108
+ /group 1.*group 1 example 1.*group 1 example 2.*group 1-1.*group 1-2.*group 2.*/m
109
+ )
103
110
  end
104
111
  end
105
112
 
106
113
  def examples(group)
107
- yield split_in_half(all_stdout.scan(/^\s+#{group} example.*$/))
114
+ yield split_in_half(stdout.string.scan(/^\s+#{group} example.*$/))
108
115
  end
109
116
 
110
117
  def top_level_groups
@@ -116,7 +123,7 @@ describe 'command line', :ui do
116
123
  end
117
124
 
118
125
  def example_groups_at_level(level)
119
- split_in_half(all_stdout.scan(/^\s{#{level*2}}group.*$/))
126
+ split_in_half(stdout.string.scan(/^\s{#{level*2}}group.*$/))
120
127
  end
121
128
 
122
129
  def split_in_half(array)
@@ -125,7 +132,6 @@ describe 'command line', :ui do
125
132
  end
126
133
 
127
134
  def run_command(cmd)
128
- # Wraps aruba api - 2nd param is fail_on_error
129
- run_simple cmd, false
135
+ RSpec::Core::Runner.run(cmd.split, stderr, stdout)
130
136
  end
131
137
  end
@@ -22,19 +22,16 @@ module RSpec::Core
22
22
  end
23
23
 
24
24
  it "returns 0 if spec passes" do
25
- err, out = StringIO.new, StringIO.new
26
25
  result = command_line([passing_spec_filename]).run(err, out)
27
26
  result.should be(0)
28
27
  end
29
28
 
30
29
  it "returns 1 if spec fails" do
31
- err, out = StringIO.new, StringIO.new
32
30
  result = command_line([failing_spec_filename]).run(err, out)
33
31
  result.should be(1)
34
32
  end
35
33
 
36
34
  it "returns 2 if spec fails and --failure-exit-code is 2" do
37
- err, out = StringIO.new, StringIO.new
38
35
  result = command_line([failing_spec_filename, "--failure-exit-code", "2"]).run(err, out)
39
36
  result.should be(2)
40
37
  end
@@ -95,8 +92,7 @@ module RSpec::Core
95
92
  # this is necessary to ensure that color works correctly on windows
96
93
  config.should_receive(:error_stream=).ordered
97
94
  config.should_receive(:output_stream=).ordered
98
- config.should_receive(:force).with(:default_path => anything).ordered
99
- config.should_receive(:force).with(:color => true).ordered
95
+ config.should_receive(:force).any_number_of_times.ordered
100
96
  command_line.run(err, out) rescue nil
101
97
  end
102
98
 
@@ -48,6 +48,13 @@ describe RSpec::Core::ConfigurationOptions do
48
48
  opts.configure(config)
49
49
  end
50
50
 
51
+ it "assigns inclusion_filter" do
52
+ opts = config_options_object(*%w[--tag awesome])
53
+ config = RSpec::Core::Configuration.new
54
+ opts.configure(config)
55
+ config.inclusion_filter.should have_key(:awesome)
56
+ end
57
+
51
58
  it "merges the :exclusion_filter option with the default exclusion_filter" do
52
59
  opts = config_options_object(*%w[--tag ~slow])
53
60
  config = RSpec::Core::Configuration.new
@@ -62,16 +69,14 @@ describe RSpec::Core::ConfigurationOptions do
62
69
  opts.configure(config)
63
70
  end
64
71
 
65
- it "assigns filter" do
66
- pending
67
- end
68
-
69
72
  [
70
73
  ["--failure-exit-code", "3", :failure_exit_code, 3 ],
71
74
  ["--pattern", "foo/bar", :pattern, "foo/bar"],
72
75
  ["--failure-exit-code", "37", :failure_exit_code, 37],
73
76
  ["--default_path", "behavior", :default_path, "behavior"],
74
77
  ["--drb", nil, :drb, true],
78
+ ["--order", "rand", :order, "rand"],
79
+ ["--seed", "37", :order, "rand:37"],
75
80
  ["--drb-port", "37", :drb_port, 37],
76
81
  ["--backtrace", nil, :full_backtrace, true],
77
82
  ["--profile", nil, :profile_examples, true],
@@ -88,20 +93,6 @@ describe RSpec::Core::ConfigurationOptions do
88
93
  end
89
94
  end
90
95
 
91
- it "sets order directly" do
92
- opts = config_options_object("--order", "rand")
93
- config = RSpec::Core::Configuration.new
94
- opts.configure(config)
95
- config.order.should eq("rand")
96
- end
97
-
98
- it "sets seed directly" do
99
- opts = config_options_object("--seed", "37")
100
- config = RSpec::Core::Configuration.new
101
- opts.configure(config)
102
- config.seed.should eq(37)
103
- end
104
-
105
96
  it "sets debug directly" do
106
97
  opts = config_options_object("--debug")
107
98
  config = RSpec::Core::Configuration.new
@@ -152,9 +143,9 @@ describe RSpec::Core::ConfigurationOptions do
152
143
 
153
144
  describe "--format, -f" do
154
145
  it "sets :formatter" do
155
- parse_options('--format', 'd').should include(:formatters => [['d']])
156
- parse_options('-f', 'd').should include(:formatters => [['d']])
157
- parse_options('-fd').should include(:formatters => [['d']])
146
+ [['--format', 'd'], ['-f', 'd'], '-fd'].each do |args|
147
+ parse_options(*args).should include(:formatters => [['d']])
148
+ end
158
149
  end
159
150
 
160
151
  example "can accept a class name" do
@@ -283,7 +274,9 @@ describe RSpec::Core::ConfigurationOptions do
283
274
 
284
275
  describe "files_or_directories_to_run" do
285
276
  it "parses files from '-c file.rb dir/file.rb'" do
286
- parse_options("-c", "file.rb", "dir/file.rb").should include(:files_or_directories_to_run => ["file.rb", "dir/file.rb"])
277
+ parse_options("-c", "file.rb", "dir/file.rb").should include(
278
+ :files_or_directories_to_run => ["file.rb", "dir/file.rb"]
279
+ )
287
280
  end
288
281
 
289
282
  it "parses dir from 'dir'" do
@@ -291,17 +284,15 @@ describe RSpec::Core::ConfigurationOptions do
291
284
  end
292
285
 
293
286
  it "parses dir and files from 'spec/file1_spec.rb, spec/file2_spec.rb'" do
294
- parse_options("dir", "spec/file1_spec.rb", "spec/file2_spec.rb").should include(:files_or_directories_to_run => ["dir", "spec/file1_spec.rb", "spec/file2_spec.rb"])
287
+ parse_options("dir", "spec/file1_spec.rb", "spec/file2_spec.rb").should include(
288
+ :files_or_directories_to_run => ["dir", "spec/file1_spec.rb", "spec/file2_spec.rb"]
289
+ )
295
290
  end
296
291
 
297
292
  it "provides no files or directories if spec directory does not exist" do
298
293
  FileTest.stub(:directory?).with("spec").and_return false
299
294
  parse_options().should include(:files_or_directories_to_run => [])
300
295
  end
301
-
302
- it "parses dir and files from 'spec/file1_spec.rb, spec/file2_spec.rb'" do
303
- parse_options("dir", "spec/file1_spec.rb", "spec/file2_spec.rb").should include(:files_or_directories_to_run => ["dir", "spec/file1_spec.rb", "spec/file2_spec.rb"])
304
- end
305
296
  end
306
297
 
307
298
  describe "default_path" do
@@ -315,6 +306,10 @@ describe RSpec::Core::ConfigurationOptions do
315
306
  end
316
307
 
317
308
  describe "sources: ~/.rspec, ./.rspec, custom, CLI, and SPEC_OPTS" do
309
+ before(:each) do
310
+ FileUtils.mkpath(File.expand_path("~"))
311
+ end
312
+
318
313
  it "merges global, local, SPEC_OPTS, and CLI" do
319
314
  File.open("./.rspec", "w") {|f| f << "--line 37"}
320
315
  File.open("~/.rspec", "w") {|f| f << "--color"}
@@ -649,13 +649,6 @@ module RSpec::Core
649
649
  config.inclusion_filter[:foo].should be(true)
650
650
  config.inclusion_filter[:bar].should be(false)
651
651
  end
652
-
653
- it "gets overrided by forced options" do
654
- config.force_exclude :foo => true
655
- config.filter_run_including :foo => true
656
- config.inclusion_filter.should eq({})
657
- end
658
-
659
652
  end
660
653
 
661
654
  describe "#filter_run_excluding" do
@@ -684,13 +677,6 @@ module RSpec::Core
684
677
  config.exclusion_filter[:foo].should be(true)
685
678
  config.exclusion_filter[:bar].should be(false)
686
679
  end
687
-
688
- it "gets overrided by forced options" do
689
- config.exclusion_filter.clear
690
- config.force_include :foo => true
691
- config.filter_run_excluding :foo => true
692
- config.exclusion_filter.should eq({})
693
- end
694
680
  end
695
681
 
696
682
  describe "#inclusion_filter" do
@@ -1035,6 +1021,38 @@ module RSpec::Core
1035
1021
  end
1036
1022
  end
1037
1023
 
1024
+ describe "#force" do
1025
+ it "forces order" do
1026
+ config.force :order => "default"
1027
+ config.order = "rand"
1028
+ config.order.should eq("default")
1029
+ end
1030
+
1031
+ it "forces order and seed with :order => 'rand:37'" do
1032
+ config.force :order => "rand:37"
1033
+ config.order = "default"
1034
+ config.order.should eq("rand")
1035
+ config.seed.should eq(37)
1036
+ end
1037
+
1038
+ it "forces order and seed with :seed => '37'" do
1039
+ config.force :seed => "37"
1040
+ config.order = "default"
1041
+ config.seed.should eq(37)
1042
+ config.order.should eq("rand")
1043
+ end
1044
+
1045
+ it "forces 'false' value" do
1046
+ config.add_setting :custom_option
1047
+ config.custom_option = true
1048
+ config.custom_option?.should be_true
1049
+ config.force :custom_option => false
1050
+ config.custom_option?.should be_false
1051
+ config.custom_option = true
1052
+ config.custom_option?.should be_false
1053
+ end
1054
+ end
1055
+
1038
1056
  describe '#seed' do
1039
1057
  it 'returns the seed as an int' do
1040
1058
  config.seed = '123'
@@ -7,23 +7,19 @@ describe "::DRbCommandLine", :type => :drb, :unless => RUBY_PLATFORM == 'java' d
7
7
 
8
8
  include_context "spec files"
9
9
 
10
- def command_line(args)
11
- RSpec::Core::DRbCommandLine.new(config_options(args))
10
+ def command_line(*args)
11
+ RSpec::Core::DRbCommandLine.new(config_options(*args))
12
12
  end
13
13
 
14
- def config_options(argv=[])
15
- options = RSpec::Core::ConfigurationOptions.new(argv)
14
+ def config_options(*args)
15
+ options = RSpec::Core::ConfigurationOptions.new(args)
16
16
  options.parse_options
17
17
  options
18
18
  end
19
19
 
20
- def run_with(args)
21
- command_line(args).run(err, out)
22
- end
23
-
24
20
  context "without server running" do
25
21
  it "raises an error" do
26
- lambda { run_with [] }.should raise_error(DRb::DRbConnError)
22
+ lambda { command_line.run(err, out) }.should raise_error(DRb::DRbConnError)
27
23
  end
28
24
  end
29
25
 
@@ -41,24 +37,23 @@ describe "::DRbCommandLine", :type => :drb, :unless => RUBY_PLATFORM == 'java' d
41
37
  context "without RSPEC_DRB environment variable set" do
42
38
  it "defaults to 8989" do
43
39
  with_RSPEC_DRB_set_to(nil) do
44
- command_line([]).drb_port.should eq(8989)
40
+ command_line.drb_port.should eq(8989)
45
41
  end
46
42
  end
47
43
 
48
44
  it "sets the DRb port" do
49
45
  with_RSPEC_DRB_set_to(nil) do
50
- command_line(["--drb-port", "1234"]).drb_port.should eq(1234)
51
- command_line(["--drb-port", "5678"]).drb_port.should eq(5678)
46
+ command_line("--drb-port", "1234").drb_port.should eq(1234)
47
+ command_line("--drb-port", "5678").drb_port.should eq(5678)
52
48
  end
53
49
  end
54
50
  end
55
51
 
56
52
  context "with RSPEC_DRB environment variable set" do
57
-
58
53
  context "without config variable set" do
59
54
  it "uses RSPEC_DRB value" do
60
55
  with_RSPEC_DRB_set_to('9000') do
61
- command_line([]).drb_port.should eq("9000")
56
+ command_line.drb_port.should eq("9000")
62
57
  end
63
58
  end
64
59
  end
@@ -66,7 +61,7 @@ describe "::DRbCommandLine", :type => :drb, :unless => RUBY_PLATFORM == 'java' d
66
61
  context "and config variable set" do
67
62
  it "uses configured value" do
68
63
  with_RSPEC_DRB_set_to('9000') do
69
- command_line(%w[--drb-port 5678]).drb_port.should eq(5678)
64
+ command_line(*%w[--drb-port 5678]).drb_port.should eq(5678)
70
65
  end
71
66
  end
72
67
  end
@@ -74,7 +69,7 @@ describe "::DRbCommandLine", :type => :drb, :unless => RUBY_PLATFORM == 'java' d
74
69
  end
75
70
 
76
71
  context "with server running" do
77
- class ::FakeDrbSpecServer
72
+ class SimpleDRbSpecServer
78
73
  def self.run(argv, err, out)
79
74
  options = RSpec::Core::ConfigurationOptions.new(argv)
80
75
  options.parse_options
@@ -83,9 +78,9 @@ describe "::DRbCommandLine", :type => :drb, :unless => RUBY_PLATFORM == 'java' d
83
78
  end
84
79
 
85
80
  before(:all) do
86
- @drb_port = 8990
81
+ @drb_port = '8990'
87
82
  @drb_example_file_counter = 0
88
- DRb::start_service("druby://127.0.0.1:#{@drb_port}", ::FakeDrbSpecServer)
83
+ DRb::start_service("druby://127.0.0.1:#{@drb_port}", SimpleDRbSpecServer)
89
84
  end
90
85
 
91
86
  after(:all) do
@@ -93,32 +88,20 @@ describe "::DRbCommandLine", :type => :drb, :unless => RUBY_PLATFORM == 'java' d
93
88
  end
94
89
 
95
90
  it "returns 0 if spec passes" do
96
- err, out = StringIO.new, StringIO.new
97
- result = command_line(["--drb-port", @drb_port.to_s, passing_spec_filename]).run(err, out)
91
+ result = command_line("--drb-port", @drb_port, passing_spec_filename).run(err, out)
98
92
  result.should be(0)
99
93
  end
100
94
 
101
- it "returns 1 if spec passes" do
102
- err, out = StringIO.new, StringIO.new
103
- result = command_line(["--drb-port", @drb_port.to_s, failing_spec_filename]).run(err, out)
95
+ it "returns 1 if spec fails" do
96
+ result = command_line("--drb-port", @drb_port, failing_spec_filename).run(err, out)
104
97
  result.should be(1)
105
98
  end
106
99
 
107
- def run_spec_via_druby
108
- run_with([failing_spec_filename, "--colour", "--drb-port", @drb_port.to_s])
100
+ it "outputs colorized text when running with --colour option" do
101
+ pending "figure out a way to tell the output to say it's tty"
102
+ command_line(failing_spec_filename, "--color", "--drb-port", @drb_port).run(err, out)
109
103
  out.rewind
110
- out.read
111
- end
112
-
113
- it "outputs green colorized text when running with --colour option" do
114
- pending "figure out a way to properly sandbox this"
115
- run_spec_via_druby.should =~ /\e\[32m/m
116
- end
117
-
118
- it "outputs red colorized text when running with -c option" do
119
- pending "figure out a way to properly sandbox this"
120
- run_spec_via_druby.should =~ /\e\[31m/m
104
+ out.read.should =~ /\e\[31m/m
121
105
  end
122
106
  end
123
-
124
107
  end
@@ -3,15 +3,20 @@ require "spec_helper"
3
3
  describe RSpec::Core::DrbOptions do
4
4
  include ConfigOptionsHelper
5
5
 
6
- # TODO ensure all options are output
7
6
  describe "#drb_argv" do
8
7
  it "preserves extra arguments" do
9
8
  File.stub(:exist?) { false }
10
9
  config_options_object(*%w[ a --drb b --color c ]).drb_argv.should =~ %w[ --color a b c ]
11
10
  end
12
11
 
13
- it "includes --fail-fast" do
14
- config_options_object(*%w[--fail-fast]).drb_argv.should include("--fail-fast")
12
+ %w(--color --fail-fast --profile --backtrace --tty).each do |option|
13
+ it "includes #{option}" do
14
+ config_options_object("#{option}").drb_argv.should include("#{option}")
15
+ end
16
+ end
17
+
18
+ it "includes --failure-exit-code" do
19
+ config_options_object(*%w[--failure-exit-code 2]).drb_argv.should include("--failure-exit-code", "2")
15
20
  end
16
21
 
17
22
  it "includes --options" do
@@ -97,6 +102,49 @@ describe RSpec::Core::DrbOptions do
97
102
  end
98
103
  end
99
104
 
105
+ context "with --out" do
106
+ it "combines with formatters" do
107
+ coo = config_options_object(*%w[--format h --out report.html])
108
+ coo.drb_argv.should eq(%w[--format h --out report.html])
109
+ end
110
+ end
111
+
112
+ context "with --line_number" do
113
+ it "includes --line_number" do
114
+ config_options_object(*%w[--line_number 35]).drb_argv.should eq(%w[--line_number 35])
115
+ end
116
+
117
+ it "includes multiple lines" do
118
+ config_options_object(*%w[-l 90 -l 4 -l 55]).drb_argv.should eq(
119
+ %w[--line_number 90 --line_number 4 --line_number 55]
120
+ )
121
+ end
122
+ end
123
+
124
+ context "with -I libs" do
125
+ it "includes -I" do
126
+ config_options_object(*%w[-I a_dir]).drb_argv.should eq(%w[-I a_dir])
127
+ end
128
+
129
+ it "includes multiple paths" do
130
+ config_options_object(*%w[-I dir_1 -I dir_2 -I dir_3]).drb_argv.should eq(
131
+ %w[-I dir_1 -I dir_2 -I dir_3]
132
+ )
133
+ end
134
+ end
135
+
136
+ context "with --require" do
137
+ it "includes --require" do
138
+ config_options_object(*%w[--require a_path]).drb_argv.should eq(%w[--require a_path])
139
+ end
140
+
141
+ it "includes multiple paths" do
142
+ config_options_object(*%w[--require dir/ --require file.rb]).drb_argv.should eq(
143
+ %w[--require dir/ --require file.rb]
144
+ )
145
+ end
146
+ end
147
+
100
148
  context "--drb specified in ARGV" do
101
149
  it "renders all the original arguments except --drb" do
102
150
  config_options_object(*%w[ --drb --color --format s --example pattern --line_number 1 --profile --backtrace -I path/a -I path/b --require path/c --require path/d]).