mspec 1.5.20 → 1.6.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dea78f04d5f7dd8d900b3a9de1462448b14a71db
4
+ data.tar.gz: a978b407496a528fbaf345bdf3188c52be68a8ad
5
+ SHA512:
6
+ metadata.gz: 1fd3e10ba43ac914f0191b93cd687c8d5bd299194f7a0b6c95d4dff4f52542a38e362c67ba5d13d74ec9a4c0842bbcff58d69be995404c7da79f0396166f66d3
7
+ data.tar.gz: 457f6c7dda4d73809de319c0c13a3d0047801f5f8e9927a7a681612cc290f27979e3d218ebb0166de34fe70caf013b2dc68fb69d97b559837d22da772d443da9
data/.travis.yml CHANGED
@@ -7,14 +7,12 @@ rvm:
7
7
  - 1.8.7
8
8
  - 1.9.3
9
9
  - 2.0.0
10
+ - 2.1.0
10
11
  - ruby-head
11
- - rbx-18mode
12
- - rbx-19mode
13
- - jruby-18mode
14
- - jruby-19mode
12
+ - rbx-2
13
+ - jruby-head
15
14
  allow_failures:
16
- - rvm: jruby-18mode
17
- - rvm: jruby-19mode
15
+ - rvm: jruby-head
18
16
  notifications:
19
17
  recipients:
20
18
  - brixen@gmail.com
data/README CHANGED
@@ -34,7 +34,7 @@ specs in a manner compatible with multiple Ruby implementations.
34
34
 
35
35
  2. Bundler
36
36
 
37
- A Gemfile is provides. Use Bundler to install gem dependencies. To install
37
+ A Gemfile is provided. Use Bundler to install gem dependencies. To install
38
38
  Bundler, run the following:
39
39
 
40
40
  $ gem install bundler
@@ -161,7 +161,9 @@ class MSpecMain < MSpecScript
161
161
  multi_exec argv
162
162
  else
163
163
  if config[:use_valgrind]
164
- more = ["--db-attach=#{config[:use_gdb] ? 'yes' : 'no'}", config[:target]] + argv
164
+ more = ["--child-silent-after-fork=yes",
165
+ "--db-attach=#{config[:use_gdb] ? 'yes' : 'no'}",
166
+ config[:target]] + argv
165
167
  exec "valgrind", *more
166
168
  elsif config[:use_gdb]
167
169
  more = ["--args", config[:target]] + argv
@@ -135,6 +135,8 @@ class SpecGuard
135
135
  RUBY_NAME =~ /^maglev/
136
136
  when :topaz
137
137
  RUBY_NAME =~ /^topaz/
138
+ when :opal
139
+ RUBY_NAME =~ /^opal/
138
140
  else
139
141
  false
140
142
  end
@@ -7,8 +7,8 @@ class VersionGuard < SpecGuard
7
7
  when String
8
8
  @version = SpecVersion.new version
9
9
  when Range
10
- a = SpecVersion.new version.first
11
- b = SpecVersion.new version.last
10
+ a = SpecVersion.new version.begin
11
+ b = SpecVersion.new version.end
12
12
  @version = version.exclude_end? ? a...b : a..b
13
13
  end
14
14
  self.parameters = [version]
@@ -30,9 +30,11 @@ end
30
30
  class Object
31
31
  def ruby_version_is(*args)
32
32
  g = VersionGuard.new(*args)
33
- g.name = :ruby_version_is
34
- yield if g.yield?
35
- ensure
36
- g.unregister
33
+ begin
34
+ g.name = :ruby_version_is
35
+ yield if g.yield?
36
+ ensure
37
+ g.unregister
38
+ end
37
39
  end
38
40
  end
@@ -25,4 +25,27 @@ class Object
25
25
  DateTime.new value[:year], value[:month], value[:day], value[:hour],
26
26
  value[:minute], value[:second], value[:offset], value[:sg]
27
27
  end
