mspec 1.8.0 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mspec/matchers.rb +1 -0
  3. data/lib/mspec/matchers/block_caller.rb +34 -0
  4. data/lib/mspec/runner/actions/timer.rb +6 -2
  5. data/lib/mspec/runner/context.rb +1 -1
  6. data/lib/mspec/version.rb +1 -1
  7. data/spec/commands/mspec_spec.rb +2 -2
  8. data/spec/commands/mspec_tag_spec.rb +3 -3
  9. data/spec/guards/background_spec.rb +1 -1
  10. data/spec/guards/feature_spec.rb +4 -4
  11. data/spec/guards/guard_spec.rb +2 -2
  12. data/spec/helpers/fs_spec.rb +12 -12
  13. data/spec/helpers/numeric_spec.rb +1 -1
  14. data/spec/matchers/be_an_instance_of_spec.rb +6 -6
  15. data/spec/matchers/be_computed_by_function_spec.rb +4 -4
  16. data/spec/matchers/be_computed_by_spec.rb +5 -5
  17. data/spec/matchers/be_valid_dns_name_spec.rb +8 -8
  18. data/spec/matchers/block_caller_spec.rb +13 -0
  19. data/spec/matchers/equal_element_spec.rb +32 -32
  20. data/spec/matchers/have_class_variable_spec.rb +4 -4
  21. data/spec/matchers/have_constant_spec.rb +2 -2
  22. data/spec/matchers/have_data_spec.rb +4 -4
  23. data/spec/matchers/have_instance_method_spec.rb +4 -4
  24. data/spec/matchers/have_instance_variable_spec.rb +4 -4
  25. data/spec/matchers/have_method_spec.rb +6 -6
  26. data/spec/matchers/have_private_instance_method_spec.rb +4 -4
  27. data/spec/matchers/have_private_method_spec.rb +2 -2
  28. data/spec/matchers/have_protected_instance_method_spec.rb +4 -4
  29. data/spec/matchers/have_public_instance_method_spec.rb +4 -4
  30. data/spec/matchers/have_singleton_method_spec.rb +2 -2
  31. data/spec/mocks/mock_spec.rb +5 -5
  32. data/spec/mocks/proxy_spec.rb +8 -8
  33. data/spec/runner/actions/tag_spec.rb +7 -7
  34. data/spec/runner/actions/taglist_spec.rb +3 -3
  35. data/spec/runner/actions/timer_spec.rb +4 -4
  36. data/spec/runner/context_spec.rb +17 -17
  37. data/spec/runner/exception_spec.rb +3 -3
  38. data/spec/runner/formatters/dotted_spec.rb +15 -15
  39. data/spec/runner/formatters/file_spec.rb +4 -4
  40. data/spec/runner/formatters/specdoc_spec.rb +2 -2
  41. data/spec/runner/mspec_spec.rb +19 -15
  42. data/spec/utils/options_spec.rb +9 -11
  43. metadata +6 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 733fa565d5e2085c638435f1fc22513fa124bec8
4
- data.tar.gz: ed6da518e6058b01ef1a7ea8f99ffd2f051c2994
3
+ metadata.gz: 20b523d18faeba6833feae1b3539abaaa165bd65
4
+ data.tar.gz: d36ed3f25a4ce40cd94f5343ba28143e46736460
5
5
  SHA512:
6
- metadata.gz: b61ffdbc4bfc08fcbd7bdcb31004186135b9e6e06f8c7c8b062ebf7b170d840e1368898af9d8b6995a701a647aa7e314d85ea80e5825e854365b351e98834589
7
- data.tar.gz: d3312bdda59bfa8380bf7f85ccc010683f1e43e04e3dda5231ded27fea339af823bfad6bfca5d4b1c918f85e6cd9f8738ef0c7601bfd874ea6f6a4a40b94e81a
6
+ metadata.gz: 253e777134a828707b7f30eff06808519ad4da111b51498bd4e1252834a783f98ce6fe700be8012f8dd835fc411b7e05eb0e4133107dcd95031a97105013b1be
7
+ data.tar.gz: b6b1f8e113718582d7ff11f157bc321db0e647064df41ff7f2db71c3ad2a997c7f44e24c8be07421564cd1fcec486ba8cff34844c488db16d93b3d9b4d410711
@@ -36,3 +36,4 @@ require 'mspec/matchers/output'
36
36
  require 'mspec/matchers/output_to_fd'
37
37
  require 'mspec/matchers/respond_to'
38
38
  require 'mspec/matchers/signed_zero'
