thor 0.16.0 → 0.17.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.
Files changed (52) hide show
  1. data/.rspec +1 -0
  2. data/.travis.yml +2 -1
  3. data/CHANGELOG.rdoc +8 -0
  4. data/Gemfile +12 -8
  5. data/lib/thor.rb +79 -10
  6. data/lib/thor/actions.rb +13 -13
  7. data/lib/thor/actions/directory.rb +29 -10
  8. data/lib/thor/actions/file_manipulation.rb +8 -2
  9. data/lib/thor/base.rb +24 -11
  10. data/lib/thor/core_ext/hash_with_indifferent_access.rb +5 -0
  11. data/lib/thor/group.rb +5 -5
  12. data/lib/thor/parser/options.rb +63 -25
  13. data/lib/thor/rake_compat.rb +3 -2
  14. data/lib/thor/runner.rb +1 -1
  15. data/lib/thor/shell/basic.rb +16 -16
  16. data/lib/thor/shell/color.rb +9 -9
  17. data/lib/thor/shell/html.rb +9 -9
  18. data/lib/thor/task.rb +2 -2
  19. data/lib/thor/version.rb +1 -1
  20. data/spec/actions/create_file_spec.rb +30 -30
  21. data/spec/actions/create_link_spec.rb +12 -12
  22. data/spec/actions/directory_spec.rb +34 -27
  23. data/spec/actions/empty_directory_spec.rb +16 -16
  24. data/spec/actions/file_manipulation_spec.rb +62 -50
  25. data/spec/actions/inject_into_file_spec.rb +18 -18
  26. data/spec/actions_spec.rb +56 -56
  27. data/spec/base_spec.rb +69 -69
  28. data/spec/core_ext/hash_with_indifferent_access_spec.rb +19 -14
  29. data/spec/core_ext/ordered_hash_spec.rb +29 -29
  30. data/spec/exit_condition_spec.rb +3 -3
  31. data/spec/fixtures/preserve/script.sh +3 -0
  32. data/spec/fixtures/script.thor +5 -0
  33. data/spec/group_spec.rb +55 -55
  34. data/spec/invocation_spec.rb +26 -26
  35. data/spec/parser/argument_spec.rb +12 -12
  36. data/spec/parser/arguments_spec.rb +12 -12
  37. data/spec/parser/option_spec.rb +47 -47
  38. data/spec/parser/options_spec.rb +137 -72
  39. data/spec/rake_compat_spec.rb +11 -11
  40. data/spec/register_spec.rb +70 -8
  41. data/spec/runner_spec.rb +38 -38
  42. data/spec/shell/basic_spec.rb +49 -37
  43. data/spec/shell/color_spec.rb +13 -13
  44. data/spec/shell/html_spec.rb +3 -3
  45. data/spec/shell_spec.rb +7 -7
  46. data/spec/spec_helper.rb +4 -0
  47. data/spec/task_spec.rb +11 -11
  48. data/spec/thor_spec.rb +161 -91
  49. data/spec/util_spec.rb +42 -42
  50. data/thor.gemspec +1 -7
  51. metadata +8 -118
  52. data/lib/thor/core_ext/dir_escape.rb +0 -0
@@ -2,12 +2,12 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
  require 'thor/parser'
3
3
 
4
4
  describe Thor::Options do
5
- def create(opts, defaults={})
5
+ def create(opts, defaults={}, stop_on_unknown=false)
6
6
  opts.each do |key, value|
7
7
  opts[key] = Thor::Option.parse(key, value) unless value.is_a?(Thor::Option)
8
8
  end
9
9
 
10
- @opt = Thor::Options.new(opts, defaults)
10
+ @opt = Thor::Options.new(opts, defaults, stop_on_unknown)
11
11
  end
12
12
 
13
13
  def parse(*args)
@@ -18,38 +18,42 @@ describe Thor::Options do
18
18
  @opt.check_unknown!
19
19
  end
20
20
 
