mspec 1.5.16 → 1.5.17

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -18,7 +18,7 @@ spec = Gem::Specification.new do |s|
18
18
 
19
19
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
20
20
  s.authors = ["Brian Ford"]
21
- s.date = %q{2010-02-08}
21
+ s.date = %q{2010-03-13}
22
22
  s.email = %q{bford@engineyard.com}
23
23
  s.has_rdoc = true
24
24
  s.extra_rdoc_files = %w[ README LICENSE ]
data/bin/mkspec CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
3
+ $:.unshift File.expand_path('../../lib', __FILE__)
4
4
 
5
5
  require 'mspec/commands/mkspec'
6
6
 
data/bin/mspec CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
3
+ $:.unshift File.expand_path('../../lib', __FILE__)
4
4
 
5
5
  require 'mspec/commands/mspec'
6
6
 
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
3
+ $:.unshift File.expand_path('../../lib', __FILE__)
4
4
 
5
5
  require 'mspec/commands/mspec-ci'
6
6
  require 'mspec'
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
3
+ $:.unshift File.expand_path('../../lib', __FILE__)
4
4
 
5
5
  require 'mspec/commands/mspec-run'
6
6
  require 'mspec'
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
3
+ $:.unshift File.expand_path('../../lib', __FILE__)
4
4
 
5
5
  require 'mspec/commands/mspec-tag'
6
6
  require 'mspec'
@@ -16,13 +16,14 @@ class MkSpec
16
16
  @config = {
17
17
  :constants => [],
18
18
  :requires => [],
19
- :base => "spec/ruby/1.8/core"
19
+ :base => "core",
20
+ :version => nil
20
21
  }
21
- @map = NameMap.new
22
+ @map = NameMap.new true
22
23
  end
23
24
 
24
25
  def options(argv=ARGV)
25
- options = MSpecOptions.new "mkspec [options]"
26
+ options = MSpecOptions.new "mkspec [options]", 32
26
27
 
27
28
  options.on("-c", "--constant", "CONSTANT",
28
29
  "Class or Module to generate spec stubs for") do |name|
@@ -36,6 +37,10 @@ class MkSpec
36
37
  "A library to require") do |file|
37
38
  config[:requires] << file
38
39
  end
40
+ options.on("-V", "--version-guard", "VERSION",
41
+ "Specify version for ruby_version_is guards") do |version|
42
+ config[:version] = version
43
+ end
39
44
  options.version MSpec::VERSION
40
45
  options.help
41
46
 
@@ -45,7 +50,7 @@ class MkSpec
45
50
  options.doc " 2. To create spec stubs for Fixnum\n"
46
51
  options.doc " $ mkspec -c Fixnum\n"
47
52
  options.doc " 3. To create spec stubs for Complex in 'superspec/complex'\n"
48
- options.doc " $ mkspec -c Complex -rcomplex -b superspec"
53
+ options.doc " $ mkspec -c Complex -r complex -b superspec"
49
54
  options.doc ""
50
55
 
51
56
  options.parse argv
@@ -71,13 +76,24 @@ class MkSpec
71
76
  parents = '../' * ($1.split('/').length + 1)
72
77
 
73
78
  File.open file, 'w' do |f|
74
- f.puts "require File.dirname(__FILE__) + '/#{parents}spec_helper'"
79
+ f.puts "require File.expand_path('../#{parents}spec_helper', __FILE__)"
75
80
  config[:requires].each do |lib|
76
81
  f.puts "require '#{lib}'"
77
82
  end
78
83
  end
79
84
  end
80
85
 
86
+ def write_version(f)
87
+ f.puts ""
88
+ if version = config[:version]
89
+ f.puts "ruby_version_is #{version} do"
90
+ yield " "
91
+ f.puts "end"
92
+ else
93
+ yield ""
94
+ end
95
+ end
96
+
81
97
  def write_spec(file, meth, exists)
82
98
  if exists
83
99
  out = `#{ruby} #{MSPEC_HOME}/bin/mspec-run --dry-run -fs -e '#{meth}' #{file}`
@@ -85,12 +101,13 @@ class MkSpec
85
101
  end
86
102
 