39
+ require 'mspec/matchers/block_caller'
@@ -0,0 +1,34 @@
1
+ class BlockingMatcher
2
+ def initialize(timeout = 0.1)
3
+ @timeout = timeout
4
+ end
5
+
6
+ def matches?(block)
7
+ blocking = true
8
+
9
+ thread = Thread.new do
10
+ block.call
11
+
12
+ blocking = false
13
+ end
14
+
15
+ thread.join(@timeout)
16
+ thread.kill
17
+
18
+ blocking
19
+ end
20
+
21
+ def failure_message
22
+ ['Expected the given Proc', 'to block the caller']
23
+ end
24
+
25
+ def negative_failure_message
26
+ ['Expected the given Proc', 'to not block the caller']
27
+ end
28
+ end
29
+
30
+ class Object
31
+ def block_caller(timeout = 0.1)
32
+ BlockingMatcher.new(timeout)
33
+ end
34
+ end
@@ -5,11 +5,11 @@ class TimerAction
5
5
  end
6
6
 
7
7
  def start
8
- @start = Time.now
8
+ @start = current_time
9
9
  end
10
10
 
11
11
  def finish
12
- @stop = Time.now
12
+ @stop = current_time
13
13
  end
14
14
 
15
15
  def elapsed
@@ -19,4 +19,8 @@ class TimerAction
19
19
  def format
20
20
  "Finished in %f seconds" % elapsed
21
21
  end
22
+
23
+ def current_time
24
+ Time.now
25
+ end
22
26
  end
@@ -6,7 +6,7 @@
6
6
  #--
7
7
  # A note on naming: this is named _ContextState_ rather
8
8
  # than _DescribeState_ because +describe+ is the keyword
9
- # in the DSL for refering to the context in which an example
9
+ # in the DSL for referring to the context in which an example
10
10
  # is evaluated, just as +it+ refers to the example itself.
11
11
  #++
12
12
  class ContextState
@@ -1,5 +1,5 @@
1
1
  require 'mspec/utils/version'
2
2
 
3
3
  module MSpec
4
- VERSION = SpecVersion.new "1.8.0"
4
+ VERSION = SpecVersion.new "1.9.0"
5
5
  end
@@ -253,7 +253,7 @@ describe MSpecMain, "#run" do
253
253
  end
254
254
 
255
255
  it "calls #multi_exec if the command is 'ci' and the multi option is passed" do
256
- @script.should_receive(:multi_exec).and_return do |arg|
256
+ @script.should_receive(:multi_exec) do |arg|
257
257
  arg.length.should == 3
258
258
  arg[0].should == "-v"
259
259
  arg[1].should =~ %r"#{MSPEC_HOME}/bin/mspec-ci$"
@@ -282,7 +282,7 @@ describe "The -A, --valgrind option" do
282
282
  ["-A", "--valgrind"].each do |opt|
283
283
  @config[:use_valgrind] = false
284
284
  @script.options [opt]
285
- @config[:use_valgrind].should be_true
285
+ @config[:use_valgrind].should be_truthy
286
286
  end
287
287
  end
288
288
  end
@@ -360,7 +360,7 @@ describe MSpecTag, "#register" do
360
360
 
361
361
  it "sets config[:formatter] to false" do
362
362
  @script.register
363
- @config[:formatter].should be_false
363
+ @config[:formatter].should be_falsey
364
364
  end
365
365
  end
366
366
 
@@ -382,7 +382,7 @@ describe MSpecTag, "#register" do
382
382
 
383
383
  it "sets config[:formatter] to false" do
384
384
  @script.register
385
- @config[:formatter].should be_false
385
+ @config[:formatter].should be_falsey
386
386
  end
387
387
  end
388
388
 
@@ -410,7 +410,7 @@ describe MSpecTag, "#register" do
410
410
 
411
411
  it "sets config[:formatter] to false" do
412
412
  @script.register
413
- @config[:formatter].should be_false
413
+ @config[:formatter].should be_falsey
414
414
  end
415
415
  end
416
416
  end
@@ -11,7 +11,7 @@ describe Object, "#process_is_foreground" do
11
11
  end
12
12
 
13
13
  it "yields if MSpec.mode?(:background) is false" do
14
- MSpec.mode?(:background).should be_false
14
+ MSpec.mode?(:background).should be_falsey
15
15
  process_is_foreground { ScratchPad.record :yield }
16
16
  ScratchPad.recorded.should == :yield
17
17
  end
@@ -4,24 +4,24 @@ require 'mspec/guards'
4
4
  describe FeatureGuard, ".enabled?" do
5
5
  it "returns true if the feature is enabled" do
6
6
  MSpec.should_receive(:feature_enabled?).with(:encoding).and_return(true)