21
+ def remaining
22
+ @opt.remaining
23
+ end
24
+
21
25
  describe "#to_switches" do
22
26
  it "turns true values into a flag" do
23
- Thor::Options.to_switches(:color => true).should == "--color"
27
+ expect(Thor::Options.to_switches(:color => true)).to eq("--color")
24
28
  end
25
29
 
26
30
  it "ignores nil" do
27
- Thor::Options.to_switches(:color => nil).should == ""
31
+ expect(Thor::Options.to_switches(:color => nil)).to eq("")
28
32
  end
29
33
 
30
34
  it "ignores false" do
31
- Thor::Options.to_switches(:color => false).should == ""
35
+ expect(Thor::Options.to_switches(:color => false)).to eq("")
32
36
  end
33
37
 
34
38
  it "writes --name value for anything else" do
35
- Thor::Options.to_switches(:format => "specdoc").should == '--format "specdoc"'
39
+ expect(Thor::Options.to_switches(:format => "specdoc")).to eq('--format "specdoc"')
36
40
  end
37
41
 
38
42
  it "joins several values" do
39
43
  switches = Thor::Options.to_switches(:color => true, :foo => "bar").split(' ').sort
40
- switches.should == ['"bar"', "--color", "--foo"]
44
+ expect(switches).to eq(['"bar"', "--color", "--foo"])
41
45
  end
42
46
 
43
47
  it "accepts arrays" do
44
- Thor::Options.to_switches(:count => [1,2,3]).should == "--count 1 2 3"
48
+ expect(Thor::Options.to_switches(:count => [1,2,3])).to eq("--count 1 2 3")
45
49
  end
46
50
 
47
51
  it "accepts hashes" do
48
- Thor::Options.to_switches(:count => {:a => :b}).should == "--count a:b"
52
+ expect(Thor::Options.to_switches(:count => {:a => :b})).to eq("--count a:b")
49
53
  end
50
54
 
51
55
  it "accepts underscored options" do
52
- Thor::Options.to_switches(:under_score_option => "foo bar").should == '--under_score_option "foo bar"'
56
+ expect(Thor::Options.to_switches(:under_score_option => "foo bar")).to eq('--under_score_option "foo bar"')
53
57
  end
54
58
 
55
59
  end
@@ -57,96 +61,126 @@ describe Thor::Options do
57
61
  describe "#parse" do
58
62
  it "allows multiple aliases for a given switch" do
59
63
  create ["--foo", "--bar", "--baz"] => :string
60
- parse("--foo", "12")["foo"].should == "12"
61
- parse("--bar", "12")["foo"].should == "12"
62
- parse("--baz", "12")["foo"].should == "12"
64
+ expect(parse("--foo", "12")["foo"]).to eq("12")
65
+ expect(parse("--bar", "12")["foo"]).to eq("12")
66
+ expect(parse("--baz", "12")["foo"]).to eq("12")
63
67
  end
64
68
 
65
69
  it "allows custom short names" do
66
70
  create "-f" => :string
67
- parse("-f", "12").should == {"f" => "12"}
71
+ expect(parse("-f", "12")).to eq({"f" => "12"})
68
72
  end
69
73
 
70
74
  it "allows custom short-name aliases" do
71
75
  create ["--bar", "-f"] => :string
72
- parse("-f", "12").should == {"bar" => "12"}
76
+ expect(parse("-f", "12")).to eq({"bar" => "12"})
73
77
  end
74
78
 
75
79
  it "accepts conjoined short switches" do
76
80
  create ["--foo", "-f"] => true, ["--bar", "-b"] => true, ["--app", "-a"] => true
77
81
  opts = parse("-fba")
78
- opts["foo"].should be_true
79
- opts["bar"].should be_true
80
- opts["app"].should be_true
82
+ expect(opts["foo"]).to be_true
83
+ expect(opts["bar"]).to be_true
84
+ expect(opts["app"]).to be_true
81
85
  end
82
86
 
83
87
  it "accepts conjoined short switches with input" do
