mspec 1.4.0 → 1.5.0
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.
- 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
|