87
103
  File.open file, 'a' do |f|
88
- f.puts <<-EOS
89
-
90
- describe "#{meth}" do
91
- it "needs to be reviewed for spec completeness"
92
- end
104
+ write_version(f) do |indent|
105
+ f.puts <<-EOS
106
+ #{indent}describe "#{meth}" do
107
+ #{indent} it "needs to be reviewed for spec completeness"
108
+ #{indent}end
93
109
  EOS
110
+ end
94
111
  end
95
112
 
96
113
  puts file
@@ -107,7 +124,7 @@ EOS
107
124
  def run
108
125
  config[:requires].each { |lib| require lib }
109
126
  constants = config[:constants]
110
- constants = @map.filter(Object.constants) if constants.empty?
127
+ constants = Object.constants if constants.empty?
111
128
 
112
129
  @map.map({}, constants).each do |mod, methods|
113
130
  name = mod.chop
@@ -11,6 +11,7 @@ require 'mspec/guards/noncompliance'
11
11
  require 'mspec/guards/platform'
12
12
  require 'mspec/guards/quarantine'
13
13
  require 'mspec/guards/runner'
14
+ require 'mspec/guards/specified'
14
15
  require 'mspec/guards/support'
15
16
  require 'mspec/guards/superuser'
16
17
  require 'mspec/guards/tty'
@@ -0,0 +1,66 @@
1
+ require 'mspec/guards/guard'
2
+
3
+ class UnspecifiedGuard < SpecGuard
4
+ def match?
5
+ not standard?
6
+ end
7
+ end
8
+
9
+ class SpecifiedOnGuard < SpecGuard
10
+ def match?
11
+ if @args.include? :ruby
12
+ raise Exception, "improper use of specified_on guard"
13
+ end
14
+ not standard? and implementation?(*@args)
15
+ end
16
+ end
17
+
18
+ class Object
19
+ # This guard wraps one or more #specified_on guards to group them and
20
+ # document the specs. The purpose of the guard is for situations where MRI
21
+ # either does not specify Ruby behavior or where MRI's behavior is all but
22
+ # impossible to spec, for example due to relying on platform-specific
23
+ # behavior that is not easily testable from Ruby code. In such cases, it
24
+ # may be desirable for implementations to explore a specified set of
25
+ # behaviors that are explicitly documented in the specs.
26
+ #
27
+ # unspecified do
28
+ # specified_on :rubinius, :ironruby do
29
+ # it "returns true when passed :foo" do
30
+ # # ...
31
+ # end
32
+ #
33
+ # it "returns false when passed :bar" do
34
+ # # ...
35
+ # end
36
+ # end
37
+ #
38
+ # specified_on :jruby do
39
+ # it "returns true when passed :bar" do
40
+ # # ...
41
+ # end
42
+ # end
43
+ # end
44
+ #
45
+ # Note that these guards do not change the policy of the #compliant_on,
46
+ # #not_compliant_on, #deviates_on, #extended_on, and #not_supported_on
47
+ # guards.
48
+ #
49
+ def unspecified
50
+ g = UnspecifiedGuard.new
51
+ g.name = :unspecified
52
+ yield if g.yield?
53
+ ensure
54
+ g.unregister
55
+ end
56
+
57
+ # This guard wraps specs for one or more particular implementations. See the
58
+ # #unspecified guard for further documentation.
59
+ def specified_on(*args)
60
+ g = SpecifiedOnGuard.new(*args)
61
+ g.name = :specified_on
62
+ yield if g.yield?
63
+ ensure
64
+ g.unregister
65
+ end
66
+ end
@@ -19,3 +19,18 @@ class IOStub < String
19
19
  self
20
20
  end
21
21
  end
22
+
23
+ class Object
24
+ # Creates a "bare" file descriptor (i.e. one that is not associated
25
+ # with any Ruby object). The file descriptor can safely be passed
26
+ # to IO.new without creating a Ruby object alias to the fd.
27
+ def new_fd(name, mode="w:utf-8")
28
+ IO.sysopen name, fmode(mode)
29
+ end
30
+
31
+ # Creates an IO instance for a temporary file name. The file
32
+ # must be deleted.
33
+ def new_io(name, mode="w:utf-8")
34
+ IO.new new_fd(name, fmode(mode))
35
+ end
36
+ end
@@ -156,7 +156,12 @@ module Mock
156
156
 