7
- FeatureGuard.enabled?(:encoding).should be_true
7
+ FeatureGuard.enabled?(:encoding).should be_truthy
8
8
  end
9
9
 
10
10
  it "returns false if the feature is not enabled" do
11
11
  MSpec.should_receive(:feature_enabled?).with(:encoding).and_return(false)
12
- FeatureGuard.enabled?(:encoding).should be_false
12
+ FeatureGuard.enabled?(:encoding).should be_falsey
13
13
  end
14
14
 
15
15
  it "returns true if all the features are enabled" do
16
16
  MSpec.should_receive(:feature_enabled?).with(:one).and_return(true)
17
17
  MSpec.should_receive(:feature_enabled?).with(:two).and_return(true)
18
- FeatureGuard.enabled?(:one, :two).should be_true
18
+ FeatureGuard.enabled?(:one, :two).should be_truthy
19
19
  end
20
20
 
21
21
  it "returns false if any of the features are not enabled" do
22
22
  MSpec.should_receive(:feature_enabled?).with(:one).and_return(true)
23
23
  MSpec.should_receive(:feature_enabled?).with(:two).and_return(false)
24
- FeatureGuard.enabled?(:one, :two).should be_false
24
+ FeatureGuard.enabled?(:one, :two).should be_falsey
25
25
  end
26
26
  end
27
27
 
@@ -240,12 +240,12 @@ describe SpecGuard, "#standard?" do
240
240
 
241
241
  it "returns true if #implementation? returns true" do
242
242
  @guard.should_receive(:implementation?).with(:ruby).and_return(true)
243
- @guard.standard?.should be_true
243
+ @guard.standard?.should be_truthy
244
244
  end
245
245
 
246
246
  it "returns false if #implementation? returns false" do
247
247
  @guard.should_receive(:implementation?).with(:ruby).and_return(false)
248
- @guard.standard?.should be_false
248
+ @guard.standard?.should be_falsey
249
249
  end
250
250
  end
251
251
 
@@ -35,12 +35,12 @@ describe Object, "#touch" do
35
35
 
36
36
  it "creates a file" do
37
37
  touch @name
38
- File.exist?(@name).should be_true
38
+ File.exist?(@name).should be_truthy
39
39
  end
40
40
 
41
41
  it "accepts an optional mode argument" do
42
42
  touch @name, "wb"
43
- File.exist?(@name).should be_true
43
+ File.exist?(@name).should be_truthy
44
44
  end
45
45
 
46
46
  it "overwrites an existing file" do
@@ -68,7 +68,7 @@ describe Object, "#touch" do
68
68
 
69
69
  it "creates all the directories in the path to the file" do
70
70
  touch @name
71
- File.exist?(@name).should be_true
71
+ File.exist?(@name).should be_truthy
72
72
  end
73
73
  end
74
74
 
@@ -86,7 +86,7 @@ describe Object, "#mkdir_p" do
86
86
 
87
87
  it "creates all the directories in a path" do
88
88
  mkdir_p @dir2
89
- File.directory?(@dir2).should be_true
89
+ File.directory?(@dir2).should be_truthy
90
90
  end
91
91
 
92
92
  it "raises an ArgumentError if a path component is a file" do
@@ -129,20 +129,20 @@ describe Object, "#rm_r" do
129
129
 
130
130
  it "removes a single file" do
131
131
  rm_r @subfile
132
- File.exist?(@subfile).should be_false
132
+ File.exist?(@subfile).should be_falsey
133
133
  end
134
134
 
135
135
  it "removes multiple files" do
136
136
  rm_r @topfile, @subfile
137
- File.exist?(@topfile).should be_false
138
- File.exist?(@subfile).should be_false
137
+ File.exist?(@topfile).should be_falsey
138
+ File.exist?(@subfile).should be_falsey
139
139
  end
140
140
 
141
141
  platform_is_not :windows do
142
142
  it "removes a symlink to a file" do
143
143
  File.symlink @topfile, @link
144
144
  rm_r @link
145
- File.exist?(@link).should be_false
145
+ File.exist?(@link).should be_falsey
146
146
  end
147
147
 
148
148
  it "removes a symlink to a directory" do
@@ -151,7 +151,7 @@ describe Object, "#rm_r" do
151
151
  lambda do
152
152
  File.lstat(@link)
153
153
  end.should raise_error(Errno::ENOENT)
154
- File.exist?(@subdir1).should be_true
154
+ File.exist?(@subdir1).should be_truthy
155
155
  end
156
156
 
157
157
  it "removes a dangling symlink" do
@@ -166,17 +166,17 @@ describe Object, "#rm_r" do
166
166
  require 'socket'