84
88
  create ["--foo", "-f"] => true, ["--bar", "-b"] => true, ["--app", "-a"] => :required
85
89
  opts = parse "-fba", "12"
86
- opts["foo"].should be_true
87
- opts["bar"].should be_true
88
- opts["app"].should == "12"
90
+ expect(opts["foo"]).to be_true
91
+ expect(opts["bar"]).to be_true
92
+ expect(opts["app"]).to eq("12")
89
93
  end
90
94
 
91
95
  it "returns the default value if none is provided" do
92
96
  create :foo => "baz", :bar => :required
93
- parse("--bar", "boom")["foo"].should == "baz"
97
+ expect(parse("--bar", "boom")["foo"]).to eq("baz")
94
98
  end
95
99
 
96
100
  it "returns the default value from defaults hash to required arguments" do
97
101
  create Hash[:bar => :required], Hash[:bar => "baz"]
98
- parse["bar"].should == "baz"
102
+ expect(parse["bar"]).to eq("baz")
99
103
  end
100
104
 
101
105
  it "gives higher priority to defaults given in the hash" do
102
106
  create Hash[:bar => true], Hash[:bar => false]
103
- parse["bar"].should == false
107
+ expect(parse["bar"]).to eq(false)
104
108
  end
105
109
 
106
110
  it "raises an error for unknown switches" do
107
111
  create :foo => "baz", :bar => :required
108
112
  parse("--bar", "baz", "--baz", "unknown")
109
- lambda { check_unknown! }.should raise_error(Thor::UnknownArgumentError, "Unknown switches '--baz'")
113
+ expect{ check_unknown! }.to raise_error(Thor::UnknownArgumentError, "Unknown switches '--baz'")
110
114
  end
111
115
 
112
116
  it "skips leading non-switches" do
113
117
  create(:foo => "baz")
114
118
 
115
- parse("asdf", "--foo", "bar").should == {"foo" => "bar"}
119
+ expect(parse("asdf", "--foo", "bar")).to eq({"foo" => "bar"})
116
120
  end
117
121
 
118
122
  it "correctly recognizes things that look kind of like options, but aren't, as not options" do
119
123
  create(:foo => "baz")
120
- parse("--asdf---asdf", "baz", "--foo", "--asdf---dsf--asdf").should == {"foo" => "--asdf---dsf--asdf"}
124
+ expect(parse("--asdf---asdf", "baz", "--foo", "--asdf---dsf--asdf")).to eq({"foo" => "--asdf---dsf--asdf"})
121
125
  check_unknown!
122
126
  end
123
127
 
124
128
  it "accepts underscores in commandline args hash for boolean" do
125
129
  create :foo_bar => :boolean
126
- parse("--foo_bar")["foo_bar"].should == true
127
- parse("--no_foo_bar")["foo_bar"].should == false
130
+ expect(parse("--foo_bar")["foo_bar"]).to eq(true)
131
+ expect(parse("--no_foo_bar")["foo_bar"]).to eq(false)
128
132
  end
129
133
 
130
134
  it "accepts underscores in commandline args hash for strings" do
131
135
  create :foo_bar => :string, :baz_foo => :string