157
157
  if pass
158
158
  proxy.called
159
- return proxy.returning
159
+
160
+ if proxy.raising?
161
+ raise proxy.raising
162
+ else
163
+ return proxy.returning
164
+ end
160
165
  end
161
166
  end
162
167
  end
@@ -24,9 +24,12 @@ class NumericMockObject < Numeric
24
24
  end
25
25
 
26
26
  class MockProxy
27
+ attr_reader :raising, :yielding
28
+
27
29
  def initialize(type=nil)
28
30
  @multiple_returns = nil
29
31
  @returning = nil
32
+ @raising = nil
30
33
  @yielding = []
31
34
  @arguments = :any_args
32
35
  @type = type || :mock
@@ -122,15 +125,23 @@ class MockProxy
122
125
  self
123
126
  end
124
127
 
128
+ def and_raise(exception)
129
+ if exception.kind_of? String
130
+ @raising = RuntimeError.new exception
131
+ else
132
+ @raising = exception
133
+ end
134
+ end
135
+
136
+ def raising?
137
+ @raising != nil
138
+ end
139
+
125
140
  def and_yield(*args)
126
141
  @yielding << args
127
142
  self
128
143
  end
129
144
 
130
- def yielding
131
- @yielding
132
- end
133
-
134
145
  def yielding?
135
146
  !@yielding.empty?
136
147
  end
@@ -60,8 +60,14 @@ class NameMap
60
60
  MSpecScript
61
61
  MkSpec
62
62
  DTracer
63
+ Etc
64
+ FileUtils
65
+ MSpecOption
66
+ MSpecOptions
63
67
  NameMap
64
68
  OptionParser
69
+ RbConfig
70
+ SpecVersion
65
71
  YAML
66
72
  ]
67
73
 
@@ -1,5 +1,5 @@
1
1
  require 'mspec/utils/version'
2
2
 
3
3
  module MSpec
4
- VERSION = SpecVersion.new "1.5.16"
4
+ VERSION = SpecVersion.new "1.5.17"
5
5
  end
@@ -74,6 +74,30 @@ describe "The -r, --require LIBRARY option" do
74
74
  end
75
75
  end
76
76
 
77
+ describe "The -V, --version-guard VERSION option" do
78
+ before :each do
79
+ @options = MSpecOptions.new
80
+ MSpecOptions.stub!(:new).and_return(@options)
81
+ @script = MkSpec.new
82
+ @config = @script.config
83
+ end
84
+
85
+ it "is enabled by #options" do
86
+ @options.stub!(:on)
87
+ @options.should_receive(:on).with("-V", "--version-guard", "VERSION",
88
+ an_instance_of(String))
89
+ @script.options
90
+ end
91
+
92
+ it "sets the version for the ruby_version_is guards to VERSION" do
93
+ ["-r", "--require"].each do |opt|
94
+ @config[:requires] = []
95
+ @script.options [opt, "libspec"]
96
+ @config[:requires].should include("libspec")
97
+ end
98
+ end
99
+ end
100
+
77
101
  describe MkSpec, "#options" do
78
102
  before :each do
79
103
  @options = MSpecOptions.new
@@ -143,13 +167,13 @@ describe MkSpec, "#write_requires" do
143
167
  end
144
168
 
145
169
  it "writes the spec_helper require line" do
146
- @file.should_receive(:puts).with("require File.dirname(__FILE__) + '/../../../spec_helper'")
170
+ @file.should_receive(:puts).with("require File.expand_path('../../../../spec_helper', __FILE__)")
147
171
  @script.write_requires("spec/core/tcejbo", "spec/core/tcejbo/inspect_spec.rb")
148
172
  end
149
173
 
150
174
  it "writes require lines for each library specified on the command line" do
151
175
  @file.stub!(:puts)