167
167
  UNIXServer.new(@socket).close
168
168
  rm_r @socket
169
- File.exist?(@socket).should be_false
169
+ File.exist?(@socket).should be_falsey
170
170
  end
171
171
  end
172
172
 
173
173
  it "removes a single directory" do
174
174
  rm_r @subdir2
175
- File.directory?(@subdir2).should be_false
175
+ File.directory?(@subdir2).should be_falsey
176
176
  end
177
177
 
178
178
  it "recursively removes a directory tree" do
179
179
  rm_r @topdir
180
- File.directory?(@topdir).should be_false
180
+ File.directory?(@topdir).should be_falsey
181
181
  end
182
182
  end
@@ -14,7 +14,7 @@ end
14
14
 
15
15
  describe Object, "#nan_value" do
16
16
  it "returns NaN" do
17
- nan_value.nan?.should be_true
17
+ nan_value.nan?.should be_truthy
18
18
  end
19
19
  end
20
20
 
@@ -16,22 +16,22 @@ end
16
16
  describe BeAnInstanceOfMatcher do
17
17
  it "matches when actual is an instance_of? expected" do
18
18
  a = BeAnInOfSpecs::A.new
19
- BeAnInstanceOfMatcher.new(BeAnInOfSpecs::A).matches?(a).should be_true
19
+ BeAnInstanceOfMatcher.new(BeAnInOfSpecs::A).matches?(a).should be_truthy
20
20
 
21
21
  b = BeAnInOfSpecs::B.new
22
- BeAnInstanceOfMatcher.new(BeAnInOfSpecs::B).matches?(b).should be_true
22
+ BeAnInstanceOfMatcher.new(BeAnInOfSpecs::B).matches?(b).should be_truthy
23
23
  end
24
24
 
25
25
  it "does not match when actual is not an instance_of? expected" do
26
26
  a = BeAnInOfSpecs::A.new
27
- BeAnInstanceOfMatcher.new(BeAnInOfSpecs::B).matches?(a).should be_false
27
+ BeAnInstanceOfMatcher.new(BeAnInOfSpecs::B).matches?(a).should be_falsey
28
28
 
29
29
  b = BeAnInOfSpecs::B.new
30
- BeAnInstanceOfMatcher.new(BeAnInOfSpecs::A).matches?(b).should be_false
30
+ BeAnInstanceOfMatcher.new(BeAnInOfSpecs::A).matches?(b).should be_falsey
31
31
 
32
32
  c = BeAnInOfSpecs::C.new
33
- BeAnInstanceOfMatcher.new(BeAnInOfSpecs::A).matches?(c).should be_false
34
- BeAnInstanceOfMatcher.new(BeAnInOfSpecs::B).matches?(c).should be_false
33
+ BeAnInstanceOfMatcher.new(BeAnInOfSpecs::A).matches?(c).should be_falsey
34
+ BeAnInstanceOfMatcher.new(BeAnInOfSpecs::B).matches?(c).should be_falsey
35
35
  end
36
36
 
37
37
  it "provides a useful failure message" do
@@ -5,25 +5,25 @@ describe BeComputedByFunctionMatcher do
5
5
  it "matches when all entries in the Array compute" do
6
6
  array = [ ["%2d", 65, "65"],
7
7
  ["%04d", 90, "0090"] ]
8
- BeComputedByFunctionMatcher.new(:sprintf).matches?(array).should be_true
8
+ BeComputedByFunctionMatcher.new(:sprintf).matches?(array).should be_truthy
9
9
  end
10
10
 
11
11
  it "matches when all entries in the Array with arguments compute" do
12
12
  array = [ ["%2d", "65"],
13
13
  ["%04d", "0065"] ]
14
- BeComputedByFunctionMatcher.new(:sprintf, 65).matches?(array).should be_true
14
+ BeComputedByFunctionMatcher.new(:sprintf, 65).matches?(array).should be_truthy
15
15
  end
16
16
 
17
17
  it "does not match when any entry in the Array does not compute" do
18
18
  array = [ ["%2d", 65, "65"],
19
19
  ["%04d", 90, "00090"] ]
20
- BeComputedByFunctionMatcher.new(:sprintf).matches?(array).should be_false
20
+ BeComputedByFunctionMatcher.new(:sprintf).matches?(array).should be_falsey
21
21
  end
22
22
 
23
23
  it "does not match when any entry in the Array with arguments does not compute" do
24
24
  array = [ ["%2d", "65"],
25
25
  ["%04d", "0065"] ]