132
- parse("--foo_bar", "baz")["foo_bar"].should == "baz"
133
- parse("--baz_foo", "foo bar")["baz_foo"].should == "foo bar"
136
+ expect(parse("--foo_bar", "baz")["foo_bar"]).to eq("baz")
137
+ expect(parse("--baz_foo", "foo bar")["baz_foo"]).to eq("foo bar")
138
+ end
139
+
140
+ it "interprets everything after -- as args instead of options" do
141
+ create(:foo => :string, :bar => :required)
142
+ expect(parse(%w[--bar abc moo -- --foo def -a])).to eq({"bar" => "abc"})
143
+ expect(remaining).to eq(%w[moo --foo def -a])
144
+ end
145
+
146
+ it "ignores -- when looking for single option values" do
147
+ create(:foo => :string, :bar => :required)
148
+ expect(parse(%w[--bar -- --foo def -a])).to eq({"bar" => "--foo"})
149
+ expect(remaining).to eq(%w[def -a])
150
+ end
151
+
152
+ it "ignores -- when looking for array option values" do
153
+ create(:foo => :array)
154
+ expect(parse(%w[--foo a b -- c d -e])).to eq({"foo" => %w[a b c d -e]})
155
+ expect(remaining).to eq([])
156
+ end
157
+
158
+ it "ignores -- when looking for hash option values" do
159
+ create(:foo => :hash)
160
+ expect(parse(%w[--foo a:b -- c:d -e])).to eq({"foo" => {'a' => 'b', 'c' => 'd'}})
161
+ expect(remaining).to eq(%w[-e])
162
+ end
163
+
164
+ it "ignores trailing --" do
165
+ create(:foo => :string)
166
+ expect(parse(%w[--foo --])).to eq({"foo" => nil})
167
+ expect(remaining).to eq([])
134
168
  end
135
169
 
136
170
  describe "with no input" do
137
171
  it "and no switches returns an empty hash" do
138
172
  create({})
139
- parse.should == {}
173
+ expect(parse).to eq({})
140
174
  end
141
175
 
142
176
  it "and several switches returns an empty hash" do
143
177
  create "--foo" => :boolean, "--bar" => :string
144
- parse.should == {}
178
+ expect(parse).to eq({})
145
179
  end
146
180
 
147
181
  it "and a required switch raises an error" do
148
182
  create "--foo" => :required
149
- lambda { parse }.should raise_error(Thor::RequiredArgumentMissingError, "No value provided for required options '--foo'")
183
+ expect{ parse }.to raise_error(Thor::RequiredArgumentMissingError, "No value provided for required options '--foo'")
150
184
  end
151
185
  end
152
186
 
@@ -156,21 +190,52 @@ describe Thor::Options do
156
190
  end
157
191
 
158
192
  it "raises an error if the required switch has no argument" do
159
- lambda { parse("--foo") }.should raise_error(Thor::MalformattedArgumentError)
193
+ expect{ parse("--foo") }.to raise_error(Thor::MalformattedArgumentError)
160
194
  end
161
195
 
162
196
  it "raises an error if the required switch isn't given" do
163
- lambda { parse("--bar") }.should raise_error(Thor::RequiredArgumentMissingError)
197
+ expect{ parse("--bar") }.to raise_error(Thor::RequiredArgumentMissingError)
164
198
  end
165
199
 
166
200
  it "raises an error if the required switch is set to nil" do
167
- lambda { parse("--no-foo") }.should raise_error(Thor::RequiredArgumentMissingError)
201
+ expect{ parse("--no-foo") }.to raise_error(Thor::RequiredArgumentMissingError)
168
202
  end
169
203
 
170
204
  it "does not raises an error if the required option has a default value" do
171
205
  options = {:required => true, :type => :string, :default => "baz"}
172
206
  create :foo => Thor::Option.new("foo", options), :bar => :boolean
173
- lambda { parse("--bar") }.should_not raise_error
207
+ expect{ parse("--bar") }.not_to raise_error
208
+ end
209
+ end
210
+
211
+ context "when stop_on_unknown is true" do
212
+ before do
213
+ create({:foo => :string, :verbose => :boolean}, {}, true)
214
+ end
215
+
216
+ it "stops parsing on first non-option" do
217
+ expect(parse(%w[foo --verbose])).to eq({})
218
+ expect(remaining).to eq(["foo", "--verbose"])
219
+ end
220
+
221
+ it "stops parsing on unknown option" do
222
+ expect(parse(%w[--bar --verbose])).to eq({})
223
+ expect(remaining).to eq(["--bar", "--verbose"])
224
+ end
225
+
226
+ it "still accepts options that are given before non-options" do
227
+ expect(parse(%w[--verbose foo])).to eq({"verbose" => true})
228
+ expect(remaining).to eq(["foo"])
229
+ end
230
+
231
+ it "still accepts options that require a value" do
232
+ expect(parse(%w[--foo bar baz])).to eq({"foo" => "bar"})
233
+ expect(remaining).to eq(["baz"])
234
+ end
235
+
236
+ it "still interprets everything after -- as args instead of options" do
237
+ expect(parse(%w[-- --verbose])).to eq({})
238
+ expect(remaining).to eq(["--verbose"])
174
239
  end