28
+
29
+ def with_timezone(name, offset = nil, daylight_saving_zone = "")
30
+ zone = name.dup
31
+
32
+ if offset
33
+ # TZ convention is backwards
34
+ offset = -offset
35
+
36
+ zone += offset.to_s
37
+ zone += ":00:00"
38
+ end
39
+ zone += daylight_saving_zone
40
+
41
+ old = ENV["TZ"]
42
+ ENV["TZ"] = zone
43
+
44
+ begin
45
+ yield
46
+ ensure
47
+ ENV["TZ"] = old
48
+ end
49
+ end
50
+
28
51
  end
@@ -38,13 +38,13 @@ class Object
38
38
  end
39
39
 
40
40
  # File.symlink? needs to be checked first as
41
- # File.exists? returns false for dangling symlinks
41
+ # File.exist? returns false for dangling symlinks
42
42
  if File.symlink? path
43
43
  File.unlink path
44
44
  elsif File.directory? path
45
45
  Dir.entries(path).each { |x| rm_r "#{path}/#{x}" unless x =~ /^\.\.?$/ }
46
46
  Dir.rmdir path
47
- elsif File.exists? path
47
+ elsif File.exist? path
48
48
  File.delete path
49
49
  end
50
50
  end
@@ -10,7 +10,11 @@ class IOStub < String
10
10
  end
11
11
 
12
12
  def puts(*str)
13
- write(str.collect { |s| s.to_s.chomp }.concat([nil]).join("\n"))
13
+ if str.empty?
14
+ write "\n"
15
+ else
16
+ write(str.collect { |s| s.to_s.chomp }.concat([nil]).join("\n"))
17
+ end
14
18
  end
15
19
 
16
20
  def printf(format, *args)
@@ -109,7 +109,7 @@ class Object
109
109
  # It has been reported that File.executable is not reliable
110
110
  # on Windows platforms (see commit 56bc555c). So, we check the
111
111
  # platform.
112
- if File.exists?(exe) and (PlatformGuard.windows? or File.executable?(exe))
112
+ if File.exist?(exe) and (PlatformGuard.windows? or File.executable?(exe))
113
113
  return [File.expand_path(exe), *rest].join(" ")
114
114
  end
115
115
  end
@@ -142,7 +142,7 @@ class Object
142
142
  def ruby_cmd(code, opts = {})
143
143
  body = code
144
144
 
145
- if code and not File.exists?(code)
145
+ if code and not File.exist?(code)
146
146
  if opts[:escape]
147
147
  code = "'#{code}'"
148
148
  else
@@ -32,7 +32,7 @@ end
32
32
 
33
33
  class Object
34
34
  def tmp(name, uniquify=true)
35
- Dir.mkdir SPEC_TEMP_DIR unless File.exists? SPEC_TEMP_DIR
35
+ Dir.mkdir SPEC_TEMP_DIR unless File.exist? SPEC_TEMP_DIR
36
36
 
37
37
  if uniquify and !name.empty?
38
38
  slash = name.rindex "/"
data/lib/mspec/helpers.rb CHANGED
@@ -10,7 +10,6 @@ require 'mspec/helpers/flunk'
10
10
  require 'mspec/helpers/fs'
11
11
  require 'mspec/helpers/hash'
12
12
  require 'mspec/helpers/io'
13
- require 'mspec/helpers/language_version'
14
13
  require 'mspec/helpers/mock_to_path'
15
14
  require 'mspec/helpers/numeric'
16
15
  require 'mspec/helpers/pack'
@@ -0,0 +1,51 @@
1
+ class RaiseExceptionMatcher
2
+ def initialize(exception, message, &block)
3
+ @exception = exception
4
+ @message = message
5
+ @block = block
6
+ end
7
+
8
+ def matches?(proc)
9
+ @result = proc.call
10
+ return false
11
+ rescue Object => @actual
12
+ return false unless @actual.instance_of? @exception
13
+ if @message then
14
+ case @message
15
+ when String then
16
+ return false if @message != @actual.message
17
+ when Regexp then
18
+ return false if @message !~ @actual.message
19
+ end
20
+ end
21
+
22
+ @block[@actual] if @block
23
+
24
+ return true
25
+ end
26
+
27
+ def failure_message
28
+ message = ["Expected #{@exception}#{%[ (#{@message})] if @message}"]
29
+
30
+ if @actual then
31
+ message << "but got #{@actual.class}#{%[ (#{@actual.message})] if @actual.message}"
32
+ else
33
+ message << "but no exception was raised (#@result was returned)"
34
+ end
35
+
36
+ message
37
+ end
38
+
39
+ def negative_failure_message
40
+ message = ["Expected to not get #{@exception}#{%[ (#{@message})] if @message}", ""]
41
+ message[1] = "but got #{@actual.class}#{%[ (#{@actual.message})] if @actual.message}" unless @actual.class == @exception
42
+ message
43
+ end
44
+ end
45
+
46
+ class Object
47
+ def raise_exception(exception=Exception, message=nil, &block)
48
+ RaiseExceptionMatcher.new(exception, message, &block)
49
+ end
50
+ end
51
+
@@ -31,6 +31,7 @@ require 'mspec/matchers/include'
31
31
  require 'mspec/matchers/infinity'
