mspec 1.5.16 → 1.5.17

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.
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