175
240
  end
176
241
 
@@ -180,43 +245,43 @@ describe Thor::Options do
180
245
  end
181
246
 
182
247
  it "accepts a switch <value> assignment" do
183
- parse("--foo", "12")["foo"].should == "12"
248
+ expect(parse("--foo", "12")["foo"]).to eq("12")
184
249
  end
185
250
 
186
251
  it "accepts a switch=<value> assignment" do
187
- parse("-f=12")["foo"].should == "12"
188
- parse("--foo=12")["foo"].should == "12"
189
- parse("--foo=bar=baz")["foo"].should == "bar=baz"
252
+ expect(parse("-f=12")["foo"]).to eq("12")
253
+ expect(parse("--foo=12")["foo"]).to eq("12")
254
+ expect(parse("--foo=bar=baz")["foo"]).to eq("bar=baz")
190
255
  end
191
256
 
192
257
  it "must accept underscores switch=value assignment" do
193
258
  create :foo_bar => :required
194
- parse("--foo_bar=http://example.com/under_score/")["foo_bar"].should == "http://example.com/under_score/"
259
+ expect(parse("--foo_bar=http://example.com/under_score/")["foo_bar"]).to eq("http://example.com/under_score/")
195
260
  end
196
261
 
197
262
  it "accepts a --no-switch format" do
198
263
  create "--foo" => "bar"
199
- parse("--no-foo")["foo"].should be_nil
264
+ expect(parse("--no-foo")["foo"]).to be_nil
200
265
  end
201
266
 
202
267
  it "does not consume an argument for --no-switch format" do
203
268
  create "--cheese" => :string
204
- parse('burger', '--no-cheese', 'fries')["cheese"].should be_nil
269
+ expect(parse('burger', '--no-cheese', 'fries')["cheese"]).to be_nil
205
270
  end
206
271
 
207
272
  it "accepts a --switch format on non required types" do
208
273
  create "--foo" => :string
209
- parse("--foo")["foo"].should == "foo"
274
+ expect(parse("--foo")["foo"]).to eq("foo")
210
275
  end
211
276
 
212
277
  it "accepts a --switch format on non required types with default values" do
213
278
  create "--baz" => :string, "--foo" => "bar"
214
- parse("--baz", "bang", "--foo")["foo"].should == "bar"
279
+ expect(parse("--baz", "bang", "--foo")["foo"]).to eq("bar")
215
280
  end
216
281
 
217
282
  it "overwrites earlier values with later values" do
218
- parse("--foo=bar", "--foo", "12")["foo"].should == "12"
219
- parse("--foo", "12", "--foo", "13")["foo"].should == "13"
283
+ expect(parse("--foo=bar", "--foo", "12")["foo"]).to eq("12")
284
+ expect(parse("--foo", "12", "--foo", "13")["foo"]).to eq("13")
220
285
  end
221
286
  end
222
287
 
@@ -226,48 +291,48 @@ describe Thor::Options do
226
291
  end
227
292
 
228
293
  it "accepts --opt assignment" do
229
- parse("--foo")["foo"].should == true
230
- parse("--foo", "--bar")["foo"].should == true
294
+ expect(parse("--foo")["foo"]).to eq(true)
295
+ expect(parse("--foo", "--bar")["foo"]).to eq(true)
231
296
  end
232
297
 
233
298
  it "uses the default value if no switch is given" do
234
- parse("")["foo"].should == false
299
+ expect(parse("")["foo"]).to eq(false)
235
300
  end
236
301
 
237
302
  it "accepts --opt=value assignment" do