32
32
  require 'mspec/matchers/match_yaml'
33
33
  require 'mspec/matchers/raise_error'
34
+ require 'mspec/matchers/raise_exception'
34
35
  require 'mspec/matchers/output'
35
36
  require 'mspec/matchers/output_to_fd'
36
37
  require 'mspec/matchers/respond_to'
@@ -0,0 +1,54 @@
1
+ class SpecEvaluate
2
+ def self.desc=(desc)
3
+ @desc = desc
4
+ end
5
+
6
+ def self.desc
7
+ @desc ||= "evaluates "
8
+ end
9
+
10
+ def initialize(ruby, desc)
11
+ @ruby = ruby
12
+ @desc = desc || self.class.desc
13
+ end
14
+
15
+ # Formats the Ruby source code for reabable output in the -fs formatter
16
+ # option. If the source contains no newline characters, wraps the source in
17
+ # single quotes to set if off from the rest of the description string. If
18
+ # the source does contain newline characters, sets the indent level to four
19
+ # characters.
20
+ def format(ruby, newline=true)
21
+ if /\n/ =~ ruby
22
+ lines = ruby.rstrip.each_line.to_a
23
+ if /( *)/ =~ lines.first
24
+ if $1.size > 4
25
+ dedent = $1.size - 4
26
+ ruby = lines.map { |l| l[dedent..-1] }.join
27
+ else
28
+ indent = " " * (4 - $1.size)
29
+ ruby = lines.map { |l| "#{indent}#{l}" }.join
30
+ end
31
+ end
32
+ "\n#{ruby}"
33
+ else
34
+ "'#{ruby}'"
35
+ end
36
+ end
37
+
38
+ def define(&block)
39
+ ruby = @ruby
40
+ desc = @desc
41
+ evaluator = self
42
+
43
+ specify "#{desc} #{format ruby}" do
44
+ evaluator.instance_eval(ruby)
45
+ evaluator.instance_eval(&block)
46
+ end
47
+ end
48
+ end
49
+
50
+ class Object
51
+ def evaluate(str, desc=nil, &block)
52
+ SpecEvaluate.new(str, desc).define(&block)
53
+ end
54
+ end
@@ -354,6 +354,6 @@ module MSpec
354
354
  # Removes the tag file associated with a spec file.
355
355
  def self.delete_tags
356
356
  file = tags_file
357
- File.delete file if File.exists? file
357
+ File.delete file if File.exist? file
358
358
  end
359
359
  end
data/lib/mspec/runner.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'mspec/mocks'
2
2
  require 'mspec/runner/mspec'
3
3
  require 'mspec/runner/context'
4
+ require 'mspec/runner/evaluate'
4
5
  require 'mspec/runner/example'
5
6
  require 'mspec/runner/exception'
6
7
  require 'mspec/runner/object'
@@ -309,6 +309,7 @@ class MSpecOptions
309
309
  doc " a, *, spin SpinnerFormatter"
310
310
  doc " t, method MethodFormatter"
311
311
  doc " y, yaml YamlFormatter"
312
+ doc " p, profile ProfileFormatter"
312
313
  doc " j, junit JUnitFormatter\n"
313
314
 