152
- @file.should_receive(:puts).with("require File.dirname(__FILE__) + '/../../../spec_helper'")
176
+ @file.should_receive(:puts).with("require File.expand_path('../../../../spec_helper', __FILE__)")
153
177
  @file.should_receive(:puts).with("require 'complex'")
154
178
  @script.config[:requires] << 'complex'
155
179
  @script.write_requires("spec/core/tcejbo", "spec/core/tcejbo/inspect_spec.rb")
@@ -158,8 +182,7 @@ end
158
182
 
159
183
  describe MkSpec, "#write_spec" do
160
184
  before :each do
161
- @file = mock("file")
162
- @file.stub!(:puts)
185
+ @file = IOStub.new
163
186
  File.stub!(:open).and_yield(@file)
164
187
 
165
188
  @script = MkSpec.new
@@ -198,26 +221,40 @@ describe MkSpec, "#write_spec" do
198
221
  end
199
222
 
200
223
  it "writes a template spec to the file if the spec file does not exist" do
201
- @file.should_receive(:puts)
224
+ @file.should_receive(:puts).twice
202
225
  @script.should_receive(:puts).with("spec/core/tcejbo/inspect_spec.rb")
203
226
  @script.write_spec("spec/core/tcejbo/inspect_spec.rb", "Object#inspect", false)
204
227
  end
205
228
 
206
229
  it "writes a template spec to the file if it exists but contains no spec for the method" do
207
230
  @response.should_receive(:=~).and_return(false)
208
- @file.should_receive(:puts)
231
+ @file.should_receive(:puts).twice
209
232
  @script.should_receive(:puts).with("spec/core/tcejbo/inspect_spec.rb")
210
233
  @script.write_spec("spec/core/tcejbo/inspect_spec.rb", "Object#inspect", true)
211
234
  end
212
235
 
213
236
  it "writes a template spec" do
214
- @file.should_receive(:puts).with(<<EOS)
237
+ @script.write_spec("spec/core/tcejbo/inspect_spec.rb", "Object#inspect", true)
238
+ @file.should == <<EOS
215
239
 
216
240
  describe "Object#inspect" do
217
241
  it "needs to be reviewed for spec completeness"
218
242
  end
219
243
  EOS
244
+ end
245
+
246
+ it "writes a template spec with version guard" do
247
+ @script.config[:version] = '""..."1.9"'
220
248
  @script.write_spec("spec/core/tcejbo/inspect_spec.rb", "Object#inspect", true)
249
+ @file.should == <<EOS
250
+
251
+ ruby_version_is ""..."1.9" do
252
+ describe "Object#inspect" do
253
+ it "needs to be reviewed for spec completeness"
254
+ end
255
+ end
256
+ EOS
257
+
221
258
  end
222
259
  end
223
260
 
@@ -283,14 +320,6 @@ describe MkSpec, "#run" do
283
320
  @script.run
284
321
  end
285
322
 
286
- it "creates a map of Object.constants if not constants are specified" do
287
- @script.config[:constants] = []
288
- Object.stub!(:constants).and_return(["Object"])
289
- @map.should_receive(:filter).with(["Object"]).and_return(["Object"])
290
- @map.should_receive(:map).with({}, ["Object"]).and_return({})
291
- @script.run
292
- end
293
-
294
323
  it "calls #create_directory for each class/module in the map" do
295
324
  @script.should_receive(:create_directory).with("MkSpec").twice
296
325
  @script.run