238
- parse("--foo=true")["foo"].should == true
239
- parse("--foo=false")["foo"].should == false
303
+ expect(parse("--foo=true")["foo"]).to eq(true)
304
+ expect(parse("--foo=false")["foo"]).to eq(false)
240
305
  end
241
306
 
242
307
  it "accepts --[no-]opt variant, setting false for value" do
243
- parse("--no-foo")["foo"].should == false
308
+ expect(parse("--no-foo")["foo"]).to eq(false)
244
309
  end
245
310
 
246
311
  it "accepts --[skip-]opt variant, setting false for value" do
247
- parse("--skip-foo")["foo"].should == false
312
+ expect(parse("--skip-foo")["foo"]).to eq(false)
248
313
  end
249
314
 
250
315
  it "will prefer 'no-opt' variant over inverting 'opt' if explicitly set" do
251
316
  create "--no-foo" => true
252
- parse("--no-foo")["no-foo"].should == true
317
+ expect(parse("--no-foo")["no-foo"]).to eq(true)
253
318
  end
254
319
 
255
320
  it "will prefer 'skip-opt' variant over inverting 'opt' if explicitly set" do
256
321
  create "--skip-foo" => true
257
- parse("--skip-foo")["skip-foo"].should == true
322
+ expect(parse("--skip-foo")["skip-foo"]).to eq(true)
258
323
  end
259
324
 
260
325
  it "accepts inputs in the human name format" do
261
326
  create :foo_bar => :boolean
262
- parse("--foo-bar")["foo_bar"].should == true
263
- parse("--no-foo-bar")["foo_bar"].should == false
264
- parse("--skip-foo-bar")["foo_bar"].should == false
327
+ expect(parse("--foo-bar")["foo_bar"]).to eq(true)
328
+ expect(parse("--no-foo-bar")["foo_bar"]).to eq(false)
329
+ expect(parse("--skip-foo-bar")["foo_bar"]).to eq(false)
265
330
  end
266
331
 
267
332
  it "doesn't eat the next part of the param" do
268
333
  create :foo => :boolean
269
- parse("--foo", "bar").should == {"foo" => true}
270
- @opt.remaining.should == ["bar"]
334
+ expect(parse("--foo", "bar")).to eq({"foo" => true})
335
+ expect(@opt.remaining).to eq(["bar"])
271
336
  end
272
337
  end
273
338
 
@@ -277,15 +342,15 @@ describe Thor::Options do
277
342
  end
278
343
 
279
344
  it "accepts a switch=<value> assignment" do
280
- parse("--attributes=name:string", "age:integer")["attributes"].should == {"name" => "string", "age" => "integer"}
345
+ expect(parse("--attributes=name:string", "age:integer")["attributes"]).to eq({"name" => "string", "age" => "integer"})
281
346
  end
282
347
 
283
348
  it "accepts a switch <value> assignment" do
284
- parse("--attributes", "name:string", "age:integer")["attributes"].should == {"name" => "string", "age" => "integer"}
349
+ expect(parse("--attributes", "name:string", "age:integer")["attributes"]).to eq({"name" => "string", "age" => "integer"})
285
350
  end
286
351
 
287
352
  it "must not mix values with other switches" do
288
- parse("--attributes", "name:string", "age:integer", "--baz", "cool")["attributes"].should == {"name" => "string", "age" => "integer"}
353
+ expect(parse("--attributes", "name:string", "age:integer", "--baz", "cool")["attributes"]).to eq({"name" => "string", "age" => "integer"})
289
354
  end
290
355
  end
291
356
 
@@ -295,15 +360,15 @@ describe Thor::Options do
295
360
  end
296
361
 
297
362
  it "accepts a switch=<value> assignment" do
298
- parse("--attributes=a", "b", "c")["attributes"].should == ["a", "b", "c"]
363
+ expect(parse("--attributes=a", "b", "c")["attributes"]).to eq(["a", "b", "c"])
299
364
  end
300
365
 
301
366
  it "accepts a switch <value> assignment" do