314
315
  on("-o", "--output", "FILE",
data/lib/mspec/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'mspec/utils/version'
2
2
 
3
3
  module MSpec
4
- VERSION = SpecVersion.new "1.5.20"
4
+ VERSION = SpecVersion.new "1.6.0"
5
5
  end
@@ -12,8 +12,8 @@ describe Object, "#cp" do
12
12
  end
13
13
 
14
14
  after :each do
15
- File.delete @source if File.exists? @source
16
- File.delete @copy if File.exists? @copy
15
+ File.delete @source if File.exist? @source
16
+ File.delete @copy if File.exist? @copy
17
17
  end
18
18
 
19
19
  it "copies a file" do
@@ -30,17 +30,17 @@ describe Object, "#touch" do
30
30
  end
31
31
 
32
32
  after :each do
33
- File.delete @name if File.exists? @name
33
+ File.delete @name if File.exist? @name
34
34
  end
35
35
 
36
36
  it "creates a file" do
37
37
  touch @name
38
- File.exists?(@name).should be_true
38
+ File.exist?(@name).should be_true
39
39
  end
40
40
 
41
41
  it "accepts an optional mode argument" do
42
42
  touch @name, "wb"
43
- File.exists?(@name).should be_true
43
+ File.exist?(@name).should be_true
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.exists?(@name).should be_true
71
+ File.exist?(@name).should be_true
72
72
  end
73
73
  end
74
74
 
@@ -113,10 +113,10 @@ describe Object, "#rm_r" do
113
113
  end
114
114
 
115
115
  after :each do
116
- File.delete @link if File.exists? @link or File.symlink? @link
117
- File.delete @socket if File.exists? @socket
118
- File.delete @subfile if File.exists? @subfile
119
- File.delete @topfile if File.exists? @topfile
116
+ File.delete @link if File.exist? @link or File.symlink? @link
117
+ File.delete @socket if File.exist? @socket
118
+ File.delete @subfile if File.exist? @subfile
119
+ File.delete @topfile if File.exist? @topfile
120
120
 
121
121
  Dir.rmdir @subdir2 if File.directory? @subdir2
122
122
  Dir.rmdir @subdir1 if File.directory? @subdir1
@@ -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.exists?(@subfile).should be_false
132
+ File.exist?(@subfile).should be_false
133
133
  end
134
134
 
135
135
  it "removes multiple files" do
136
136
  rm_r @topfile, @subfile
137
- File.exists?(@topfile).should be_false
138
- File.exists?(@subfile).should be_false
137
+ File.exist?(@topfile).should be_false
138
+ File.exist?(@subfile).should be_false
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.exists?(@link).should be_false
145
+ File.exist?(@link).should be_false
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.exists?(@subdir1).should be_true
154
+ File.exist?(@subdir1).should be_true
155
155
  end
156
156
 
157
157
  it "removes a dangling symlink" do
@@ -166,7 +166,7 @@ describe Object, "#rm_r" do
166
166
  require 'socket'
167
167
  UNIXServer.new(@socket).close
168
168
  rm_r @socket
169
- File.exists?(@socket).should be_false
169
+ File.exist?(@socket).should be_false
170
170
  end
171
171
  end
172
172
 
@@ -34,6 +34,11 @@ describe IOStub do
34
34
  @out.should == "hello\n1\n2\n3\n"
35
35
  end
36
36
 
37
+ it "provides a puts method that appends separator if argument not given" do
38
+ @out.puts
39
+ @out.should == "\n"
40
+ end
41
+
37
42
  it "provides a printf method" do
38
43
  @out.printf "%-10s, %03d, %2.1f", "test", 42, 4.2
39
44
  @out.should == "test , 042, 4.2"
@@ -108,7 +108,7 @@ describe "#resolve_ruby_exe" do
108
108
  it "returns the value returned by #ruby_exe_options if it exists and is executable" do
109
109
  PlatformGuard.stub!(:windows?).and_return(false)
110
110
  @script.should_receive(:ruby_exe_options).and_return(@name)
111
- File.should_receive(:exists?).with(@name).and_return(true)
111
+ File.should_receive(:exist?).with(@name).and_return(true)
112
112
  File.should_receive(:executable?).with(@name).and_return(true)
113
113
  File.should_receive(:expand_path).with(@name).and_return(@name)
114
114
  @script.resolve_ruby_exe.should == @name
@@ -117,7 +117,7 @@ describe "#resolve_ruby_exe" do
117
117
  it "returns the value returned by #ruby_exe_options if it exists on Windows platforms" do
118
118
  PlatformGuard.stub!(:windows?).and_return(true)
119
119
  @script.should_receive(:ruby_exe_options).and_return(@name)
120
- File.should_receive(:exists?).with(@name).and_return(true)
120
+ File.should_receive(:exist?).with(@name).and_return(true)
121
121
  File.should_not_receive(:executable?)
122
122
  File.should_receive(:expand_path).with(@name).and_return(@name)
123
123
  @script.resolve_ruby_exe.should == @name
@@ -126,14 +126,14 @@ describe "#resolve_ruby_exe" do
126
126
  it "expands the path portion of the result of #ruby_exe_options" do
127
127
  PlatformGuard.stub!(:windows?).and_return(false)
128
128
  @script.should_receive(:ruby_exe_options).and_return("#{@name} -Xfoo")
129
- File.should_receive(:exists?).with(@name).and_return(true)
129
+ File.should_receive(:exist?).with(@name).and_return(true)
130
130
  File.should_receive(:executable?).with(@name).and_return(true)
131
131
  File.should_receive(:expand_path).with(@name).and_return("/usr/bin/#{@name}")
132
132
  @script.resolve_ruby_exe.should == "/usr/bin/#{@name} -Xfoo"
133
133
  end
134
134
 
135
135
  it "returns nil if no exe is found" do
136
- File.should_receive(:exists?).at_least(:once).and_return(false)
136
+ File.should_receive(:exist?).at_least(:once).and_return(false)
137
137
  @script.resolve_ruby_exe.should be_nil
138
138
  end
139
139
  end
@@ -162,23 +162,23 @@ describe Object, "#ruby_cmd" do
162
162
  end
163
163
 
164
164
  it "returns a command that runs the given file if it is a file that exists" do
165
- File.should_receive(:exists?).with(@file).and_return(true)
165
+ File.should_receive(:exist?).with(@file).and_return(true)
166
166
  @script.ruby_cmd(@file).should == "ruby_spec_exe -w -Q some/ruby/file.rb"
167
167
  end
168
168
 
169
169
  it "includes the given options and arguments with a file" do
170
- File.should_receive(:exists?).with(@file).and_return(true)
170
+ File.should_receive(:exist?).with(@file).and_return(true)
171
171
  @script.ruby_cmd(@file, :options => "-w -Cdir", :args => "< file.txt").should ==
172
172
  "ruby_spec_exe -w -Q -w -Cdir some/ruby/file.rb < file.txt"
173
173
  end
174
174
 
175
175
  it "returns a command that runs code using -e" do
176
- File.should_receive(:exists?).with(@code).and_return(false)
176
+ File.should_receive(:exist?).with(@code).and_return(false)
177
177
  @script.ruby_cmd(@code).should == %(ruby_spec_exe -w -Q -e "some \\"real\\" 'ruby' code")
178
178
  end
179
179
 
180
180
  it "includes the given options and arguments with -e" do
181
- File.should_receive(:exists?).with(@code).and_return(false)
181
+ File.should_receive(:exist?).with(@code).and_return(false)
182
182
  @script.ruby_cmd(@code, :options => "-W0 -Cdir", :args => "< file.txt").should ==
183
183
  %(ruby_spec_exe -w -Q -W0 -Cdir -e "some \\"real\\" 'ruby' code" < file.txt)
184
184
  end
@@ -14,7 +14,6 @@ describe EqualMatcher do
14
14
 
15
15
  it "does not match when actual is not a equal? to expected" do
16
16
  EqualMatcher.new(1).matches?(1.0).should == false
17
- EqualMatcher.new(1.5).matches?(1.5).should == false
18
17
  EqualMatcher.new("blue").matches?("blue").should == false
19
18
  EqualMatcher.new(Hash).matches?(Object).should == false
20
19
  end
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+ require 'mspec/expectations/expectations'
3
+ require 'mspec/matchers'
4
+
5
+ class ExpectedException < Exception; end
6
+ class UnexpectedException < Exception; end
7
+
8
+ describe RaiseExceptionMatcher do
9
+ it "matches when the proc raises the expected exception" do
10
+ proc = Proc.new { raise ExpectedException }
11
+ RaiseErrorMatcher.new(ExpectedException, nil).matches?(proc).should == true
12
+ end
13
+
14
+ it "executes it's optional block if matched" do
15
+ run = false
16
+ proc = Proc.new { raise ExpectedException }
17
+ matcher = RaiseErrorMatcher.new(ExpectedException, nil) { |error|
18
+ run = true
19
+ error.class.should == ExpectedException
20
+ }
21
+
22
+ matcher.matches?(proc).should == true
23
+ run.should == true
24
+ end
25
+
26
+ it "matches when the proc raises the expected exception with the expected message" do
27
+ proc = Proc.new { raise ExpectedException, "message" }
28
+ RaiseErrorMatcher.new(ExpectedException, "message").matches?(proc).should == true
29
+ end
30
+
31
+ it "does not match when the proc does not raise the expected exception" do
32
+ proc = Proc.new { raise UnexpectedException }
33
+ RaiseErrorMatcher.new(ExpectedException, nil).matches?(proc).should == false
34
+ end
35
+
36
+ it "does not match when the proc raises the expected exception with an unexpected message" do
37
+ proc = Proc.new { raise ExpectedException, "unexpected" }
38
+ RaiseErrorMatcher.new(ExpectedException, "expected").matches?(proc).should == false
39
+ end
40
+
41
+ it "does not match when the proc does not raise an exception" do
42
+ proc = Proc.new {}
43
+ RaiseErrorMatcher.new(ExpectedException, "expected").matches?(proc).should == false
44
+ end
45
+
46
+ it "does not match when the raised exception is not an instance of the expected exception" do
47
+ proc = Proc.new { raise Exception }
48
+ RaiseErrorMatcher.new(ExpectedException, nil).matches?(proc).should == false
49
+ end
50
+
51
+ it "provides a useful failure message" do
52
+ proc = Proc.new { raise UnexpectedException, "unexpected" }
53
+ matcher = RaiseErrorMatcher.new(ExpectedException, "expected")
54
+ matcher.matches?(proc)
55
+ matcher.failure_message.should ==
56
+ ["Expected ExpectedException (expected)", "but got UnexpectedException (unexpected)"]
57
+ end
58
+
59
+ it "provides a useful failure message when no exception is raised" do
60
+ proc = Proc.new { 120 }
61
+ matcher = RaiseErrorMatcher.new(ExpectedException, "expected")
62
+ matcher.matches?(proc)
63
+ matcher.failure_message.should ==
64
+ ["Expected ExpectedException (expected)", "but no exception was raised (120 was returned)"]
65
+ end
66
+
67
+ it "provides a useful negative failure message" do
68
+ proc = Proc.new { raise ExpectedException, "expected" }
69
+ matcher = RaiseErrorMatcher.new(ExpectedException, "expected")
70
+ matcher.matches?(proc)
71
+ matcher.negative_failure_message.should ==
72
+ ["Expected to not get ExpectedException (expected)", ""]
73
+ end
74
+
75
+ it "provides a useful negative failure message for strict subclasses of the matched exception class" do
76
+ proc = Proc.new { raise UnexpectedException, "unexpected" }
77
+ matcher = RaiseErrorMatcher.new(Exception, nil)
78
+ matcher.matches?(proc)
79
+ matcher.negative_failure_message.should ==
80
+ ["Expected to not get Exception", "but got UnexpectedException (unexpected)"]
81
+ end
82
+ end
@@ -535,7 +535,7 @@ describe MSpec, ".delete_tags" do
535
535
 
536
536
  it "deletes the tag file" do
537
537
  MSpec.delete_tags
538
- File.exists?(@tags).should be_false
538
+ File.exist?(@tags).should be_false
539
539
  end
540
540
  end
541
541
 
metadata CHANGED
@@ -1,51 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.20
5
- prerelease:
4
+ version: 1.6.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Brian Shirai
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-20 00:00:00.000000000 Z
11
+ date: 2014-12-21 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '10.0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '10.0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rspec
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ~>
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
33
  version: '2.8'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ~>
38
+ - - "~>"
44
39
  - !ruby/object:Gem::Version
45
40
  version: '2.8'
46
- description: ! 'MSpec is a specialized framework for RubySpec.
47
-
48
- '
41
+ description: |
42
+ MSpec is a specialized framework for RubySpec.
49
43
  email:
50
44
  - bshirai@engineyard.com
51
45
  executables:
@@ -59,8 +53,8 @@ extra_rdoc_files:
59
53
  - README
60
54
  - LICENSE
61
55
  files:
62
- - .gitignore
63
- - .travis.yml
56
+ - ".gitignore"
57
+ - ".travis.yml"
64
58
  - Gemfile
65
59
  - LICENSE
66
60
  - README
@@ -117,7 +111,6 @@ files:
117
111
  - lib/mspec/helpers/fs.rb
118
112
  - lib/mspec/helpers/hash.rb
119
113
  - lib/mspec/helpers/io.rb
120
- - lib/mspec/helpers/language_version.rb
121
114
  - lib/mspec/helpers/mock_to_path.rb
122
115
  - lib/mspec/helpers/numeric.rb
123
116
  - lib/mspec/helpers/pack.rb
@@ -163,6 +156,7 @@ files:
163
156
  - lib/mspec/matchers/output.rb
164
157
  - lib/mspec/matchers/output_to_fd.rb
165
158
  - lib/mspec/matchers/raise_error.rb
159
+ - lib/mspec/matchers/raise_exception.rb
166
160
  - lib/mspec/matchers/respond_to.rb
167
161
  - lib/mspec/matchers/signed_zero.rb
168
162
  - lib/mspec/matchers/stringsymboladapter.rb
@@ -181,6 +175,7 @@ files:
181
175
  - lib/mspec/runner/actions/tally.rb
182
176
  - lib/mspec/runner/actions/timer.rb
183
177
  - lib/mspec/runner/context.rb
178
+ - lib/mspec/runner/evaluate.rb
184
179
  - lib/mspec/runner/example.rb
185
180
  - lib/mspec/runner/exception.rb
186
181
  - lib/mspec/runner/filters.rb
@@ -256,7 +251,6 @@ files:
256
251
  - spec/helpers/fs_spec.rb
257
252
  - spec/helpers/hash_spec.rb
258
253
  - spec/helpers/io_spec.rb
259
- - spec/helpers/language_version_spec.rb
260
254
  - spec/helpers/mock_to_path_spec.rb
261
255
  - spec/helpers/numeric_spec.rb
262
256
  - spec/helpers/ruby_exe_spec.rb
@@ -298,6 +292,7 @@ files:
298
292
  - spec/matchers/output_spec.rb
299
293
  - spec/matchers/output_to_fd_spec.rb
300
294
  - spec/matchers/raise_error_spec.rb
295
+ - spec/matchers/raise_exception_spec.rb
301
296
  - spec/matchers/respond_to_spec.rb
302
297
  - spec/matchers/signed_zero_spec.rb
303
298
  - spec/matchers/stringsymboladapter_spec.rb
@@ -341,32 +336,31 @@ files:
341
336
  - spec/utils/version_spec.rb
342
337
  homepage: http://rubyspec.org
343
338
  licenses: []
339
+ metadata: {}
344
340
  post_install_message:
345
341
  rdoc_options:
346
- - --title
342
+ - "--title"
347
343
  - MSpec Gem
348
- - --main
344
+ - "--main"
349
345
  - README
350
- - --line-numbers
346
+ - "--line-numbers"
351
347
  require_paths:
352
348
  - lib
353
349
  required_ruby_version: !ruby/object:Gem::Requirement
354
- none: false
355
350
  requirements:
356
- - - ! '>='
351
+ - - ">="
357
352
  - !ruby/object:Gem::Version
358
353
  version: '0'
359
354
  required_rubygems_version: !ruby/object:Gem::Requirement
360
- none: false
361
355
  requirements:
362
- - - ! '>='
356
+ - - ">="
363
357
  - !ruby/object:Gem::Version
364
358
  version: '0'
365
359
  requirements: []
366
360
  rubyforge_project: http://rubyforge.org/projects/mspec
367
- rubygems_version: 1.8.23
361
+ rubygems_version: 2.2.2
368
362
  signing_key:
369
- specification_version: 3
363
+ specification_version: 4
370
364
  summary: MSpec is a specialized framework that is syntax-compatible with RSpec for
371
365
  basic things like describe, it blocks and before, after actions. MSpec contains
372
366
  additional features that assist in writing the RubySpecs used by multiple Ruby implementations.
@@ -417,7 +411,6 @@ test_files:
417
411
  - spec/helpers/fs_spec.rb
418
412
  - spec/helpers/hash_spec.rb
419
413
  - spec/helpers/io_spec.rb
420
- - spec/helpers/language_version_spec.rb
421
414
  - spec/helpers/mock_to_path_spec.rb
422
415
  - spec/helpers/numeric_spec.rb
423
416
  - spec/helpers/ruby_exe_spec.rb
@@ -459,6 +452,7 @@ test_files:
459
452
  - spec/matchers/output_spec.rb
460
453
  - spec/matchers/output_to_fd_spec.rb
461
454
  - spec/matchers/raise_error_spec.rb
455
+ - spec/matchers/raise_exception_spec.rb
462
456
  - spec/matchers/respond_to_spec.rb
463
457
  - spec/matchers/signed_zero_spec.rb
464
458
  - spec/matchers/stringsymboladapter_spec.rb
@@ -1,30 +0,0 @@
1
- require 'mspec/guards/guard'
2
-
3
- class Object
4
- # Helper for syntax-sensitive specs. The specs should be placed in a file in
5
- # the +versions+ subdirectory. For example, suppose language/method_spec.rb
6
- # contains specs whose syntax depends on the Ruby version. In the
7
- # language/method_spec.rb use the helper as follows:
8
- #
9
- # language_version __FILE__, "method"
10
- #
11
- # Then add a file "language/versions/method_1.8.rb" for the specs that are
12
- # syntax-compatible with Ruby 1.8.x.
13
- #
14
- # The most version-specific file will be loaded. If the version is 1.8.6,
15
- # "method_1.8.6.rb" will be loaded if it exists, otherwise "method_1.8.rb"
16
- # will be loaded if it exists.
17
- def language_version(dir, name)
18
- path = File.dirname(File.expand_path(dir))
19
-
20
- [SpecGuard.ruby_version(:tiny), SpecGuard.ruby_version].each do |version|
21
- file = File.join path, "versions", "#{name}_#{version}.rb"
22
- if File.exists? file
23
- require file
24
- break
25
- end
26
- end
27
-
28
- nil
29
- end
30
- end
@@ -1,40 +0,0 @@
1
- require 'spec_helper'
2
- require 'mspec/guards'
3
- require 'mspec/helpers'
4
-
5
- describe Object, "#language_version" do
6
- before :all do
7
- @ruby_version = Object.const_get :RUBY_VERSION
8
-
9
- Object.const_set :RUBY_VERSION, "8.2.3"
10
-
11
- dir = "#{File.expand_path('../', __FILE__)}/versions"
12
- @method82 = "#{dir}/method_8.2.rb"
13
- @method823 = "#{dir}/method_8.2.3.rb"
14
- end
15
-
16
- after :all do
17
- Object.const_set :RUBY_VERSION, @ruby_version
18
- end
19
-
20
- it "loads the most version-specific file if it exists" do
21
- File.should_receive(:exists?).with(@method823).and_return(true)
22
- should_receive(:require).with(@method823)
23
- language_version __FILE__, "method"
24
- end
25
-
26
- it "loads a less version-specific file if it exists" do
27
- File.should_receive(:exists?).with(@method823).and_return(false)
28
- File.should_receive(:exists?).with(@method82).and_return(true)
29
- should_receive(:require).with(@method82)
30
- language_version __FILE__, "method"
31
- end
32
-
33
- it "does not load the file if it does not exist" do
34
- File.should_receive(:exists?).with(@method82).and_return(false)
35
- File.should_receive(:exists?).with(@method823).and_return(false)
36
- should_not_receive(:require).with(@method82)
37
- should_not_receive(:require).with(@method823)
38
- language_version __FILE__, "method"
39
- end
40
- end