@@ -0,0 +1,102 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'mspec/guards/specified'
3
+
4
+ describe Object, "#unspecified" do
5
+ before :each do
6
+ ScratchPad.clear
7
+
8
+ @guard = UnspecifiedGuard.new
9
+ UnspecifiedGuard.stub!(:new).and_return(@guard)
10
+ end
11
+
12
+ it "does not yield if #standard? returns true" do
13
+ @guard.should_receive(:standard?).and_return(true)
14
+ unspecified { ScratchPad.record :yield }
15
+ ScratchPad.recorded.should be_nil
16
+ end
17
+
18
+ it "yields if #standard? returns false" do
19
+ @guard.should_receive(:standard?).and_return(false)
20
+ unspecified { ScratchPad.record :yield }
21
+ ScratchPad.recorded.should == :yield
22
+ end
23
+
24
+ it "sets the name of the guard to :unspecified" do
25
+ @guard.should_receive(:standard?).and_return(true)
26
+ unspecified { }
27
+ @guard.name.should == :unspecified
28
+ end
29
+
30
+ it "calls #unregister even when an exception is raised in the guard block" do
31
+ guard = UnspecifiedGuard.new :rubinius
32
+ UnspecifiedGuard.stub!(:new).and_return(guard)
33
+ guard.should_receive(:match?).and_return(true)
34
+ guard.should_receive(:unregister)
35
+
36
+ lambda do
37
+ unspecified { raise Exception }
38
+ end.should raise_error(Exception)
39
+ end
40
+ end
41
+
42
+ describe Object, "#specified_on" do
43
+ before :each do
44
+ ScratchPad.clear
45
+ end
46
+
47
+ it "raises an Exception when passed :ruby" do
48
+ lambda {
49
+ specifed_on(:ruby) { ScratchPad.record :yield }
50
+ }.should raise_error(Exception)
51
+ ScratchPad.recorded.should_not == :yield
52
+ end
53
+
54
+ it "does not yield when #standard? returns true" do
55
+ guard = SpecifiedOnGuard.new
56
+ SpecifiedOnGuard.stub!(:new).and_return(guard)
57
+ guard.should_receive(:standard?).and_return(true)
58
+
59
+ specified_on(:rubinius) { ScratchPad.record :yield }
60
+ ScratchPad.recorded.should be_nil
61
+ end
62
+
63
+ it "does not yield when #standard? returns false and #implementation? returns false" do
64
+ guard = SpecifiedOnGuard.new :rubinius
65
+ SpecifiedOnGuard.stub!(:new).and_return(guard)
66
+ guard.should_receive(:standard?).and_return(false)
67
+ guard.should_receive(:implementation?).with(:rubinius).and_return(false)
68
+
69
+ specified_on(:rubinius) { ScratchPad.record :yield }
70
+ ScratchPad.recorded.should be_nil
71
+ end
72
+
73
+ it "yields when #standard? returns false and #implementation? returns true" do
74
+ guard = SpecifiedOnGuard.new :rubinius
75
+ SpecifiedOnGuard.stub!(:new).and_return(guard)
76
+ guard.should_receive(:standard?).and_return(false)
77
+ guard.should_receive(:implementation?).with(:rubinius).and_return(true)
78
+
79
+ specified_on(:rubinius) { ScratchPad.record :yield }
80
+ ScratchPad.recorded.should == :yield
81
+ end
82
+
83
+ it "sets the name of the guard to :specified_on" do
84
+ guard = SpecifiedOnGuard.new :rubinius
85
+ SpecifiedOnGuard.stub!(:new).and_return(guard)
86
+ guard.should_receive(:match?).and_return(false)
87
+
88
+ specified_on(:rubinius) { }
89
+ guard.name.should == :specified_on
90
+ end
91
+
92
+ it "calls #unregister even when an exception is raised in the guard block" do
93
+ guard = SpecifiedOnGuard.new :rubinius
94
+ SpecifiedOnGuard.stub!(:new).and_return(guard)
95
+ guard.should_receive(:match?).and_return(true)
96
+ guard.should_receive(:unregister)
97
+
98
+ lambda do
99
+ specified_on(:rubinius) { raise Exception }
100
+ end.should raise_error(Exception)
101
+ end
102
+ end
@@ -1,4 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'mspec/helpers/io'
3
+ require 'mspec/helpers/fs'
4
+ require 'mspec/helpers/tmp'
2
5
 
3
6
  describe IOStub do
4
7
  before :each do
@@ -41,3 +44,56 @@ describe IOStub do
41
44
  @out.flush.should == @out
42
45
  end
43
46
  end
