thor 0.14.4 → 0.14.5

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.
@@ -12,94 +12,94 @@ describe Thor::Base do
12
12
  describe "#initialize" do
13
13
  it "sets arguments array" do
14
14
  base = MyCounter.new [1, 2]
15
- base.first.must == 1
16
- base.second.must == 2
15
+ base.first.should == 1
16
+ base.second.should == 2
17
17
  end
18
18
 
19
19
  it "sets arguments default values" do
20
20
  base = MyCounter.new [1]
21
- base.second.must == 2
21
+ base.second.should == 2
22
22
  end
23
23
 
24
24
  it "sets options default values" do
25
25
  base = MyCounter.new [1, 2]
26
- base.options[:third].must == 3
26
+ base.options[:third].should == 3
27
27
  end
28
28
 
29
29
  it "allows options to be given as symbols or strings" do
30
30
  base = MyCounter.new [1, 2], :third => 4
31
- base.options[:third].must == 4
31
+ base.options[:third].should == 4
32
32
 
33
33
  base = MyCounter.new [1, 2], "third" => 4
34
- base.options[:third].must == 4
34
+ base.options[:third].should == 4
35
35
  end
36
36
 
37
37
  it "creates options with indifferent access" do
38
38
  base = MyCounter.new [1, 2], :third => 3
39
- base.options['third'].must == 3
39
+ base.options['third'].should == 3
40
40
  end
41
41
 
42
42
  it "creates options with magic predicates" do
43
43
  base = MyCounter.new [1, 2], :third => 3
44
- base.options.third.must == 3
44
+ base.options.third.should == 3
45
45
  end
46
46
  end
47
47
 
48
48
  describe "#no_tasks" do
49
49
  it "avoids methods being added as tasks" do
50
- MyScript.tasks.keys.must include("animal")
51
- MyScript.tasks.keys.must_not include("this_is_not_a_task")
50
+ MyScript.tasks.keys.should include("animal")
51
+ MyScript.tasks.keys.should_not include("this_is_not_a_task")
52
52
  end
53
53
  end
54
54
 
55
55
  describe "#argument" do
56
56
  it "sets a value as required and creates an accessor for it" do
57
- MyCounter.start(["1", "2", "--third", "3"])[0].must == 1
58
- Scripts::MyScript.start(["zoo", "my_special_param", "--param=normal_param"]).must == "my_special_param"
57
+ MyCounter.start(["1", "2", "--third", "3"])[0].should == 1
58
+ Scripts::MyScript.start(["zoo", "my_special_param", "--param=normal_param"]).should == "my_special_param"
59
59
  end
60
60
 
61
61
  it "does not set a value in the options hash" do
62
- BrokenCounter.start(["1", "2", "--third", "3"])[0].must be_nil
62
+ BrokenCounter.start(["1", "2", "--third", "3"])[0].should be_nil
63
63
  end
64
64
  end
65
65
 
66
66
  describe "#arguments" do
67
67
  it "returns the arguments for the class" do
68
- MyCounter.arguments.must have(2).items
68
+ MyCounter.arguments.should have(2).items
69
69
  end
70
70
  end
71
71
 
72
72
  describe "#class_option" do
73
73
  it "sets options class wise" do
74
- MyCounter.start(["1", "2", "--third", "3"])[2].must == 3
74
+ MyCounter.start(["1", "2", "--third", "3"])[2].should == 3
75
75
  end
76
76
 
77
77
  it "does not create an accessor for it" do
78
- BrokenCounter.start(["1", "2", "--third", "3"])[3].must be_false
78
+ BrokenCounter.start(["1", "2", "--third", "3"])[3].should be_false
79
79
  end
80
80
  end
81
81
 
82
82
  describe "#class_options" do
83
83
  it "sets default options overwriting superclass definitions" do
84
84
  options = Scripts::MyScript.class_options
85
- options[:force].must_not be_required
85
+ options[:force].should_not be_required
86
86
  end
