mspec 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/mspec/commands/mkspec.rb +16 -22
- data/lib/mspec/commands/mspec-ci.rb +41 -50
- data/lib/mspec/commands/mspec-run.rb +46 -53
- data/lib/mspec/commands/mspec-tag.rb +81 -50
- data/lib/mspec/commands/mspec.rb +35 -26
- data/lib/mspec/guards.rb +1 -0
- data/lib/mspec/guards/guard.rb +2 -15
- data/lib/mspec/helpers.rb +1 -0
- data/lib/mspec/helpers/ruby_exe.rb +101 -0
- data/lib/mspec/ruby_name.rb +8 -0
- data/lib/mspec/runner/actions.rb +1 -0
- data/lib/mspec/runner/actions/filter.rb +1 -1
- data/lib/mspec/runner/actions/taglist.rb +56 -0
- data/lib/mspec/runner/filters/tag.rb +1 -1
- data/lib/mspec/runner/mspec.rb +3 -1
- data/lib/mspec/utils/options.rb +258 -195
- data/lib/mspec/utils/script.rb +11 -1
- data/lib/mspec/version.rb +1 -1
- data/spec/commands/mkspec_spec.rb +19 -18
- data/spec/commands/mspec_ci_spec.rb +13 -40
- data/spec/commands/mspec_run_spec.rb +14 -14
- data/spec/commands/mspec_spec.rb +41 -7
- data/spec/commands/mspec_tag_spec.rb +248 -15
- data/spec/helpers/ruby_exe_spec.rb +115 -0
- data/spec/runner/actions/filter_spec.rb +4 -4
- data/spec/runner/actions/tag_spec.rb +1 -5
- data/spec/runner/actions/taglist_spec.rb +152 -0
- data/spec/runner/filters/tag_spec.rb +1 -1
- data/spec/runner/mspec_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -1
- data/spec/utils/options_spec.rb +562 -283
- data/spec/utils/script_spec.rb +32 -0
- metadata +6 -1
@@ -0,0 +1,115 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
require 'mspec/helpers/ruby_exe'
|
3
|
+
require 'rbconfig'
|
4
|
+
|
5
|
+
class RubyExeSpecs
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "#ruby_exe_options" do
|
9
|
+
before :all do
|
10
|
+
@verbose = $VERBOSE
|
11
|
+
$VERBOSE = nil
|
12
|
+
|
13
|
+
@ruby_name = Object.const_get :RUBY_NAME
|
14
|
+
@ruby_exe_env = ENV['RUBY_EXE']
|
15
|
+
|
16
|
+
@script = RubyExeSpecs.new
|
17
|
+
end
|
18
|
+
|
19
|
+
after :all do
|
20
|
+
Object.const_set :RUBY_NAME, @ruby_name
|
21
|
+
ENV['RUBY_EXE'] = @ruby_exe_env
|
22
|
+
$VERBOSE = @verbose
|
23
|
+
end
|
24
|
+
|
25
|
+
before :each do
|
26
|
+
@script = RubyExeSpecs.new
|
27
|
+
end
|
28
|
+
|
29
|
+
it "returns ENV['RUBY_EXE'] when passed :env" do
|
30
|
+
ENV['RUBY_EXE'] = "kowabunga"
|
31
|
+
@script.ruby_exe_options(:env).should == "kowabunga"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "returns 'bin/rbx' when passed :engine and RUBY_NAME is 'rbx'" do
|
35
|
+
Object.const_set :RUBY_NAME, 'rbx'
|
36
|
+
@script.ruby_exe_options(:engine).should == 'bin/rbx'
|
37
|
+
end
|
38
|
+
|
39
|
+
it "returns 'bin/jruby' when passed :engine and RUBY_NAME is 'jruby'" do
|
40
|
+
Object.const_set :RUBY_NAME, 'jruby'
|
41
|
+
@script.ruby_exe_options(:engine).should == 'bin/jruby'
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns 'ir' when passed :engine and RUBY_NAME is 'ironruby'" do
|
45
|
+
Object.const_set :RUBY_NAME, 'ironruby'
|
46
|
+
@script.ruby_exe_options(:engine).should == 'ir'
|
47
|
+
end
|
48
|
+
|
49
|
+
it "returns RUBY_NAME + $(EXEEXT) when passed :name" do
|
50
|
+
bin = RUBY_NAME + (Config::CONFIG['EXEEXT'] || Config::CONFIG['exeext'] || '')
|
51
|
+
name = File.join ".", bin
|
52
|
+
@script.ruby_exe_options(:name).should == name
|
53
|
+
end
|
54
|
+
|
55
|
+
it "returns $(bindir)/$(RUBY_INSTALL_NAME) + $(EXEEXT) when passed :install_name" do
|
56
|
+
bin = Config::CONFIG['RUBY_INSTALL_NAME'] + (Config::CONFIG['EXEEXT'] || Config::CONFIG['exeext'] || '')
|
57
|
+
name = File.join Config::CONFIG['bindir'], bin
|
58
|
+
@script.ruby_exe_options(:install_name).should == name
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "#resolve_ruby_exe" do
|
63
|
+
before :all do
|
64
|
+
@script = RubyExeSpecs.new
|
65
|
+
end
|
66
|
+
|
67
|
+
it "returns the value returned by #ruby_exe_options if it exists and is executable" do
|
68
|
+
name = "ruby_spec_exe"
|
69
|
+
@script.should_receive(:ruby_exe_options).and_return(name)
|
70
|
+
File.should_receive(:exists?).with(name).and_return(true)
|
71
|
+
File.should_receive(:executable?).with(name).and_return(true)
|
72
|
+
@script.resolve_ruby_exe.should == name
|
73
|
+
end
|
74
|
+
|
75
|
+
it "returns nil if no exe is found" do
|
76
|
+
File.should_receive(:exists?).at_least(:once).and_return(false)
|
77
|
+
@script.resolve_ruby_exe.should be_nil
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe Object, "#ruby_exe" do
|
82
|
+
before :all do
|
83
|
+
@verbose = $VERBOSE
|
84
|
+
$VERBOSE = nil
|
85
|
+
|
86
|
+
@ruby_flags = ENV["RUBY_FLAGS"]
|
87
|
+
ENV["RUBY_FLAGS"] = "-w -Q"
|
88
|
+
|
89
|
+
@ruby_exe = Object.const_get :RUBY_EXE
|
90
|
+
Object.const_set :RUBY_EXE, 'ruby_spec_exe'
|
91
|
+
|
92
|
+
@script = RubyExeSpecs.new
|
93
|
+
end
|
94
|
+
|
95
|
+
after :all do
|
96
|
+
Object.const_set :RUBY_EXE, @ruby_exe
|
97
|
+
ENV["RUBY_FLAGS"] = @ruby_flags
|
98
|
+
$VERBOSE = @verbose
|
99
|
+
end
|
100
|
+
|
101
|
+
it "executes the argument if it is a file that exists and is executable" do
|
102
|
+
code = "some/ruby/file.rb"
|
103
|
+
File.should_receive(:exists?).with(code).and_return(true)
|
104
|
+
File.should_receive(:executable?).with(code).and_return(true)
|
105
|
+
@script.should_receive(:`).with("ruby_spec_exe -w -Q some/ruby/file.rb")
|
106
|
+
@script.ruby_exe code
|
107
|
+
end
|
108
|
+
|
109
|
+
it "executes the argument with -e" do
|
110
|
+
code = %(some "real" 'ruby' code)
|
111
|
+
File.should_receive(:exists?).with(code).and_return(false)
|
112
|
+
@script.should_receive(:`).with(%(ruby_spec_exe -w -Q -e "some \\"real\\" 'ruby' code"))
|
113
|
+
@script.ruby_exe code
|
114
|
+
end
|
115
|
+
end
|
@@ -48,13 +48,13 @@ describe ActionFilter, "#load" do
|
|
48
48
|
end
|
49
49
|
|
50
50
|
it "creates a filter from a single tag" do
|
51
|
-
MSpec.should_receive(:read_tags).with("tag").and_return([@tag])
|
51
|
+
MSpec.should_receive(:read_tags).with(["tag"]).and_return([@tag])
|
52
52
|
MatchFilter.should_receive(:new).with(nil, "description")
|
53
53
|
ActionFilter.new("tag", nil).load
|
54
54
|
end
|
55
55
|
|
56
56
|
it "creates a filter from an array of tags" do
|
57
|
-
MSpec.should_receive(:read_tags).with("tag", "key").and_return([@tag])
|
57
|
+
MSpec.should_receive(:read_tags).with(["tag", "key"]).and_return([@tag])
|
58
58
|
MatchFilter.should_receive(:new).with(nil, "description")
|
59
59
|
ActionFilter.new(["tag", "key"], nil).load
|
60
60
|
end
|
@@ -68,7 +68,7 @@ describe ActionFilter, "#load" do
|
|
68
68
|
end
|
69
69
|
|
70
70
|
describe ActionFilter, "#register" do
|
71
|
-
it "registers itself with MSpec for the :load
|
71
|
+
it "registers itself with MSpec for the :load actions" do
|
72
72
|
filter = ActionFilter.new
|
73
73
|
MSpec.should_receive(:register).with(:load, filter)
|
74
74
|
filter.register
|
@@ -76,7 +76,7 @@ describe ActionFilter, "#register" do
|
|
76
76
|
end
|
77
77
|
|
78
78
|
describe ActionFilter, "#unregister" do
|
79
|
-
it "unregisters itself with MSpec for the :load
|
79
|
+
it "unregisters itself with MSpec for the :load actions" do
|
80
80
|
filter = ActionFilter.new
|
81
81
|
MSpec.should_receive(:unregister).with(:load, filter)
|
82
82
|
filter.unregister
|
@@ -4,11 +4,7 @@ require 'mspec/runner/mspec'
|
|
4
4
|
require 'mspec/runner/example'
|
5
5
|
require 'mspec/runner/tag'
|
6
6
|
|
7
|
-
describe TagAction do
|
8
|
-
before :each do
|
9
|
-
MSpec.stub!(:read_tags).and_return([])
|
10
|
-
end
|
11
|
-
|
7
|
+
describe TagAction, ".new" do
|
12
8
|
it "creates an MatchFilter with its tag and desc arguments" do
|
13
9
|
filter = mock('action filter', :null_object => true)
|
14
10
|
MatchFilter.should_receive(:new).with(nil, "some", "thing").and_return(filter)
|
@@ -0,0 +1,152 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
require 'mspec/runner/actions/taglist'
|
3
|
+
require 'mspec/runner/mspec'
|
4
|
+
require 'mspec/runner/example'
|
5
|
+
require 'mspec/runner/tag'
|
6
|
+
|
7
|
+
describe TagListAction, "#include?" do
|
8
|
+
it "returns true" do
|
9
|
+
TagListAction.new.include?(:anything).should be_true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe TagListAction, "#===" do
|
14
|
+
before :each do
|
15
|
+
tag = SpecTag.new "fails:description"
|
16
|
+
MSpec.stub!(:read_tags).and_return([tag])
|
17
|
+
@filter = mock("MatchFilter", :null_object => true)
|
18
|
+
MatchFilter.stub!(:new).and_return(@filter)
|
19
|
+
@action = TagListAction.new
|
20
|
+
@action.load
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns true if filter === string returns true" do
|
24
|
+
@filter.should_receive(:===).with("str").and_return(true)
|
25
|
+
@action.===("str").should be_true
|
26
|
+
end
|
27
|
+
|
28
|
+
it "returns false if filter === string returns false" do
|
29
|
+
@filter.should_receive(:===).with("str").and_return(false)
|
30
|
+
@action.===("str").should be_false
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe TagListAction, "#start" do
|
35
|
+
before :each do
|
36
|
+
@stdout = $stdout
|
37
|
+
$stdout = IOStub.new
|
38
|
+
end
|
39
|
+
|
40
|
+
after :each do
|
41
|
+
$stdout = @stdout
|
42
|
+
end
|
43
|
+
|
44
|
+
it "prints a banner for specific tags" do
|
45
|
+
action = TagListAction.new ["fails", "unstable"]
|
46
|
+
action.start
|
47
|
+
$stdout.should == "\nListing specs tagged with 'fails', 'unstable'\n\n"
|
48
|
+
end
|
49
|
+
|
50
|
+
it "prints a banner for all tags" do
|
51
|
+
action = TagListAction.new
|
52
|
+
action.start
|
53
|
+
$stdout.should == "\nListing all tagged specs\n\n"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe TagListAction, "#laod" do
|
58
|
+
before :each do
|
59
|
+
@t1 = SpecTag.new "fails:I fail"
|
60
|
+
@t2 = SpecTag.new "unstable:I'm unstable"
|
61
|
+
end
|
62
|
+
|
63
|
+
it "creates a MatchFilter for matching tags" do
|
64
|
+
MSpec.should_receive(:read_tags).with(["fails"]).and_return([@t1])
|
65
|
+
MatchFilter.should_receive(:new).with(nil, "I fail")
|
66
|
+
TagListAction.new(["fails"]).load
|
67
|
+
end
|
68
|
+
|
69
|
+
it "creates a MatchFilter for all tags" do
|
70
|
+
MSpec.should_receive(:read_tags).and_return([@t1, @t2])
|
71
|
+
MatchFilter.should_receive(:new).with(nil, "I fail", "I'm unstable")
|
72
|
+
TagListAction.new.load
|
73
|
+
end
|
74
|
+
|
75
|
+
it "does not create a MatchFilter if there are no matching tags" do
|
76
|
+
MSpec.stub!(:read_tags).and_return([])
|
77
|
+
MatchFilter.should_not_receive(:new)
|
78
|
+
TagListAction.new(["fails"]).load
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe TagListAction, "#after" do
|
83
|
+
before :each do
|
84
|
+
@stdout = $stdout
|
85
|
+
$stdout = IOStub.new
|
86
|
+
|
87
|
+
@state = mock("ExampleState")
|
88
|
+
@state.stub!(:description).and_return("str")
|
89
|
+
|
90
|
+
@action = TagListAction.new
|
91
|
+
end
|
92
|
+
|
93
|
+
after :each do
|
94
|
+
$stdout = @stdout
|
95
|
+
end
|
96
|
+
|
97
|
+
it "prints nothing if the filter does not match" do
|
98
|
+
@action.should_receive(:===).with("str").and_return(false)
|
99
|
+
@action.after(@state)
|
100
|
+
$stdout.should == ""
|
101
|
+
end
|
102
|
+
|
103
|
+
it "prints the example description if the filter matches" do
|
104
|
+
@action.should_receive(:===).with("str").and_return(true)
|
105
|
+
@action.after(@state)
|
106
|
+
$stdout.should == "str\n"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe TagListAction, "#register" do
|
111
|
+
before :each do
|
112
|
+
MSpec.stub!(:register)
|
113
|
+
@action = TagListAction.new
|
114
|
+
end
|
115
|
+
|
116
|
+
it "registers itself with MSpec for the :start event" do
|
117
|
+
MSpec.should_receive(:register).with(:start, @action)
|
118
|
+
@action.register
|
119
|
+
end
|
120
|
+
|
121
|
+
it "registers itself with MSpec for the :load event" do
|
122
|
+
MSpec.should_receive(:register).with(:load, @action)
|
123
|
+
@action.register
|
124
|
+
end
|
125
|
+
|
126
|
+
it "registers itself with MSpec for the :after event" do
|
127
|
+
MSpec.should_receive(:register).with(:after, @action)
|
128
|
+
@action.register
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe TagListAction, "#unregister" do
|
133
|
+
before :each do
|
134
|
+
MSpec.stub!(:unregister)
|
135
|
+
@action = TagListAction.new
|
136
|
+
end
|
137
|
+
|
138
|
+
it "unregisters itself with MSpec for the :start event" do
|
139
|
+
MSpec.should_receive(:unregister).with(:start, @action)
|
140
|
+
@action.unregister
|
141
|
+
end
|
142
|
+
|
143
|
+
it "unregisters itself with MSpec for the :load event" do
|
144
|
+
MSpec.should_receive(:unregister).with(:load, @action)
|
145
|
+
@action.unregister
|
146
|
+
end
|
147
|
+
|
148
|
+
it "unregisters itself with MSpec for the :after event" do
|
149
|
+
MSpec.should_receive(:unregister).with(:after, @action)
|
150
|
+
@action.unregister
|
151
|
+
end
|
152
|
+
end
|
data/spec/runner/mspec_spec.rb
CHANGED
@@ -368,7 +368,7 @@ describe MSpec, ".read_tags" do
|
|
368
368
|
|
369
369
|
it "returns a list of tag instances for matching tag names found" do
|
370
370
|
one = SpecTag.new "fail(broken):Some#method? works"
|
371
|
-
MSpec.read_tags("fail", "pass").should == [one]
|
371
|
+
MSpec.read_tags(["fail", "pass"]).should == [one]
|
372
372
|
end
|
373
373
|
|
374
374
|
it "returns [] if no tags names match" do
|
data/spec/spec_helper.rb
CHANGED
@@ -27,12 +27,13 @@ class MOSConfig < Hash
|
|
27
27
|
self[:astrings] = []
|
28
28
|
self[:target] = 'ruby'
|
29
29
|
self[:command] = nil
|
30
|
+
self[:ltags] = []
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
33
34
|
def new_option
|
34
35
|
config = MOSConfig.new
|
35
|
-
return MSpecOptions.new(
|
36
|
+
return MSpecOptions.new("spec", 20, config), config
|
36
37
|
end
|
37
38
|
|
38
39
|
# Just to have an exception name output not be "Exception"
|
data/spec/utils/options_spec.rb
CHANGED
@@ -4,9 +4,444 @@ require 'mspec/version'
|
|
4
4
|
require 'mspec/runner/mspec'
|
5
5
|
require 'mspec/runner/formatters'
|
6
6
|
|
7
|
-
describe
|
8
|
-
|
9
|
-
|
7
|
+
describe MSpecOption, ".new" do
|
8
|
+
before :each do
|
9
|
+
@opt = MSpecOption.new("-a", "--bdc", "ARG", "desc", :block)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "sets the short attribute" do
|
13
|
+
@opt.short.should == "-a"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "sets the long attribute" do
|
17
|
+
@opt.long.should == "--bdc"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "sets the arg attribute" do
|
21
|
+
@opt.arg.should == "ARG"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "sets the description attribute" do
|
25
|
+
@opt.description.should == "desc"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "sets the block attribute" do
|
29
|
+
@opt.block.should == :block
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe MSpecOption, "#arg?" do
|
34
|
+
it "returns true if arg attribute is not nil" do
|
35
|
+
MSpecOption.new(nil, nil, "ARG", nil, nil).arg?.should be_true
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns false if arg attribute is nil" do
|
39
|
+
MSpecOption.new(nil, nil, nil, nil, nil).arg?.should be_false
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe MSpecOption, "#match?" do
|
44
|
+
before :each do
|
45
|
+
@opt = MSpecOption.new("-a", "--bdc", "ARG", "desc", :block)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "returns true if the argument matches the short option" do
|
49
|
+
@opt.match?("-a").should be_true
|
50
|
+
end
|
51
|
+
|
52
|
+
it "returns true if the argument matches the long option" do
|
53
|
+
@opt.match?("--bdc").should be_true
|
54
|
+
end
|
55
|
+
|
56
|
+
it "returns false if the argument matches neither the short nor long option" do
|
57
|
+
@opt.match?("-b").should be_false
|
58
|
+
@opt.match?("-abdc").should be_false
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe MSpecOptions, ".new" do
|
63
|
+
before :each do
|
64
|
+
@opt = MSpecOptions.new("cmd", 20, :config)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "sets the banner attribute" do
|
68
|
+
@opt.banner.should == "cmd"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "sets the config attribute" do
|
72
|
+
@opt.config.should == :config
|
73
|
+
end
|
74
|
+
|
75
|
+
it "sets the width attribute" do
|
76
|
+
@opt.width.should == 20
|
77
|
+
end
|
78
|
+
|
79
|
+
it "sets the default width attribute" do
|
80
|
+
MSpecOptions.new.width.should == 30
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe MSpecOptions, "#on" do
|
85
|
+
before :each do
|
86
|
+
@opt = MSpecOptions.new
|
87
|
+
end
|
88
|
+
|
89
|
+
it "adds a short option" do
|
90
|
+
@opt.should_receive(:add).with("-a", nil, nil, "desc", nil)
|
91
|
+
@opt.on("-a", "desc")
|
92
|
+
end
|
93
|
+
|
94
|
+
it "adds a short option taking an argument" do
|
95
|
+
@opt.should_receive(:add).with("-a", nil, "ARG", "desc", nil)
|
96
|
+
@opt.on("-a", "ARG", "desc")
|
97
|
+
end
|
98
|
+
|
99
|
+
it "adds a long option" do
|
100
|
+
@opt.should_receive(:add).with("-a", nil, nil, "desc", nil)
|
101
|
+
@opt.on("-a", "desc")
|
102
|
+
end
|
103
|
+
|
104
|
+
it "adds a long option taking an argument" do
|
105
|
+
@opt.should_receive(:add).with("-a", nil, nil, "desc", nil)
|
106
|
+
@opt.on("-a", "desc")
|
107
|
+
end
|
108
|
+
|
109
|
+
it "adds a short and long option" do
|
110
|
+
@opt.should_receive(:add).with("-a", nil, nil, "desc", nil)
|
111
|
+
@opt.on("-a", "desc")
|
112
|
+
end
|
113
|
+
|
114
|
+
it "adds a short and long option taking an argument" do
|
115
|
+
@opt.should_receive(:add).with("-a", nil, nil, "desc", nil)
|
116
|
+
@opt.on("-a", "desc")
|
117
|
+
end
|
118
|
+
|
119
|
+
it "raises MSpecOptions::OptionError if pass less than 2 arguments" do
|
120
|
+
lambda { @opt.on }.should raise_error(MSpecOptions::OptionError)
|
121
|
+
lambda { @opt.on "" }.should raise_error(MSpecOptions::OptionError)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe MSpecOptions, "#add" do
|
126
|
+
before :each do
|
127
|
+
@opt = MSpecOptions.new "cmd", 20
|
128
|
+
@prc = lambda { }
|
129
|
+
end
|
130
|
+
|
131
|
+
it "adds documentation for an option" do
|
132
|
+
@opt.should_receive(:doc).with(" -t, --typo ARG Correct typo ARG")
|
133
|
+
@opt.add("-t", "--typo", "ARG", "Correct typo ARG", @prc)
|
134
|
+
end
|
135
|
+
|
136
|
+
it "leaves spaces in the documentation for a missing short option" do
|
137
|
+
@opt.should_receive(:doc).with(" --typo ARG Correct typo ARG")
|
138
|
+
@opt.add(nil, "--typo", "ARG", "Correct typo ARG", @prc)
|
139
|
+
end
|
140
|
+
|
141
|
+
it "handles a short option with argument but no long argument" do
|
142
|
+
@opt.should_receive(:doc).with(" -t ARG Correct typo ARG")
|
143
|
+
@opt.add("-t", nil, "ARG", "Correct typo ARG", @prc)
|
144
|
+
end
|
145
|
+
|
146
|
+
it "registers an option" do
|
147
|
+
option = MSpecOption.new "-t", "--typo", "ARG", "Correct typo ARG", @prc
|
148
|
+
MSpecOption.should_receive(:new).with(
|
149
|
+
"-t", "--typo", "ARG", "Correct typo ARG", @prc).and_return(option)
|
150
|
+
@opt.add("-t", "--typo", "ARG", "Correct typo ARG", @prc)
|
151
|
+
@opt.options.should == [option]
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
describe MSpecOptions, "#match?" do
|
156
|
+
before :each do
|
157
|
+
@opt = MSpecOptions.new
|
158
|
+
end
|
159
|
+
|
160
|
+
it "returns the MSpecOption instance matching the argument" do
|
161
|
+
@opt.on "-a", "--abdc", "desc"
|
162
|
+
option = @opt.match? "-a"
|
163
|
+
@opt.match?("--abdc").should be(option)
|
164
|
+
option.should be_kind_of(MSpecOption)
|
165
|
+
option.short.should == "-a"
|
166
|
+
option.long.should == "--abdc"
|
167
|
+
option.description.should == "desc"
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
describe MSpecOptions, "#process" do
|
172
|
+
before :each do
|
173
|
+
@opt = MSpecOptions.new
|
174
|
+
ScratchPad.clear
|
175
|
+
end
|
176
|
+
|
177
|
+
it "calls the on_extra block if the argument does not match any option" do
|
178
|
+
@opt.on_extra { ScratchPad.record :extra }
|
179
|
+
@opt.process ["-a"], "-a", "-a", nil
|
180
|
+
ScratchPad.recorded.should == :extra
|
181
|
+
end
|
182
|
+
|
183
|
+
it "returns the matching option" do
|
184
|
+
@opt.on "-a", "ARG", "desc"
|
185
|
+
option = @opt.process [], "-a", "-a", "ARG"
|
186
|
+
option.should be_kind_of(MSpecOption)
|
187
|
+
option.short.should == "-a"
|
188
|
+
option.arg.should == "ARG"
|
189
|
+
option.description.should == "desc"
|
190
|
+
end
|
191
|
+
|
192
|
+
it "raises an MSpecOptions::ParseError if arg is nil and there are no more entries in argv" do
|
193
|
+
@opt.on "-a", "ARG", "desc"
|
194
|
+
lambda { @opt.process [], "-a", "-a", nil }.should raise_error(MSpecOptions::ParseError)
|
195
|
+
end
|
196
|
+
|
197
|
+
it "fetches the argument for the option from argv if arg is nil" do
|
198
|
+
@opt.on("-a", "ARG", "desc") { |o| ScratchPad.record o }
|
199
|
+
@opt.process ["ARG"], "-a", "-a", nil
|
200
|
+
ScratchPad.recorded.should == "ARG"
|
201
|
+
end
|
202
|
+
|
203
|
+
it "calls the option's block" do
|
204
|
+
@opt.on("-a", "ARG", "desc") { ScratchPad.record :option }
|
205
|
+
@opt.process [], "-a", "-a", "ARG"
|
206
|
+
ScratchPad.recorded.should == :option
|
207
|
+
end
|
208
|
+
|
209
|
+
it "does not call the option's block if it is nil" do
|
210
|
+
@opt.on "-a", "ARG", "desc"
|
211
|
+
lambda { @opt.process [], "-a", "-a", "ARG" }.should_not raise_error
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
describe MSpecOptions, "#split" do
|
216
|
+
before :each do
|
217
|
+
@opt = MSpecOptions.new
|
218
|
+
end
|
219
|
+
|
220
|
+
it "breaks a string at the nth character" do
|
221
|
+
opt, arg, rest = @opt.split "-bdc", 2
|
222
|
+
opt.should == "-b"
|
223
|
+
arg.should == "dc"
|
224
|
+
rest.should == "dc"
|
225
|
+
end
|
226
|
+
|
227
|
+
it "returns nil for arg if there are no characters left" do
|
228
|
+
opt, arg, rest = @opt.split "-b", 2
|
229
|
+
opt.should == "-b"
|
230
|
+
arg.should == nil
|
231
|
+
rest.should == ""
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
describe MSpecOptions, "#parse" do
|
236
|
+
before :each do
|
237
|
+
@opt = MSpecOptions.new
|
238
|
+
@prc = lambda { |o| ScratchPad.record [:parsed, o] }
|
239
|
+
ScratchPad.clear
|
240
|
+
end
|
241
|
+
|
242
|
+
it "parses a short option" do
|
243
|
+
@opt.on "-a", "desc", &@prc
|
244
|
+
@opt.parse ["-a"]
|
245
|
+
ScratchPad.recorded.should == [:parsed, nil]
|
246
|
+
end
|
247
|
+
|
248
|
+
it "parse a long option" do
|
249
|
+
@opt.on "--abdc", "desc", &@prc
|
250
|
+
@opt.parse ["--abdc"]
|
251
|
+
ScratchPad.recorded.should == [:parsed, nil]
|
252
|
+
end
|
253
|
+
|
254
|
+
it "parses a short option group" do
|
255
|
+
@opt.on "-a", "ARG", "desc", &@prc
|
256
|
+
@opt.parse ["-a", "ARG"]
|
257
|
+
ScratchPad.recorded.should == [:parsed, "ARG"]
|
258
|
+
end
|
259
|
+
|
260
|
+
it "parses a short option with an argument" do
|
261
|
+
@opt.on "-a", "ARG", "desc", &@prc
|
262
|
+
@opt.parse ["-a", "ARG"]
|
263
|
+
ScratchPad.recorded.should == [:parsed, "ARG"]
|
264
|
+
end
|
265
|
+
|
266
|
+
it "parses a short option with connected argument" do
|
267
|
+
@opt.on "-a", "ARG", "desc", &@prc
|
268
|
+
@opt.parse ["-aARG"]
|
269
|
+
ScratchPad.recorded.should == [:parsed, "ARG"]
|
270
|
+
end
|
271
|
+
|
272
|
+
it "parses a long option with an argument" do
|
273
|
+
@opt.on "--abdc", "ARG", "desc", &@prc
|
274
|
+
@opt.parse ["--abdc", "ARG"]
|
275
|
+
ScratchPad.recorded.should == [:parsed, "ARG"]
|
276
|
+
end
|
277
|
+
|
278
|
+
it "parses a long option with an '=' argument" do
|
279
|
+
@opt.on "--abdc", "ARG", "desc", &@prc
|
280
|
+
@opt.parse ["--abdc=ARG"]
|
281
|
+
ScratchPad.recorded.should == [:parsed, "ARG"]
|
282
|
+
end
|
283
|
+
|
284
|
+
it "parses a short option group with the final option taking an argument" do
|
285
|
+
ScratchPad.record []
|
286
|
+
@opt.on("-a", "desc") { |o| ScratchPad << :a }
|
287
|
+
@opt.on("-b", "ARG", "desc") { |o| ScratchPad << [:b, o] }
|
288
|
+
@opt.parse ["-ab", "ARG"]
|
289
|
+
ScratchPad.recorded.should == [:a, [:b, "ARG"]]
|
290
|
+
end
|
291
|
+
|
292
|
+
it "parses a short option group with a connected argument" do
|
293
|
+
ScratchPad.record []
|
294
|
+
@opt.on("-a", "desc") { |o| ScratchPad << :a }
|
295
|
+
@opt.on("-b", "ARG", "desc") { |o| ScratchPad << [:b, o] }
|
296
|
+
@opt.on("-c", "desc") { |o| ScratchPad << :c }
|
297
|
+
@opt.parse ["-acbARG"]
|
298
|
+
ScratchPad.recorded.should == [:a, :c, [:b, "ARG"]]
|
299
|
+
end
|
300
|
+
|
301
|
+
it "returns the unprocessed entries" do
|
302
|
+
@opt.on "-a", "ARG", "desc", &@prc
|
303
|
+
@opt.parse(["abdc", "-a", "ilny"]).should == ["abdc"]
|
304
|
+
end
|
305
|
+
|
306
|
+
it "calls the on_extra handler with unrecognized options" do
|
307
|
+
ScratchPad.record []
|
308
|
+
@opt.on_extra { |o| ScratchPad << o }
|
309
|
+
@opt.on "-a", "desc"
|
310
|
+
@opt.parse ["-a", "-b"]
|
311
|
+
ScratchPad.recorded.should == ["-b"]
|
312
|
+
end
|
313
|
+
|
314
|
+
it "does not attempt to call the block if it is nil" do
|
315
|
+
@opt.on "-a", "ARG", "desc"
|
316
|
+
@opt.parse(["-a", "ARG"]).should == []
|
317
|
+
end
|
318
|
+
|
319
|
+
it "raises MSpecOptions::ParseError if passed an unrecognized option" do
|
320
|
+
@opt.should_receive(:raise).with(MSpecOptions::ParseError, an_instance_of(String))
|
321
|
+
@opt.stub!(:puts)
|
322
|
+
@opt.stub!(:exit)
|
323
|
+
@opt.parse "-u"
|
324
|
+
end
|
325
|
+
end
|
326
|
+
|
327
|
+
describe MSpecOptions, "#banner=" do
|
328
|
+
before :each do
|
329
|
+
@opt = MSpecOptions.new
|
330
|
+
end
|
331
|
+
|
332
|
+
it "sets the banner attribute" do
|
333
|
+
@opt.banner.should == ""
|
334
|
+
@opt.banner = "banner"
|
335
|
+
@opt.banner.should == "banner"
|
336
|
+
end
|
337
|
+
end
|
338
|
+
|
339
|
+
describe MSpecOptions, "#width=" do
|
340
|
+
before :each do
|
341
|
+
@opt = MSpecOptions.new
|
342
|
+
end
|
343
|
+
|
344
|
+
it "sets the width attribute" do
|
345
|
+
@opt.width.should == 30
|
346
|
+
@opt.width = 20
|
347
|
+
@opt.width.should == 20
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
351
|
+
describe MSpecOptions, "#config=" do
|
352
|
+
before :each do
|
353
|
+
@opt = MSpecOptions.new
|
354
|
+
end
|
355
|
+
|
356
|
+
it "sets the config attribute" do
|
357
|
+
@opt.config.should be_nil
|
358
|
+
@opt.config = :config
|
359
|
+
@opt.config.should == :config
|
360
|
+
end
|
361
|
+
end
|
362
|
+
|
363
|
+
describe MSpecOptions, "#doc" do
|
364
|
+
before :each do
|
365
|
+
@opt = MSpecOptions.new "command"
|
366
|
+
end
|
367
|
+
|
368
|
+
it "adds text to be displayed with #to_s" do
|
369
|
+
@opt.doc "Some message"
|
370
|
+
@opt.doc "Another message"
|
371
|
+
@opt.to_s.should == <<-EOD
|
372
|
+
command
|
373
|
+
|
374
|
+
Some message
|
375
|
+
Another message
|
376
|
+
EOD
|
377
|
+
end
|
378
|
+
end
|
379
|
+
|
380
|
+
describe MSpecOptions, "#version" do
|
381
|
+
before :each do
|
382
|
+
@opt = MSpecOptions.new
|
383
|
+
ScratchPad.clear
|
384
|
+
end
|
385
|
+
|
386
|
+
it "installs a basic -v, --version option" do
|
387
|
+
@opt.should_receive(:puts)
|
388
|
+
@opt.should_receive(:exit)
|
389
|
+
@opt.version "1.0.0"
|
390
|
+
@opt.parse "-v"
|
391
|
+
end
|
392
|
+
|
393
|
+
it "accepts a block instead of using the default block" do
|
394
|
+
@opt.version("1.0.0") { |o| ScratchPad.record :version }
|
395
|
+
@opt.parse "-v"
|
396
|
+
ScratchPad.recorded.should == :version
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
describe MSpecOptions, "#help" do
|
401
|
+
before :each do
|
402
|
+
@opt = MSpecOptions.new
|
403
|
+
ScratchPad.clear
|
404
|
+
end
|
405
|
+
|
406
|
+
it "installs a basic -h, --help option" do
|
407
|
+
@opt.should_receive(:puts)
|
408
|
+
@opt.should_receive(:exit).with(1)
|
409
|
+
@opt.help
|
410
|
+
@opt.parse "-h"
|
411
|
+
end
|
412
|
+
|
413
|
+
it "accepts a block instead of using the default block" do
|
414
|
+
@opt.help { |o| ScratchPad.record :help }
|
415
|
+
@opt.parse "-h"
|
416
|
+
ScratchPad.recorded.should == :help
|
417
|
+
end
|
418
|
+
end
|
419
|
+
|
420
|
+
describe MSpecOptions, "#on_extra" do
|
421
|
+
before :each do
|
422
|
+
@opt = MSpecOptions.new
|
423
|
+
ScratchPad.clear
|
424
|
+
end
|
425
|
+
|
426
|
+
it "registers a block to be called when an option is not recognized" do
|
427
|
+
@opt.on_extra { ScratchPad.record :extra }
|
428
|
+
@opt.parse "-g"
|
429
|
+
ScratchPad.recorded.should == :extra
|
430
|
+
end
|
431
|
+
end
|
432
|
+
|
433
|
+
describe MSpecOptions, "#to_s" do
|
434
|
+
before :each do
|
435
|
+
@opt = MSpecOptions.new "command"
|
436
|
+
end
|
437
|
+
|
438
|
+
it "returns the banner and descriptive strings for all registered options" do
|
439
|
+
@opt.on "-t", "--this ARG", "Adds this ARG to the list"
|
440
|
+
@opt.to_s.should == <<-EOD
|
441
|
+
command
|
442
|
+
|
443
|
+
-t, --this ARG Adds this ARG to the list
|
444
|
+
EOD
|
10
445
|
end
|
11
446
|
end
|
12
447
|
|
@@ -15,17 +450,17 @@ describe "The -B, --config FILE option" do
|
|
15
450
|
@options, @config = new_option
|
16
451
|
end
|
17
452
|
|
18
|
-
it "is enabled with #
|
19
|
-
@options.should_receive(:on).with("-B", "--config FILE",
|
20
|
-
|
21
|
-
@options.
|
453
|
+
it "is enabled with #configure { }" do
|
454
|
+
@options.should_receive(:on).with("-B", "--config", "FILE",
|
455
|
+
an_instance_of(String))
|
456
|
+
@options.configure {}
|
22
457
|
end
|
23
458
|
|
24
459
|
it "calls the passed block" do
|
25
460
|
["-B", "--config"].each do |opt|
|
26
461
|
ScratchPad.clear
|
27
462
|
|
28
|
-
@options.
|
463
|
+
@options.configure { |x| ScratchPad.record x }
|
29
464
|
@options.parse [opt, "file"]
|
30
465
|
ScratchPad.recorded.should == "file"
|
31
466
|
end
|
@@ -42,15 +477,15 @@ describe "The -n, --name RUBY_NAME option" do
|
|
42
477
|
$VERBOSE = @verbose
|
43
478
|
end
|
44
479
|
|
45
|
-
it "is enabled with #
|
46
|
-
@options.should_receive(:on).with("-n", "--name RUBY_NAME",
|
47
|
-
|
48
|
-
@options.
|
480
|
+
it "is enabled with #name" do
|
481
|
+
@options.should_receive(:on).with("-n", "--name", "RUBY_NAME",
|
482
|
+
an_instance_of(String))
|
483
|
+
@options.name
|
49
484
|
end
|
50
485
|
|
51
486
|
it "sets RUBY_NAME when invoked" do
|
52
487
|
Object.should_receive(:const_set).with(:RUBY_NAME, "name").twice
|
53
|
-
@options.
|
488
|
+
@options.name
|
54
489
|
@options.parse ["-n", "name"]
|
55
490
|
@options.parse ["--name", "name"]
|
56
491
|
end
|
@@ -59,21 +494,20 @@ end
|
|
59
494
|
describe "The -t, --target TARGET option" do
|
60
495
|
before :each do
|
61
496
|
@options, @config = new_option
|
62
|
-
@options.
|
497
|
+
@options.targets
|
63
498
|
end
|
64
499
|
|
65
|
-
it "is enabled with #
|
500
|
+
it "is enabled with #targets" do
|
66
501
|
@options.stub!(:on)
|
67
|
-
@options.should_receive(:on).with("-t", "--target TARGET",
|
68
|
-
|
69
|
-
@options.
|
502
|
+
@options.should_receive(:on).with("-t", "--target", "TARGET",
|
503
|
+
an_instance_of(String))
|
504
|
+
@options.targets
|
70
505
|
end
|
71
506
|
|
72
507
|
it "sets the target to 'ruby' and flags to verbose with TARGET 'ruby'" do
|
73
508
|
["-t", "--target"].each do |opt|
|
74
509
|
@options.parse [opt, "ruby"]
|
75
510
|
@config[:target].should == "ruby"
|
76
|
-
@config[:flags].should include("-v")
|
77
511
|
end
|
78
512
|
end
|
79
513
|
|
@@ -99,7 +533,7 @@ describe "The -t, --target TARGET option" do
|
|
99
533
|
["-t", "--target"].each do |opt|
|
100
534
|
["x", "rubinius"].each do |t|
|
101
535
|
@options.parse [opt, t]
|
102
|
-
@config[:target].should == "
|
536
|
+
@config[:target].should == "./bin/rbx"
|
103
537
|
end
|
104
538
|
end
|
105
539
|
end
|
@@ -124,14 +558,14 @@ end
|
|
124
558
|
describe "The -T, --target-opt OPT option" do
|
125
559
|
before :each do
|
126
560
|
@options, @config = new_option
|
127
|
-
@options.
|
561
|
+
@options.targets
|
128
562
|
end
|
129
563
|
|
130
|
-
it "is enabled with #
|
564
|
+
it "is enabled with #targets" do
|
131
565
|
@options.stub!(:on)
|
132
|
-
@options.should_receive(:on).with("-T", "--target-opt OPT",
|
133
|
-
|
134
|
-
@options.
|
566
|
+
@options.should_receive(:on).with("-T", "--target-opt", "OPT",
|
567
|
+
an_instance_of(String))
|
568
|
+
@options.targets
|
135
569
|
end
|
136
570
|
|
137
571
|
it "adds OPT to flags" do
|
@@ -146,14 +580,14 @@ end
|
|
146
580
|
describe "The -I, --include DIR option" do
|
147
581
|
before :each do
|
148
582
|
@options, @config = new_option
|
149
|
-
@options.
|
583
|
+
@options.targets
|
150
584
|
end
|
151
585
|
|
152
|
-
it "is enabled with #
|
586
|
+
it "is enabled with #targets" do
|
153
587
|
@options.stub!(:on)
|
154
|
-
@options.should_receive(:on).with("-I", "--include DIR",
|
155
|
-
|
156
|
-
@options.
|
588
|
+
@options.should_receive(:on).with("-I", "--include", "DIR",
|
589
|
+
an_instance_of(String))
|
590
|
+
@options.targets
|
157
591
|
end
|
158
592
|
|
159
593
|
it "add DIR to the includes list" do
|
@@ -168,14 +602,14 @@ end
|
|
168
602
|
describe "The -r, --require LIBRARY option" do
|
169
603
|
before :each do
|
170
604
|
@options, @config = new_option
|
171
|
-
@options.
|
605
|
+
@options.targets
|
172
606
|
end
|
173
607
|
|
174
|
-
it "is enabled with #
|
608
|
+
it "is enabled with #targets" do
|
175
609
|
@options.stub!(:on)
|
176
|
-
@options.should_receive(:on).with("-r", "--require LIBRARY",
|
177
|
-
|
178
|
-
@options.
|
610
|
+
@options.should_receive(:on).with("-r", "--require", "LIBRARY",
|
611
|
+
an_instance_of(String))
|
612
|
+
@options.targets
|
179
613
|
end
|
180
614
|
|
181
615
|
it "adds LIBRARY to the requires list" do
|
@@ -190,14 +624,14 @@ end
|
|
190
624
|
describe "The -f, --format FORMAT option" do
|
191
625
|
before :each do
|
192
626
|
@options, @config = new_option
|
193
|
-
@options.
|
627
|
+
@options.formatters
|
194
628
|
end
|
195
629
|
|
196
|
-
it "is enabled with #
|
630
|
+
it "is enabled with #formatters" do
|
197
631
|
@options.stub!(:on)
|
198
|
-
@options.should_receive(:on).with("-f", "--format FORMAT",
|
199
|
-
|
200
|
-
@options.
|
632
|
+
@options.should_receive(:on).with("-f", "--format", "FORMAT",
|
633
|
+
an_instance_of(String))
|
634
|
+
@options.formatters
|
201
635
|
end
|
202
636
|
|
203
637
|
it "sets the SpecdocFormatter with FORMAT 's' or 'specdoc'" do
|
@@ -264,14 +698,14 @@ end
|
|
264
698
|
describe "The -o, --output FILE option" do
|
265
699
|
before :each do
|
266
700
|
@options, @config = new_option
|
267
|
-
@options.
|
701
|
+
@options.formatters
|
268
702
|
end
|
269
703
|
|
270
|
-
it "is enabled with #
|
704
|
+
it "is enabled with #formatters" do
|
271
705
|
@options.stub!(:on)
|
272
|
-
@options.should_receive(:on).with("-o", "--output FILE",
|
273
|
-
|
274
|
-
@options.
|
706
|
+
@options.should_receive(:on).with("-o", "--output", "FILE",
|
707
|
+
an_instance_of(String))
|
708
|
+
@options.formatters
|
275
709
|
end
|
276
710
|
|
277
711
|
it "sets the output to FILE" do
|
@@ -286,14 +720,14 @@ end
|
|
286
720
|
describe "The -e, --example STR" do
|
287
721
|
before :each do
|
288
722
|
@options, @config = new_option
|
289
|
-
@options.
|
723
|
+
@options.filters
|
290
724
|
end
|
291
725
|
|
292
|
-
it "is enabled with #
|
726
|
+
it "is enabled with #filters" do
|
293
727
|
@options.stub!(:on)
|
294
|
-
@options.should_receive(:on).with("-e", "--example STR",
|
295
|
-
|
296
|
-
@options.
|
728
|
+
@options.should_receive(:on).with("-e", "--example", "STR",
|
729
|
+
an_instance_of(String))
|
730
|
+
@options.filters
|
297
731
|
end
|
298
732
|
|
299
733
|
it "adds STR to the includes list" do
|
@@ -308,14 +742,14 @@ end
|
|
308
742
|
describe "The -E, --exclude STR" do
|
309
743
|
before :each do
|
310
744
|
@options, @config = new_option
|
311
|
-
@options.
|
745
|
+
@options.filters
|
312
746
|
end
|
313
747
|
|
314
|
-
it "is enabled with #
|
748
|
+
it "is enabled with #filters" do
|
315
749
|
@options.stub!(:on)
|
316
|
-
@options.should_receive(:on).with("-E", "--exclude STR",
|
317
|
-
|
318
|
-
@options.
|
750
|
+
@options.should_receive(:on).with("-E", "--exclude", "STR",
|
751
|
+
an_instance_of(String))
|
752
|
+
@options.filters
|
319
753
|
end
|
320
754
|
|
321
755
|
it "adds STR to the excludes list" do
|
@@ -330,14 +764,14 @@ end
|
|
330
764
|
describe "The -p, --pattern PATTERN" do
|
331
765
|
before :each do
|
332
766
|
@options, @config = new_option
|
333
|
-
@options.
|
767
|
+
@options.filters
|
334
768
|
end
|
335
769
|
|
336
|
-
it "is enabled with #
|
770
|
+
it "is enabled with #filters" do
|
337
771
|
@options.stub!(:on)
|
338
|
-
@options.should_receive(:on).with("-p", "--pattern PATTERN",
|
339
|
-
|
340
|
-
@options.
|
772
|
+
@options.should_receive(:on).with("-p", "--pattern", "PATTERN",
|
773
|
+
an_instance_of(String))
|
774
|
+
@options.filters
|
341
775
|
end
|
342
776
|
|
343
777
|
it "adds PATTERN to the included patterns list" do
|
@@ -352,14 +786,14 @@ end
|
|
352
786
|
describe "The -P, --excl-pattern PATTERN" do
|
353
787
|
before :each do
|
354
788
|
@options, @config = new_option
|
355
|
-
@options.
|
789
|
+
@options.filters
|
356
790
|
end
|
357
791
|
|
358
|
-
it "is enabled with #
|
792
|
+
it "is enabled with #filters" do
|
359
793
|
@options.stub!(:on)
|
360
|
-
@options.should_receive(:on).with("-P", "--excl-pattern PATTERN",
|
361
|
-
|
362
|
-
@options.
|
794
|
+
@options.should_receive(:on).with("-P", "--excl-pattern", "PATTERN",
|
795
|
+
an_instance_of(String))
|
796
|
+
@options.filters
|
363
797
|
end
|
364
798
|
|
365
799
|
it "adds PATTERN to the excluded patterns list" do
|
@@ -374,14 +808,14 @@ end
|
|
374
808
|
describe "The -g, --tag TAG" do
|
375
809
|
before :each do
|
376
810
|
@options, @config = new_option
|
377
|
-
@options.
|
811
|
+
@options.filters
|
378
812
|
end
|
379
813
|
|
380
|
-
it "is enabled with #
|
814
|
+
it "is enabled with #filters" do
|
381
815
|
@options.stub!(:on)
|
382
|
-
@options.should_receive(:on).with("-g", "--tag TAG",
|
383
|
-
|
384
|
-
@options.
|
816
|
+
@options.should_receive(:on).with("-g", "--tag", "TAG",
|
817
|
+
an_instance_of(String))
|
818
|
+
@options.filters
|
385
819
|
end
|
386
820
|
|
387
821
|
it "adds TAG to the included tags list" do
|
@@ -396,14 +830,14 @@ end
|
|
396
830
|
describe "The -G, --excl-tag TAG" do
|
397
831
|
before :each do
|
398
832
|
@options, @config = new_option
|
399
|
-
@options.
|
833
|
+
@options.filters
|
400
834
|
end
|
401
835
|
|
402
|
-
it "is enabled with #
|
836
|
+
it "is enabled with #filters" do
|
403
837
|
@options.stub!(:on)
|
404
|
-
@options.should_receive(:on).with("-G", "--excl-tag TAG",
|
405
|
-
|
406
|
-
@options.
|
838
|
+
@options.should_receive(:on).with("-G", "--excl-tag", "TAG",
|
839
|
+
an_instance_of(String))
|
840
|
+
@options.filters
|
407
841
|
end
|
408
842
|
|
409
843
|
it "adds TAG to the excluded tags list" do
|
@@ -418,14 +852,14 @@ end
|
|
418
852
|
describe "The -w, --profile FILE option" do
|
419
853
|
before :each do
|
420
854
|
@options, @config = new_option
|
421
|
-
@options.
|
855
|
+
@options.filters
|
422
856
|
end
|
423
857
|
|
424
|
-
it "is enabled with #
|
858
|
+
it "is enabled with #filters" do
|
425
859
|
@options.stub!(:on)
|
426
|
-
@options.should_receive(:on).with("-w", "--profile FILE",
|
427
|
-
|
428
|
-
@options.
|
860
|
+
@options.should_receive(:on).with("-w", "--profile", "FILE",
|
861
|
+
an_instance_of(String))
|
862
|
+
@options.filters
|
429
863
|
end
|
430
864
|
|
431
865
|
it "adds FILE to the included profiles list" do
|
@@ -440,14 +874,14 @@ end
|
|
440
874
|
describe "The -W, --excl-profile FILE option" do
|
441
875
|
before :each do
|
442
876
|
@options, @config = new_option
|
443
|
-
@options.
|
877
|
+
@options.filters
|
444
878
|
end
|
445
879
|
|
446
|
-
it "is enabled with #
|
880
|
+
it "is enabled with #filters" do
|
447
881
|
@options.stub!(:on)
|
448
|
-
@options.should_receive(:on).with("-W", "--excl-profile FILE",
|
449
|
-
|
450
|
-
@options.
|
882
|
+
@options.should_receive(:on).with("-W", "--excl-profile", "FILE",
|
883
|
+
an_instance_of(String))
|
884
|
+
@options.filters
|
451
885
|
end
|
452
886
|
|
453
887
|
it "adds FILE to the excluded profiles list" do
|
@@ -462,12 +896,12 @@ end
|
|
462
896
|
describe "The -Z", "--dry-run option" do
|
463
897
|
before :each do
|
464
898
|
@options, @config = new_option
|
465
|
-
@options.
|
899
|
+
@options.pretend
|
466
900
|
end
|
467
901
|
|
468
|
-
it "is enabled with #
|
902
|
+
it "is enabled with #pretend" do
|
469
903
|
@options.should_receive(:on).with("-Z", "--dry-run", an_instance_of(String))
|
470
|
-
@options.
|
904
|
+
@options.pretend
|
471
905
|
end
|
472
906
|
|
473
907
|
it "registers the MSpec pretend mode" do
|
@@ -481,12 +915,12 @@ end
|
|
481
915
|
describe "The -H, --random option" do
|
482
916
|
before :each do
|
483
917
|
@options, @config = new_option
|
484
|
-
@options.
|
918
|
+
@options.randomize
|
485
919
|
end
|
486
920
|
|
487
|
-
it "is enabled with #
|
921
|
+
it "is enabled with #randomize" do
|
488
922
|
@options.should_receive(:on).with("-H", "--random", an_instance_of(String))
|
489
|
-
@options.
|
923
|
+
@options.randomize
|
490
924
|
end
|
491
925
|
|
492
926
|
it "registers the MSpec randomize mode" do
|
@@ -500,13 +934,13 @@ end
|
|
500
934
|
describe "The -V, --verbose option" do
|
501
935
|
before :each do
|
502
936
|
@options, @config = new_option
|
503
|
-
@options.
|
937
|
+
@options.verbose
|
504
938
|
end
|
505
939
|
|
506
|
-
it "is enabled with #
|
940
|
+
it "is enabled with #verbose" do
|
507
941
|
@options.stub!(:on)
|
508
942
|
@options.should_receive(:on).with("-V", "--verbose", an_instance_of(String))
|
509
|
-
@options.
|
943
|
+
@options.verbose
|
510
944
|
end
|
511
945
|
|
512
946
|
it "registers a verbose output object with MSpec" do
|
@@ -521,14 +955,14 @@ end
|
|
521
955
|
describe "The -m, --marker MARKER option" do
|
522
956
|
before :each do
|
523
957
|
@options, @config = new_option
|
524
|
-
@options.
|
958
|
+
@options.verbose
|
525
959
|
end
|
526
960
|
|
527
|
-
it "is enabled with #
|
961
|
+
it "is enabled with #verbose" do
|
528
962
|
@options.stub!(:on)
|
529
|
-
@options.should_receive(:on).with("-m", "--marker MARKER",
|
530
|
-
|
531
|
-
@options.
|
963
|
+
@options.should_receive(:on).with("-m", "--marker", "MARKER",
|
964
|
+
an_instance_of(String))
|
965
|
+
@options.verbose
|
532
966
|
end
|
533
967
|
|
534
968
|
it "registers a marker output object with MSpec" do
|
@@ -542,12 +976,12 @@ end
|
|
542
976
|
describe "The --int-spec option" do
|
543
977
|
before :each do
|
544
978
|
@options, @config = new_option
|
545
|
-
@options.
|
979
|
+
@options.interrupt
|
546
980
|
end
|
547
981
|
|
548
|
-
it "is enabled with #
|
982
|
+
it "is enabled with #interrupt" do
|
549
983
|
@options.should_receive(:on).with("--int-spec", an_instance_of(String))
|
550
|
-
@options.
|
984
|
+
@options.interrupt
|
551
985
|
end
|
552
986
|
|
553
987
|
it "sets the abort config option to false to only abort the running spec with ^C" do
|
@@ -560,17 +994,17 @@ end
|
|
560
994
|
describe "The -Y, --verify option" do
|
561
995
|
before :each do
|
562
996
|
@options, @config = new_option
|
563
|
-
@options.
|
997
|
+
@options.verify
|
564
998
|
end
|
565
999
|
|
566
|
-
it "is enabled with #
|
1000
|
+
it "is enabled with #interrupt" do
|
567
1001
|
@options.stub!(:on)
|
568
1002
|
@options.should_receive(:on).with("-Y", "--verify", an_instance_of(String))
|
569
|
-
@options.
|
1003
|
+
@options.verify
|
570
1004
|
end
|
571
1005
|
|
572
1006
|
it "sets the MSpec mode to :verify" do
|
573
|
-
MSpec.should_receive(:
|
1007
|
+
MSpec.should_receive(:register_mode).with(:verify).twice
|
574
1008
|
["-Y", "--verify"].each do |m|
|
575
1009
|
@options.parse m
|
576
1010
|
end
|
@@ -580,147 +1014,34 @@ end
|
|
580
1014
|
describe "The -O, --report option" do
|
581
1015
|
before :each do
|
582
1016
|
@options, @config = new_option
|
583
|
-
@options.
|
1017
|
+
@options.verify
|
584
1018
|
end
|
585
1019
|
|
586
|
-
it "is enabled with #
|
1020
|
+
it "is enabled with #interrupt" do
|
587
1021
|
@options.stub!(:on)
|
588
1022
|
@options.should_receive(:on).with("-O", "--report", an_instance_of(String))
|
589
|
-
@options.
|
1023
|
+
@options.verify
|
590
1024
|
end
|
591
1025
|
|
592
1026
|
it "sets the MSpec mode to :report" do
|
593
|
-
MSpec.should_receive(:
|
1027
|
+
MSpec.should_receive(:register_mode).with(:report).twice
|
594
1028
|
["-O", "--report"].each do |m|
|
595
1029
|
@options.parse m
|
596
1030
|
end
|
597
1031
|
end
|
598
1032
|
end
|
599
1033
|
|
600
|
-
describe "The -N, --add TAG option" do
|
601
|
-
before :each do
|
602
|
-
@options, @config = new_option
|
603
|
-
@options.add_tagging
|
604
|
-
end
|
605
|
-
|
606
|
-
it "is enabled with #add_tagging" do
|
607
|
-
@options.stub!(:on)
|
608
|
-
@options.should_receive(:on).with("-N", "--add TAG",
|
609
|
-
String, an_instance_of(String))
|
610
|
-
@options.add_tagging
|
611
|
-
end
|
612
|
-
|
613
|
-
it "sets the mode to :add and sets the tag to TAG" do
|
614
|
-
["-N", "--add"].each do |opt|
|
615
|
-
@config[:tagger] = nil
|
616
|
-
@config[:tag] = nil
|
617
|
-
@options.parse [opt, "taggit"]
|
618
|
-
@config[:tagger].should == :add
|
619
|
-
@config[:tag].should == "taggit:"
|
620
|
-
end
|
621
|
-
end
|
622
|
-
end
|
623
|
-
|
624
|
-
describe "The -R, --del TAG option" do
|
625
|
-
before :each do
|
626
|
-
@options, @config = new_option
|
627
|
-
@options.add_tagging
|
628
|
-
end
|
629
|
-
|
630
|
-
it "is enabled with #add_tagging" do
|
631
|
-
@options.stub!(:on)
|
632
|
-
@options.should_receive(:on).with("-R", "--del TAG",
|
633
|
-
String, an_instance_of(String))
|
634
|
-
@options.add_tagging
|
635
|
-
end
|
636
|
-
|
637
|
-
it "it sets the mode to :del, the tag to TAG, and the outcome to :pass" do
|
638
|
-
["-R", "--del"].each do |opt|
|
639
|
-
@config[:tagger] = nil
|
640
|
-
@config[:tag] = nil
|
641
|
-
@config[:outcome] = nil
|
642
|
-
@options.parse [opt, "taggit"]
|
643
|
-
@config[:tagger].should == :del
|
644
|
-
@config[:tag].should == "taggit:"
|
645
|
-
@config[:outcome].should == :pass
|
646
|
-
end
|
647
|
-
end
|
648
|
-
end
|
649
|
-
|
650
|
-
describe "The -Q, --pass option" do
|
651
|
-
before :each do
|
652
|
-
@options, @config = new_option
|
653
|
-
@options.add_tagging
|
654
|
-
end
|
655
|
-
|
656
|
-
it "is enabled with #add_tagging" do
|
657
|
-
@options.stub!(:on)
|
658
|
-
@options.should_receive(:on).with("-Q", "--pass", an_instance_of(String))
|
659
|
-
@options.add_tagging
|
660
|
-
end
|
661
|
-
|
662
|
-
it "sets the outcome to :pass" do
|
663
|
-
["-Q", "--pass"].each do |opt|
|
664
|
-
@config[:outcome] = nil
|
665
|
-
@options.parse opt
|
666
|
-
@config[:outcome].should == :pass
|
667
|
-
end
|
668
|
-
end
|
669
|
-
end
|
670
|
-
|
671
|
-
describe "The -F, --fail option" do
|
672
|
-
before :each do
|
673
|
-
@options, @config = new_option
|
674
|
-
@options.add_tagging
|
675
|
-
end
|
676
|
-
|
677
|
-
it "is enabled with #add_tagging" do
|
678
|
-
@options.stub!(:on)
|
679
|
-
@options.should_receive(:on).with("-F", "--fail", an_instance_of(String))
|
680
|
-
@options.add_tagging
|
681
|
-
end
|
682
|
-
|
683
|
-
it "sets the outcome to :fail" do
|
684
|
-
["-F", "--fail"].each do |opt|
|
685
|
-
@config[:outcome] = nil
|
686
|
-
@options.parse opt
|
687
|
-
@config[:outcome].should == :fail
|
688
|
-
end
|
689
|
-
end
|
690
|
-
end
|
691
|
-
|
692
|
-
describe "The -L, --all option" do
|
693
|
-
before :each do
|
694
|
-
@options, @config = new_option
|
695
|
-
@options.add_tagging
|
696
|
-
end
|
697
|
-
|
698
|
-
it "is enabled with #add_tagging" do
|
699
|
-
@options.stub!(:on)
|
700
|
-
@options.should_receive(:on).with("-L", "--all", an_instance_of(String))
|
701
|
-
@options.add_tagging
|
702
|
-
end
|
703
|
-
|
704
|
-
it "sets the outcome to :all" do
|
705
|
-
["-L", "--all"].each do |opt|
|
706
|
-
@config[:outcome] = nil
|
707
|
-
@options.parse opt
|
708
|
-
@config[:outcome].should == :all
|
709
|
-
end
|
710
|
-
end
|
711
|
-
end
|
712
|
-
|
713
1034
|
describe "The -K, --action-tag TAG option" do
|
714
1035
|
before :each do
|
715
1036
|
@options, @config = new_option
|
716
|
-
@options.
|
1037
|
+
@options.action_filters
|
717
1038
|
end
|
718
1039
|
|
719
|
-
it "is enabled with #
|
1040
|
+
it "is enabled with #action_filters" do
|
720
1041
|
@options.stub!(:on)
|
721
|
-
@options.should_receive(:on).with("-K", "--action-tag TAG",
|
722
|
-
|
723
|
-
@options.
|
1042
|
+
@options.should_receive(:on).with("-K", "--action-tag", "TAG",
|
1043
|
+
an_instance_of(String))
|
1044
|
+
@options.action_filters
|
724
1045
|
end
|
725
1046
|
|
726
1047
|
it "adds TAG to the list of tags that trigger actions" do
|
@@ -735,14 +1056,14 @@ end
|
|
735
1056
|
describe "The -S, --action-string STR option" do
|
736
1057
|
before :each do
|
737
1058
|
@options, @config = new_option
|
738
|
-
@options.
|
1059
|
+
@options.action_filters
|
739
1060
|
end
|
740
1061
|
|
741
|
-
it "is enabled with #
|
1062
|
+
it "is enabled with #action_filters" do
|
742
1063
|
@options.stub!(:on)
|
743
|
-
@options.should_receive(:on).with("-S", "--action-string STR",
|
744
|
-
|
745
|
-
@options.
|
1064
|
+
@options.should_receive(:on).with("-S", "--action-string", "STR",
|
1065
|
+
an_instance_of(String))
|
1066
|
+
@options.action_filters
|
746
1067
|
end
|
747
1068
|
|
748
1069
|
it "adds STR to the list of spec descriptions that trigger actions" do
|
@@ -757,17 +1078,17 @@ end
|
|
757
1078
|
describe "The --spec-debug option" do
|
758
1079
|
before :each do
|
759
1080
|
@options, @config = new_option
|
760
|
-
@options.
|
1081
|
+
@options.actions
|
761
1082
|
end
|
762
1083
|
|
763
|
-
it "is enabled with #
|
1084
|
+
it "is enabled with #actions" do
|
764
1085
|
@options.stub!(:on)
|
765
1086
|
@options.should_receive(:on).with("--spec-debug", an_instance_of(String))
|
766
|
-
@options.
|
1087
|
+
@options.actions
|
767
1088
|
end
|
768
1089
|
|
769
1090
|
it "enables the triggering the ruby debugger" do
|
770
|
-
@options.
|
1091
|
+
@options.action_filters
|
771
1092
|
@options.parse ["-S", "some spec"]
|
772
1093
|
|
773
1094
|
@config[:debugger] = nil
|
@@ -779,17 +1100,17 @@ end
|
|
779
1100
|
describe "The --spec-gdb option" do
|
780
1101
|
before :each do
|
781
1102
|
@options, @config = new_option
|
782
|
-
@options.
|
1103
|
+
@options.actions
|
783
1104
|
end
|
784
1105
|
|
785
|
-
it "is enabled with #
|
1106
|
+
it "is enabled with #actions" do
|
786
1107
|
@options.stub!(:on)
|
787
1108
|
@options.should_receive(:on).with("--spec-gdb", an_instance_of(String))
|
788
|
-
@options.
|
1109
|
+
@options.actions
|
789
1110
|
end
|
790
1111
|
|
791
1112
|
it "enables triggering the gdb debugger" do
|
792
|
-
@options.
|
1113
|
+
@options.action_filters
|
793
1114
|
@options.parse ["-S", "some spec"]
|
794
1115
|
|
795
1116
|
@config[:gdb] = nil
|
@@ -797,45 +1118,3 @@ describe "The --spec-gdb option" do
|
|
797
1118
|
@config[:gdb].should == true
|
798
1119
|
end
|
799
1120
|
end
|
800
|
-
|
801
|
-
describe "The -v, --version option" do
|
802
|
-
before :each do
|
803
|
-
@options, @config = new_option
|
804
|
-
@options.add_version
|
805
|
-
end
|
806
|
-
|
807
|
-
it "is enabled with #add_version" do
|
808
|
-
@options.stub!(:on)
|
809
|
-
@options.should_receive(:on).with("-v", "--version", an_instance_of(String))
|
810
|
-
@options.add_version
|
811
|
-
end
|
812
|
-
|
813
|
-
it "prints the version and exits" do
|
814
|
-
@options.should_receive(:puts).twice
|
815
|
-
@options.should_receive(:exit).twice
|
816
|
-
["-v", "--version"].each do |opt|
|
817
|
-
@options.parse opt
|
818
|
-
end
|
819
|
-
end
|
820
|
-
end
|
821
|
-
|
822
|
-
describe "The -h, --help option" do
|
823
|
-
before :each do
|
824
|
-
@options, @config = new_option
|
825
|
-
@options.add_help
|
826
|
-
end
|
827
|
-
|
828
|
-
it "is enabled with #add_help" do
|
829
|
-
@options.stub!(:on)
|
830
|
-
@options.should_receive(:on).with("-h", "--help", an_instance_of(String))
|
831
|
-
@options.add_help
|
832
|
-
end
|
833
|
-
|
834
|
-
it "prints help and exits" do
|
835
|
-
@options.should_receive(:puts).twice
|
836
|
-
@options.should_receive(:exit).twice
|
837
|
-
["-h", "--help"].each do |opt|
|
838
|
-
@options.parse opt
|
839
|
-
end
|
840
|
-
end
|
841
|
-
end
|