47
+
48
+ describe Object, "#new_fd" do
49
+ before :each do
50
+ @name = tmp("io_specs")
51
+ end
52
+
53
+ after :each do
54
+ @io.close unless @io.closed?
55
+ rm_r @name
56
+ end
57
+
58
+ it "returns a Fixnum that can be used to create an IO instance" do
59
+ fd = new_fd @name
60
+ fd.should be_an_instance_of(Fixnum)
61
+
62
+ @io = IO.new fd
63
+ @io.sync = true
64
+ @io.print "io data"
65
+
66
+ IO.read(@name).should == "io data"
67
+ end
68
+ end
69
+
70
+ describe Object, "#new_io" do
71
+ before :each do
72
+ @name = tmp("io_specs.txt")
73
+ end
74
+
75
+ after :each do
76
+ @io.close if @io and !@io.closed?
77
+ rm_r @name
78
+ end
79
+
80
+ it "returns an IO instance" do
81
+ @io = new_io @name
82
+ @io.should be_an_instance_of(IO)
83
+ end
84
+
85
+ it "opens the IO for reading if passed 'r'" do
86
+ touch(@name) { |f| f.print "io data" }
87
+ @io = new_io @name, "r"
88
+ @io.read.should == "io data"
89
+ lambda { @io.puts "more data" }.should raise_error(IOError)
90
+ end
91
+
92
+ it "opens the IO for writing if passed 'w'" do
93
+ @io = new_io @name, "w"
94
+ @io.sync = true
95
+
96
+ @io.print "io data"
97
+ IO.read(@name).should == "io data"
98
+ end
99
+ end
@@ -207,6 +207,8 @@ describe Mock, ".install_method" do
207
207
  end
208
208
  end
209
209
 
210
+ class MockAndRaiseError < Exception; end
211
+
210
212
  describe Mock, ".verify_call" do
211
213
  before :each do
212
214
  MSpec.stub!(:actions)
@@ -304,6 +306,13 @@ describe Mock, ".verify_call" do
304
306
  Mock.verify_call(@mock, :method_call) {|*a|}
305
307
  }.should_not raise_error(SpecExpectationNotMetError)
306
308
  end
309
+
310
+ it "raises an exception when expected to" do
311
+ @proxy.and_raise(MockAndRaiseError)
312
+ lambda {
313
+ Mock.verify_call @mock, :method_call
314
+ }.should raise_error(MockAndRaiseError)
315
+ end
307
316
  end
308
317
 
309
318
  describe Mock, ".verify_count" do
@@ -330,6 +330,29 @@ describe MockProxy, "#and_yield" do
330
330
  end
331
331
  end
332
332
 
333
+ describe MockProxy, "#raising" do
334
+ before :each do
335
+ @proxy = MockProxy.new
336
+ end
337
+
338
+ it "returns nil by default" do
339
+ @proxy.raising.should be_nil
340
+ end
341
+
342
+ it "returns the exception object passed to #and_raise" do
343
+ exc = mock("exception")
344
+ @proxy.and_raise(exc)
345
+ @proxy.raising.should equal(exc)
346
+ end
347
+
348
+ it "returns an instance of RuntimeError when a String is passed to #and_raise" do
349
+ @proxy.and_raise("an error")
350
+ exc = @proxy.raising
351
+ exc.should be_an_instance_of(RuntimeError)
352
+ exc.message.should == "an error"
353
+ end
354
+ end
355
+
333
356
  describe MockProxy, "#yielding" do
334
357
  before :each do
335
358
  @proxy = MockProxy.new
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.16
4
+ version: 1.5.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Ford
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-08 00:00:00 -08:00
12
+ date: 2010-03-13 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -47,6 +47,7 @@ files:
47
47
  - lib/mspec/guards/platform.rb
48
48
  - lib/mspec/guards/quarantine.rb
49
49
  - lib/mspec/guards/runner.rb
50
+ - lib/mspec/guards/specified.rb
50
51
  - lib/mspec/guards/superuser.rb
51
52
  - lib/mspec/guards/support.rb
52
53
  - lib/mspec/guards/tty.rb
@@ -180,6 +181,7 @@ files:
180
181
  - spec/guards/platform_spec.rb
181
182
  - spec/guards/quarantine_spec.rb
182
183
  - spec/guards/runner_spec.rb
184
+ - spec/guards/specified_spec.rb
183
185
  - spec/guards/superuser_spec.rb
184
186
  - spec/guards/support_spec.rb
185
187
  - spec/guards/tty_spec.rb