87
87
  end
88
88
 
89
89
  describe "#remove_argument" do
90
90
  it "removes previous defined arguments from class" do
91
- ClearCounter.arguments.must be_empty
91
+ ClearCounter.arguments.should be_empty
92
92
  end
93
93
 
94
94
  it "undefine accessors if required" do
95
- ClearCounter.new.must_not respond_to(:first)
96
- ClearCounter.new.must_not respond_to(:second)
95
+ ClearCounter.new.should_not respond_to(:first)
96
+ ClearCounter.new.should_not respond_to(:second)
97
97
  end
98
98
  end
99
99
 
100
100
  describe "#remove_class_option" do
101
101
  it "removes previous defined class option" do
102
- ClearCounter.class_options[:third].must be_nil
102
+ ClearCounter.class_options[:third].should be_nil
103
103
  end
104
104
  end
105
105
 
@@ -109,73 +109,73 @@ describe Thor::Base do
109
109
  end
110
110
 
111
111
  it "shows options description" do
112
- @content.must =~ /# The third argument/
112
+ @content.should =~ /# The third argument/
113
113
  end
114
114
 
115
115
  it "shows usage with banner content" do
116
- @content.must =~ /\[\-\-third=THREE\]/
116
+ @content.should =~ /\[\-\-third=THREE\]/
117
117
  end
118
118
 
119
119
  it "shows default values below description" do
120
- @content.must =~ /# Default: 3/
120
+ @content.should =~ /# Default: 3/
121
121
  end
122
122
 
123
123
  it "shows options in different groups" do
124
- @content.must =~ /Options\:/
125
- @content.must =~ /Runtime options\:/
126
- @content.must =~ /\-p, \[\-\-pretend\]/
124
+ @content.should =~ /Options\:/
125
+ @content.should =~ /Runtime options\:/
126
+ @content.should =~ /\-p, \[\-\-pretend\]/
127
127
  end
128
128
 
129
129
  it "use padding in options that does not have aliases" do