26
- BeComputedByFunctionMatcher.new(:sprintf, 91).matches?(array).should be_false
26
+ BeComputedByFunctionMatcher.new(:sprintf, 91).matches?(array).should be_falsey
27
27
  end
28
28
 
29
29
  it "provides a useful failure message" do
@@ -5,31 +5,31 @@ describe BeComputedByMatcher do
5
5
  it "matches when all entries in the Array compute" do
6
6
  array = [ [65, "A"],
7
7
  [90, "Z"] ]
8
- BeComputedByMatcher.new(:chr).matches?(array).should be_true
8
+ BeComputedByMatcher.new(:chr).matches?(array).should be_truthy
9
9
  end
10
10
 
11
11
  it "matches when all entries in the Array with arguments compute" do
12
12
  array = [ [1, 2, 3],
13
13
  [2, 4, 6] ]
14
- BeComputedByMatcher.new(:+).matches?(array).should be_true
14
+ BeComputedByMatcher.new(:+).matches?(array).should be_truthy
15
15
  end
16
16
 
17
17
  it "does not match when any entry in the Array does not compute" do
18
18
  array = [ [65, "A" ],
19
19
  [91, "Z" ] ]
20
- BeComputedByMatcher.new(:chr).matches?(array).should be_false
20
+ BeComputedByMatcher.new(:chr).matches?(array).should be_falsey
21
21
  end
22
22
 
23
23
  it "accepts an argument list to apply to each method call" do
24
24
  array = [ [65, "1000001" ],
25
25
  [90, "1011010" ] ]
26
- BeComputedByMatcher.new(:to_s, 2).matches?(array).should be_true
26
+ BeComputedByMatcher.new(:to_s, 2).matches?(array).should be_truthy
27
27
  end
28
28
 
29
29
  it "does not match when any entry in the Array with arguments does not compute" do
30
30
  array = [ [1, 2, 3],
31
31
  [2, 4, 7] ]
32
- BeComputedByMatcher.new(:+).matches?(array).should be_false
32
+ BeComputedByMatcher.new(:+).matches?(array).should be_falsey
33
33
  end
34
34
 
35
35
  it "provides a useful failure message" do
@@ -4,35 +4,35 @@ require 'mspec/matchers'
4
4
 
5
5
  describe BeValidDNSName do
6
6
  it "matches when actual is 'localhost'" do
7
- BeValidDNSName.new.matches?("localhost").should be_true
7
+ BeValidDNSName.new.matches?("localhost").should be_truthy
8
8
  end
9
9
 
10
10
  it "matches when actual is 'localhost.localdomain'" do
11
- BeValidDNSName.new.matches?("localhost.localdomain").should be_true
11
+ BeValidDNSName.new.matches?("localhost.localdomain").should be_truthy
12
12
  end
13
13
 
14
14
  it "matches when actual is hyphenated" do
15
- BeValidDNSName.new.matches?("local-host").should be_true
15
+ BeValidDNSName.new.matches?("local-host").should be_truthy
16
16
  end
17
17
 
18
18
  it "matches when actual is 'a.b.c'" do
19
- BeValidDNSName.new.matches?("a.b.c").should be_true
19
+ BeValidDNSName.new.matches?("a.b.c").should be_truthy
20
20
  end
21
21
 
22
22
  it "matches when actual has a trailing '.'" do
23
- BeValidDNSName.new.matches?("a.com.").should be_true
23
+ BeValidDNSName.new.matches?("a.com.").should be_truthy
24
24
  end
25
25
 
26
26
  it "does not match when actual is not a valid dns name" do
27
- BeValidDNSName.new.matches?(".").should be_false
27
+ BeValidDNSName.new.matches?(".").should be_falsey
28
28
  end
29
29
 
30
30
  it "does not match when actual contains a hyphen at the beginning" do
31
- BeValidDNSName.new.matches?("-localhost").should be_false
31
+ BeValidDNSName.new.matches?("-localhost").should be_falsey
32
32
  end
33
33
 
34
34
  it "does not match when actual contains a hyphen at the end" do
35
- BeValidDNSName.new.matches?("localhost-").should be_false
35
+ BeValidDNSName.new.matches?("localhost-").should be_falsey
36
36
  end
37
37
 
38
38
  it "provides a failure message" do
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+ require 'mspec/expectations/expectations'
3
+ require 'mspec/matchers'
4
+
5
+ describe BlockingMatcher do
6
+ it 'matches when a Proc blocks the caller' do
7
+ BlockingMatcher.new.matches?(proc { sleep }).should == true
8
+ end
9
+
10
+ it 'does not match when a Proc does not block the caller' do
11
+ BlockingMatcher.new.matches?(proc { 1 }).should == false
12
+ end
13
+ end