302
- parse("--attributes", "a", "b", "c")["attributes"].should == ["a", "b", "c"]
367
+ expect(parse("--attributes", "a", "b", "c")["attributes"]).to eq(["a", "b", "c"])
303
368
  end
304
369
 
305
370
  it "must not mix values with other switches" do
306
- parse("--attributes", "a", "b", "c", "--baz", "cool")["attributes"].should == ["a", "b", "c"]
371
+ expect(parse("--attributes", "a", "b", "c", "--baz", "cool")["attributes"]).to eq(["a", "b", "c"])
307
372
  end
308
373
  end
309
374
 
@@ -313,15 +378,15 @@ describe Thor::Options do
313
378
  end
314
379
 
315
380
  it "accepts a -nXY assignment" do
316
- parse("-n12")["n"].should == 12
381
+ expect(parse("-n12")["n"]).to eq(12)
317
382
  end
318
383
 
319
384
  it "converts values to numeric types" do
320
- parse("-n", "3", "-m", ".5").should == {"n" => 3, "m" => 0.5}
385
+ expect(parse("-n", "3", "-m", ".5")).to eq({"n" => 3, "m" => 0.5})
321
386
  end
322
387
 
323
388
  it "raises error when value isn't numeric" do
324
- lambda { parse("-n", "foo") }.should raise_error(Thor::MalformattedArgumentError,
389
+ expect{ parse("-n", "foo") }.to raise_error(Thor::MalformattedArgumentError,
325
390
  "Expected numeric value for '-n'; got \"foo\"")
326
391
  end
327
392
  end
@@ -32,41 +32,41 @@ end
32
32
 
33
33
  describe Thor::RakeCompat do
34
34
  it "sets the rakefile application" do
35
- ["rake_compat_spec.rb", "Thorfile"].should include(Rake.application.rakefile)
35
+ expect(["rake_compat_spec.rb", "Thorfile"]).to include(Rake.application.rakefile)
36
36
  end
37
37
 
38
38
  it "adds rake tasks to thor classes too" do
39
39
  task = ThorTask.tasks["cool"]
40
- task.should be
40
+ expect(task).to be
41
41
  end
42
42
 
43
43
  it "uses rake tasks descriptions on thor" do
44
- ThorTask.tasks["cool"].description.should == "Say it's cool"
44
+ expect(ThorTask.tasks["cool"].description).to eq("Say it's cool")
45
45
  end
46
46
 
47
47
  it "gets usage from rake tasks name" do
48
- ThorTask.tasks["cool"].usage.should == "cool"
48
+ expect(ThorTask.tasks["cool"].usage).to eq("cool")
49
49
  end
50
50
 
51
51
  it "uses non namespaced name as description if non is available" do
52
- ThorTask::HiperMega.tasks["super"].description.should == "super"
52
+ expect(ThorTask::HiperMega.tasks["super"].description).to eq("super")
53
53
  end
54
54
 
55
55
  it "converts namespaces to classes" do
56
- ThorTask.const_get(:HiperMega).should == ThorTask::HiperMega
56
+ expect(ThorTask.const_get(:HiperMega)).to eq(ThorTask::HiperMega)
57
57
  end
58
58
 
59
59
  it "does not add tasks from higher namespaces in lowers namespaces" do
60
- ThorTask.tasks["super"].should_not be
60
+ expect(ThorTask.tasks["super"]).not_to be
61
61
  end
62
62
 
63
63
  it "invoking the thor task invokes the rake task" do
64
- capture(:stdout) do
64
+ expect(capture(:stdout) {
65
65
  ThorTask.start ["cool"]
66
- end.should == "COOL\n"
66
+ }).to eq("COOL\n")
67
67
 
68
- capture(:stdout) do
68
+ expect(capture(:stdout) {
69
69
  ThorTask::HiperMega.start ["super"]
70
- end.should == "HIPER MEGA SUPER\n"
70
+ }).to eq("HIPER MEGA SUPER\n")
71
71
  end
72
72
  end