130
- @content.must =~ /^ -t, \[--third/
131
- @content.must =~ /^ \[--fourth/
130
+ @content.should =~ /^ -t, \[--third/
131
+ @content.should =~ /^ \[--fourth/
132
132
  end
133
133
 
134
134
  it "allows extra options to be given" do
135
135
  hash = { "Foo" => B.class_options.values }
136
136
 
137
137
  content = capture(:stdout) { MyCounter.send(:class_options_help, Thor::Base.shell.new, hash) }
138
- content.must =~ /Foo options\:/
139
- content.must =~ /--last-name=LAST_NAME/
138
+ content.should =~ /Foo options\:/
139
+ content.should =~ /--last-name=LAST_NAME/
140
140
  end
141
141
  end
142
142
 
143
143
  describe "#namespace" do
144
144
  it "returns the default class namespace" do
145
- Scripts::MyScript.namespace.must == "scripts:my_script"
145
+ Scripts::MyScript.namespace.should == "scripts:my_script"
146
146
  end
147
147
 
148
148
  it "sets a namespace to the class" do
149
- Scripts::MyDefaults.namespace.must == "default"
149
+ Scripts::MyDefaults.namespace.should == "default"
150
150
  end
151
151
  end
152
152
 
153
153
  describe "#group" do
154
154
  it "sets a group" do
155
- MyScript.group.must == "script"
155
+ MyScript.group.should == "script"
156
156
  end
157
157
 
158
158
  it "inherits the group from parent" do
159
- MyChildScript.group.must == "script"
159
+ MyChildScript.group.should == "script"
160
160
  end
161
161
 
162
162
  it "defaults to standard if no group is given" do
163
- Amazing.group.must == "standard"
163
+ Amazing.group.should == "standard"
164
164
  end
165
165
  end
166
166
 
167
167
  describe "#subclasses" do
168
168
  it "tracks its subclasses in an Array" do
169
- Thor::Base.subclasses.must include(MyScript)
170
- Thor::Base.subclasses.must include(MyChildScript)
171
- Thor::Base.subclasses.must include(Scripts::MyScript)
169
+ Thor::Base.subclasses.should include(MyScript)
170
+ Thor::Base.subclasses.should include(MyChildScript)
171
+ Thor::Base.subclasses.should include(Scripts::MyScript)
172
172
  end
173
173
  end
174
174
 
175
175
  describe "#subclass_files" do
176
176
  it "returns tracked subclasses, grouped by the files they come from" do
177
177
  thorfile = File.join(File.dirname(__FILE__), "fixtures", "script.thor")
178
- Thor::Base.subclass_files[File.expand_path(thorfile)].must == [
178
+ Thor::Base.subclass_files[File.expand_path(thorfile)].should == [
179
179
  MyScript, MyScript::AnotherScript, MyChildScript, Barn,
180
180
  Scripts::MyScript, Scripts::MyDefaults, Scripts::ChildDefault
181
181
  ]
@@ -183,46 +183,46 @@ describe Thor::Base do
183
183
 
184
184
  it "tracks a single subclass across multiple files" do
185
185
  thorfile = File.join(File.dirname(__FILE__), "fixtures", "task.thor")
186
- Thor::Base.subclass_files[File.expand_path(thorfile)].must include(Amazing)
187
- Thor::Base.subclass_files[File.expand_path(__FILE__)].must include(Amazing)
186
+ Thor::Base.subclass_files[File.expand_path(thorfile)].should include(Amazing)
187
+ Thor::Base.subclass_files[File.expand_path(__FILE__)].should include(Amazing)
188
188
  end
189
189
  end
190
190
 
191
191
  describe "#tasks" do
192
192
  it "returns a list with all tasks defined in this class" do
193
- MyChildScript.new.must respond_to("animal")
194
- MyChildScript.tasks.keys.must include("animal")
193
+ MyChildScript.new.should respond_to("animal")
194
+ MyChildScript.tasks.keys.should include("animal")
195
195
  end
196
196
 
197
197
  it "raises an error if a task with reserved word is defined" do
198
198
  lambda {
199
199
  klass = Class.new(Thor::Group)
200
200
  klass.class_eval "def shell; end"
201
- }.must raise_error(RuntimeError, /"shell" is a Thor reserved word and cannot be defined as task/)
201
+ }.should raise_error(RuntimeError, /"shell" is a Thor reserved word and cannot be defined as task/)
202
202
  end
203
203
  end
204
204
 
205
205
  describe "#all_tasks" do
206
206
  it "returns a list with all tasks defined in this class plus superclasses" do
207
- MyChildScript.new.must respond_to("foo")
208
- MyChildScript.all_tasks.keys.must include("foo")
207
+ MyChildScript.new.should respond_to("foo")
208
+ MyChildScript.all_tasks.keys.should include("foo")
209
209
  end
210
210
  end
211
211
 
212
212
  describe "#remove_task" do
213
213
  it "removes the task from its tasks hash" do
214
- MyChildScript.tasks.keys.must_not include("bar")
215
- MyChildScript.tasks.keys.must_not include("boom")
214
+ MyChildScript.tasks.keys.should_not include("bar")
215
+ MyChildScript.tasks.keys.should_not include("boom")
216
216
  end
217
217
 
218
218
  it "undefines the method if desired" do
219
- MyChildScript.new.must_not respond_to("boom")
219
+ MyChildScript.new.should_not respond_to("boom")
220
220
  end
221
221
  end
222
222
 
223
223
  describe "#from_superclass" do
224
224
  it "does not send a method to the superclass if the superclass does not respond to it" do
225
- MyCounter.get_from_super.must == 13
225
+ MyCounter.get_from_super.should == 13
226
226
  end
227
227
  end
228
228
 
@@ -230,40 +230,40 @@ describe Thor::Base do
230
230
  it "raises an error instead of rescueing if --debug is given" do
231
231
  lambda {
232
232
  MyScript.start ["what", "--debug"]
233
- }.must raise_error(Thor::UndefinedTaskError, 'Could not find task "what" in "my_script" namespace.')
233
+ }.should raise_error(Thor::UndefinedTaskError, 'Could not find task "what" in "my_script" namespace.')
234
234
  end
235
235
 
236
236
  it "does not steal args" do
237
237
  args = ["foo", "bar", "--force", "true"]
238
238
  MyScript.start(args)
239
- args.must == ["foo", "bar", "--force", "true"]
239
+ args.should == ["foo", "bar", "--force", "true"]
240
240
  end
241
241
 
242
242
  it "checks unknown options" do
243
243
  capture(:stderr) {
244
244
  MyScript.start(["foo", "bar", "--force", "true", "--unknown", "baz"])
245
- }.strip.must == "Unknown switches '--unknown'"
245
+ }.strip.should == "Unknown switches '--unknown'"
246
246
  end
247
247
 
248
248
  it "checks unknown options except specified" do
249
249
  capture(:stderr) {
250
- MyScript.start(["with_optional", "NAME", "--omg", "--invalid"]).must == ["NAME", {}]
251
- }.strip.must be_empty
250
+ MyScript.start(["with_optional", "NAME", "--omg", "--invalid"]).should == ["NAME", {}]
251
+ }.strip.should be_empty
252
252
  end
253
253
  end
254
254
 
255
255
  describe "attr_*" do
256
256
  it "should not add attr_reader as a task" do
257
- capture(:stderr){ MyScript.start(["another_attribute"]) }.must =~ /Could not find/
257
+ capture(:stderr){ MyScript.start(["another_attribute"]) }.should =~ /Could not find/
258
258
  end
259
259
 
260
260
  it "should not add attr_writer as a task" do
261
- capture(:stderr){ MyScript.start(["another_attribute=", "foo"]) }.must =~ /Could not find/
261
+ capture(:stderr){ MyScript.start(["another_attribute=", "foo"]) }.should =~ /Could not find/
262
262
  end
263
263
 
264
264
  it "should not add attr_accessor as a task" do
265
- capture(:stderr){ MyScript.start(["some_attribute"]) }.must =~ /Could not find/
266
- capture(:stderr){ MyScript.start(["some_attribute=", "foo"]) }.must =~ /Could not find/
265
+ capture(:stderr){ MyScript.start(["some_attribute"]) }.should =~ /Could not find/
266
+ capture(:stderr){ MyScript.start(["some_attribute=", "foo"]) }.should =~ /Could not find/
267
267
  end
268
268
  end
269
269
  end
@@ -7,37 +7,37 @@ describe Thor::CoreExt::HashWithIndifferentAccess do
7
7
  end
8
8
 
9
9
  it "has values accessible by either strings or symbols" do
10
- @hash['foo'].must == 'bar'
11
- @hash[:foo].must == 'bar'
10
+ @hash['foo'].should == 'bar'
11
+ @hash[:foo].should == 'bar'
12
12
 
13
- @hash.values_at(:foo, :baz).must == ['bar', 'bee']
14
- @hash.delete(:foo).must == 'bar'
13
+ @hash.values_at(:foo, :baz).should == ['bar', 'bee']
14
+ @hash.delete(:foo).should == 'bar'
15
15
  end
16
16
 
17
17
  it "handles magic boolean predicates" do
18
- @hash.force?.must be_true
19
- @hash.foo?.must be_true
20
- @hash.nothing?.must be_false
18
+ @hash.force?.should be_true
19
+ @hash.foo?.should be_true
20
+ @hash.nothing?.should be_false
21
21
  end
22
22
 
23
23
  it "handles magic comparisions" do
24
- @hash.foo?('bar').must be_true
25
- @hash.foo?('bee').must be_false
24
+ @hash.foo?('bar').should be_true
25
+ @hash.foo?('bee').should be_false
26
26
  end
27
27
 
28
28
  it "maps methods to keys" do
29
- @hash.foo.must == @hash['foo']
29
+ @hash.foo.should == @hash['foo']
30
30
  end
31
31
 
32
32
  it "merges keys independent if they are symbols or strings" do
33
33
  @hash.merge!('force' => false, :baz => "boom")
34
- @hash[:force].must == false
35
- @hash[:baz].must == "boom"
34
+ @hash[:force].should == false
35
+ @hash[:baz].should == "boom"
36
36
  end
37
37
 
38
38
  it "creates a new hash by merging keys independent if they are symbols or strings" do
39
39
  other = @hash.merge('force' => false, :baz => "boom")
40
- other[:force].must == false
41
- other[:baz].must == "boom"
40
+ other[:force].should == false
41
+ other[:baz].should == "boom"
42
42
  end
43
43
  end
@@ -8,7 +8,7 @@ describe Thor::CoreExt::OrderedHash do
8
8
 
9
9
  describe "without any items" do
10
10
  it "returns nil for an undefined key" do
11
- @hash["foo"].must be_nil
11
+ @hash["foo"].should be_nil
12
12
  end
13
13
 
14
14
  it "doesn't iterate through any items" do
@@ -16,12 +16,12 @@ describe Thor::CoreExt::OrderedHash do
16
16
  end
17
17
 
18
18
  it "has an empty key and values list" do
19
- @hash.keys.must be_empty
20
- @hash.values.must be_empty
19
+ @hash.keys.should be_empty
20
+ @hash.values.should be_empty
21
21
  end
22
22
 
23
23
  it "must be empty" do
24
- @hash.must be_empty
24
+ @hash.should be_empty
25
25
  end
26
26
  end
27
27
 
@@ -35,15 +35,15 @@ describe Thor::CoreExt::OrderedHash do
35
35
  end
36
36
 
37
37
  it "returns nil for an undefined key" do
38
- @hash[:boom].must be_nil
38
+ @hash[:boom].should be_nil
39
39
  end
40
40
 
41
41
  it "returns the value for each key" do
42
- @hash[:foo].must == "Foo!"
43
- @hash[:bar].must == "Bar!"
44
- @hash[:baz].must == "Baz!"
45
- @hash[:bop].must == "Bop!"
46
- @hash[:bat].must == "Bat!"
42
+ @hash[:foo].should == "Foo!"
43
+ @hash[:bar].should == "Bar!"
44
+ @hash[:baz].should == "Baz!"
45
+ @hash[:bop].should == "Bop!"
46
+ @hash[:bat].should == "Bat!"
47
47
  end
48
48
 
49
49
  it "iterates through the keys and values in order of assignment" do
@@ -51,27 +51,27 @@ describe Thor::CoreExt::OrderedHash do
51
51
  @hash.each do |key, value|
52
52
  arr << [key, value]
53
53
  end
54
- arr.must == [[:foo, "Foo!"], [:bar, "Bar!"], [:baz, "Baz!"],
54
+ arr.should == [[:foo, "Foo!"], [:bar, "Bar!"], [:baz, "Baz!"],
55
55
  [:bop, "Bop!"], [:bat, "Bat!"]]
56
56
  end
57
57
 
58
58
  it "returns the keys in order of insertion" do
59
- @hash.keys.must == [:foo, :bar, :baz, :bop, :bat]
59
+ @hash.keys.should == [:foo, :bar, :baz, :bop, :bat]
60
60
  end
61
61
 
62
62
  it "returns the values in order of insertion" do
63
- @hash.values.must == ["Foo!", "Bar!", "Baz!", "Bop!", "Bat!"]
63
+ @hash.values.should == ["Foo!", "Bar!", "Baz!", "Bop!", "Bat!"]
64
64
  end
65
65
 
66
66
  it "does not move an overwritten node to the end of the ordering" do
67
67
  @hash[:baz] = "Bip!"
68
- @hash.values.must == ["Foo!", "Bar!", "Bip!", "Bop!", "Bat!"]
68
+ @hash.values.should == ["Foo!", "Bar!", "Bip!", "Bop!", "Bat!"]
69
69
 
70
70
  @hash[:foo] = "Bip!"
71
- @hash.values.must == ["Bip!", "Bar!", "Bip!", "Bop!", "Bat!"]
71
+ @hash.values.should == ["Bip!", "Bar!", "Bip!", "Bop!", "Bat!"]
72
72
 
73
73
  @hash[:bat] = "Bip!"
74
- @hash.values.must == ["Bip!", "Bar!", "Bip!", "Bop!", "Bip!"]
74
+ @hash.values.should == ["Bip!", "Bar!", "Bip!", "Bop!", "Bip!"]
75
75
  end
76
76
 
77
77
  it "appends another ordered hash while preserving ordering" do
@@ -79,37 +79,37 @@ describe Thor::CoreExt::OrderedHash do
79
79
  other_hash[1] = "one"
80
80
  other_hash[2] = "two"
81
81
  other_hash[3] = "three"
82
- @hash.merge(other_hash).values.must == ["Foo!", "Bar!", "Baz!", "Bop!", "Bat!", "one", "two", "three"]
82
+ @hash.merge(other_hash).values.should == ["Foo!", "Bar!", "Baz!", "Bop!", "Bat!", "one", "two", "three"]
83
83
  end
84
84
 
85
85
  it "overwrites hash keys with matching appended keys" do
86
86
  other_hash = Thor::CoreExt::OrderedHash.new
87
87
  other_hash[:bar] = "bar"
88
- @hash.merge(other_hash)[:bar].must == "bar"
89
- @hash[:bar].must == "Bar!"
88
+ @hash.merge(other_hash)[:bar].should == "bar"
89
+ @hash[:bar].should == "Bar!"
90
90
  end
91
91
 
92
92
  it "converts to an array" do
93
- @hash.to_a.must == [[:foo, "Foo!"], [:bar, "Bar!"], [:baz, "Baz!"], [:bop, "Bop!"], [:bat, "Bat!"]]
93
+ @hash.to_a.should == [[:foo, "Foo!"], [:bar, "Bar!"], [:baz, "Baz!"], [:bop, "Bop!"], [:bat, "Bat!"]]
94
94
  end
95
95
 
96
96
  it "must not be empty" do
97
- @hash.must_not be_empty
97
+ @hash.should_not be_empty
98
98
  end
99
99
 
100
100
  it "deletes values from hash" do
101
- @hash.delete(:baz).must == "Baz!"
102
- @hash.values.must == ["Foo!", "Bar!", "Bop!", "Bat!"]
101
+ @hash.delete(:baz).should == "Baz!"
102
+ @hash.values.should == ["Foo!", "Bar!", "Bop!", "Bat!"]
103
103
 
104
- @hash.delete(:foo).must == "Foo!"
105
- @hash.values.must == ["Bar!", "Bop!", "Bat!"]
104
+ @hash.delete(:foo).should == "Foo!"
105
+ @hash.values.should == ["Bar!", "Bop!", "Bat!"]
106
106
 
107
- @hash.delete(:bat).must == "Bat!"
108
- @hash.values.must == ["Bar!", "Bop!"]
107
+ @hash.delete(:bat).should == "Bat!"
108
+ @hash.values.should == ["Bar!", "Bop!"]
109
109
  end
110
110
 
111
111
  it "returns nil if the value to be deleted can't be found" do
112
- @hash.delete(:nothing).must be_nil
112
+ @hash.delete(:nothing).should be_nil
113
113
  end
114
114
  end
115
115
  end