spicycode-micronaut 0.0.2
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/LICENSE +20 -0
- data/README +17 -0
- data/Rakefile +55 -0
- data/examples/example_helper.rb +19 -0
- data/examples/lib/micronaut/example_group_example.rb +116 -0
- data/examples/lib/micronaut/example_runner_example.rb +5 -0
- data/examples/lib/micronaut/expectations/differs/default_example.rb +126 -0
- data/examples/lib/micronaut/expectations/extensions/object_example.rb +78 -0
- data/examples/lib/micronaut/expectations/fail_with_example.rb +71 -0
- data/examples/lib/micronaut/expectations/wrap_expectation_example.rb +30 -0
- data/examples/lib/micronaut_example.rb +8 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/micronaut.rb +43 -0
- data/lib/micronaut/example_group.rb +100 -0
- data/lib/micronaut/example_runner.rb +108 -0
- data/lib/micronaut/example_world.rb +13 -0
- data/lib/micronaut/exceptions.rb +7 -0
- data/lib/micronaut/expectations/differs/default.rb +67 -0
- data/lib/micronaut/expectations/handler.rb +52 -0
- data/lib/micronaut/expectations/object_extensions.rb +62 -0
- data/lib/micronaut/expectations/string_and_symbol_extensions.rb +17 -0
- data/lib/micronaut/expectations/wrap_expectation.rb +51 -0
- data/lib/micronaut/expectations.rb +57 -0
- data/lib/micronaut/extensions/kernel.rb +15 -0
- data/lib/micronaut/matchers/be.rb +203 -0
- data/lib/micronaut/matchers/be_close.rb +37 -0
- data/lib/micronaut/matchers/change.rb +148 -0
- data/lib/micronaut/matchers/eql.rb +43 -0
- data/lib/micronaut/matchers/equal.rb +43 -0
- data/lib/micronaut/matchers/errors.rb +5 -0
- data/lib/micronaut/matchers/exist.rb +22 -0
- data/lib/micronaut/matchers/generated_descriptions.rb +36 -0
- data/lib/micronaut/matchers/has.rb +34 -0
- data/lib/micronaut/matchers/have.rb +150 -0
- data/lib/micronaut/matchers/include.rb +77 -0
- data/lib/micronaut/matchers/match.rb +41 -0
- data/lib/micronaut/matchers/method_missing.rb +9 -0
- data/lib/micronaut/matchers/operator_matcher.rb +72 -0
- data/lib/micronaut/matchers/raise_error.rb +132 -0
- data/lib/micronaut/matchers/respond_to.rb +46 -0
- data/lib/micronaut/matchers/satisfy.rb +47 -0
- data/lib/micronaut/matchers/simple_matcher.rb +132 -0
- data/lib/micronaut/matchers/throw_symbol.rb +100 -0
- data/lib/micronaut/matchers.rb +141 -0
- data/lib/micronaut/mocking/with_mocha.rb +23 -0
- data/lib/micronaut.rb +42 -0
- metadata +120 -0
@@ -0,0 +1,132 @@
|
|
1
|
+
module Micronaut
|
2
|
+
module Matchers
|
3
|
+
class SimpleMatcher
|
4
|
+
attr_writer :failure_message, :negative_failure_message, :description
|
5
|
+
|
6
|
+
def initialize(description, &match_block)
|
7
|
+
@description = description
|
8
|
+
@match_block = match_block
|
9
|
+
end
|
10
|
+
|
11
|
+
def matches?(given)
|
12
|
+
@given = given
|
13
|
+
case @match_block.arity
|
14
|
+
when 2
|
15
|
+
@match_block.call(@given, self)
|
16
|
+
else
|
17
|
+
@match_block.call(@given)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def description
|
22
|
+
@description || explanation
|
23
|
+
end
|
24
|
+
|
25
|
+
def failure_message
|
26
|
+
@failure_message || (@description.nil? ? explanation : %[expected #{@description.inspect} but got #{@given.inspect}])
|
27
|
+
end
|
28
|
+
|
29
|
+
def negative_failure_message
|
30
|
+
@negative_failure_message || (@description.nil? ? explanation : %[expected not to get #{@description.inspect}, but got #{@given.inspect}])
|
31
|
+
end
|
32
|
+
|
33
|
+
def explanation
|
34
|
+
"No description provided. See RDoc for simple_matcher()"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# simple_matcher makes it easy for you to create your own custom matchers
|
39
|
+
# in just a few lines of code when you don't need all the power of a
|
40
|
+
# completely custom matcher object.
|
41
|
+
#
|
42
|
+
# The <tt>description</tt> argument will appear as part of any failure
|
43
|
+
# message, and is also the source for auto-generated descriptions.
|
44
|
+
#
|
45
|
+
# The <tt>match_block</tt> can have an arity of 1 or 2. The first block
|
46
|
+
# argument will be the given value. The second, if the block accepts it
|
47
|
+
# will be the matcher itself, giving you access to set custom failure
|
48
|
+
# messages in favor of the defaults.
|
49
|
+
#
|
50
|
+
# The <tt>match_block</tt> should return a boolean: <tt>true</tt>
|
51
|
+
# indicates a match, which will pass if you use <tt>should</tt> and fail
|
52
|
+
# if you use <tt>should_not</tt>. false (or nil) indicates no match,
|
53
|
+
# which will do the reverse: fail if you use <tt>should</tt> and pass if
|
54
|
+
# you use <tt>should_not</tt>.
|
55
|
+
#
|
56
|
+
# An error in the <tt>match_block</tt> will bubble up, resulting in a
|
57
|
+
# failure.
|
58
|
+
#
|
59
|
+
# == Example with default messages
|
60
|
+
#
|
61
|
+
# def be_even
|
62
|
+
# simple_matcher("an even number") { |given| given % 2 == 0 }
|
63
|
+
# end
|
64
|
+
#
|
65
|
+
# describe 2 do
|
66
|
+
# it "should be even" do
|
67
|
+
# 2.should be_even
|
68
|
+
# end
|
69
|
+
# end
|
70
|
+
#
|
71
|
+
# Given an odd number, this example would produce an error message stating:
|
72
|
+
# expected "an even number", got 3.
|
73
|
+
#
|
74
|
+
# Unfortunately, if you're a fan of auto-generated descriptions, this will
|
75
|
+
# produce "should an even number." Not the most desirable result. You can
|
76
|
+
# control that using custom messages:
|
77
|
+
#
|
78
|
+
# == Example with custom messages
|
79
|
+
#
|
80
|
+
# def rhyme_with(expected)
|
81
|
+
# simple_matcher("rhyme with #{expected.inspect}") do |given, matcher|
|
82
|
+
# matcher.failure_message = "expected #{given.inspect} to rhyme with #{expected.inspect}"
|
83
|
+
# matcher.negative_failure_message = "expected #{given.inspect} not to rhyme with #{expected.inspect}"
|
84
|
+
# given.rhymes_with? expected
|
85
|
+
# end
|
86
|
+
# end
|
87
|
+
#
|
88
|
+
# # OR
|
89
|
+
#
|
90
|
+
# def rhyme_with(expected)
|
91
|
+
# simple_matcher do |given, matcher|
|
92
|
+
# matcher.description = "rhyme with #{expected.inspect}"
|
93
|
+
# matcher.failure_message = "expected #{given.inspect} to rhyme with #{expected.inspect}"
|
94
|
+
# matcher.negative_failure_message = "expected #{given.inspect} not to rhyme with #{expected.inspect}"
|
95
|
+
# given.rhymes_with? expected
|
96
|
+
# end
|
97
|
+
# end
|
98
|
+
#
|
99
|
+
# describe "pecan" do
|
100
|
+
# it "should rhyme with 'be gone'" do
|
101
|
+
# nut = "pecan"
|
102
|
+
# nut.extend Rhymer
|
103
|
+
# nut.should rhyme_with("be gone")
|
104
|
+
# end
|
105
|
+
# end
|
106
|
+
#
|
107
|
+
# The resulting messages would be:
|
108
|
+
# description: rhyme with "be gone"
|
109
|
+
# failure_message: expected "pecan" to rhyme with "be gone"
|
110
|
+
# negative failure_message: expected "pecan" not to rhyme with "be gone"
|
111
|
+
#
|
112
|
+
# == Wrapped Expectations
|
113
|
+
#
|
114
|
+
# Because errors will bubble up, it is possible to wrap other expectations
|
115
|
+
# in a SimpleMatcher.
|
116
|
+
#
|
117
|
+
# def be_even
|
118
|
+
# simple_matcher("an even number") { |given| (given % 2).should == 0 }
|
119
|
+
# end
|
120
|
+
#
|
121
|
+
# BE VERY CAREFUL when you do this. Only use wrapped expectations for
|
122
|
+
# matchers that will always be used in only the positive
|
123
|
+
# (<tt>should</tt>) or negative (<tt>should_not</tt>), but not both.
|
124
|
+
# The reason is that is you wrap a <tt>should</tt> and call the wrapper
|
125
|
+
# with <tt>should_not</tt>, the correct result (the <tt>should</tt>
|
126
|
+
# failing), will fail when you want it to pass.
|
127
|
+
#
|
128
|
+
def simple_matcher(description=nil, &match_block)
|
129
|
+
SimpleMatcher.new(description, &match_block)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
module Micronaut
|
2
|
+
module Matchers
|
3
|
+
|
4
|
+
class ThrowSymbol #:nodoc:
|
5
|
+
def initialize(expected_symbol = nil, expected_arg=nil)
|
6
|
+
@expected_symbol = expected_symbol
|
7
|
+
@expected_arg = expected_arg
|
8
|
+
@caught_symbol = nil
|
9
|
+
end
|
10
|
+
|
11
|
+
def matches?(given_proc)
|
12
|
+
begin
|
13
|
+
if @expected_symbol.nil?
|
14
|
+
given_proc.call
|
15
|
+
else
|
16
|
+
@caught_arg = catch :proc_did_not_throw_anything do
|
17
|
+
catch @expected_symbol do
|
18
|
+
given_proc.call
|
19
|
+
throw :proc_did_not_throw_anything, :nothing_thrown
|
20
|
+
end
|
21
|
+
end
|
22
|
+
@caught_symbol = @expected_symbol unless @caught_arg == :nothing_thrown
|
23
|
+
end
|
24
|
+
rescue NameError => e
|
25
|
+
raise e unless e.message =~ /uncaught throw/
|
26
|
+
@caught_symbol = e.name.to_sym
|
27
|
+
ensure
|
28
|
+
if @expected_symbol.nil?
|
29
|
+
return !@caught_symbol.nil?
|
30
|
+
else
|
31
|
+
if @expected_arg.nil?
|
32
|
+
return @caught_symbol == @expected_symbol
|
33
|
+
else
|
34
|
+
return @caught_symbol == @expected_symbol && @caught_arg == @expected_arg
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def failure_message
|
41
|
+
if @caught_symbol
|
42
|
+
"expected #{expected}, got #{@caught_symbol.inspect}"
|
43
|
+
else
|
44
|
+
"expected #{expected} but nothing was thrown"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def negative_failure_message
|
49
|
+
if @expected_symbol
|
50
|
+
"expected #{expected} not to be thrown"
|
51
|
+
else
|
52
|
+
"expected no Symbol, got :#{@caught_symbol}"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def description
|
57
|
+
"throw #{expected}"
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def expected
|
63
|
+
@expected_symbol.nil? ? "a Symbol" : "#{@expected_symbol.inspect}#{args}"
|
64
|
+
end
|
65
|
+
|
66
|
+
def args
|
67
|
+
@expected_arg.nil? ? "" : " with #{@expected_arg.inspect}"
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
# :call-seq:
|
73
|
+
# should throw_symbol()
|
74
|
+
# should throw_symbol(:sym)
|
75
|
+
# should throw_symbol(:sym, arg)
|
76
|
+
# should_not throw_symbol()
|
77
|
+
# should_not throw_symbol(:sym)
|
78
|
+
# should_not throw_symbol(:sym, arg)
|
79
|
+
#
|
80
|
+
# Given no argument, matches if a proc throws any Symbol.
|
81
|
+
#
|
82
|
+
# Given a Symbol, matches if the given proc throws the specified Symbol.
|
83
|
+
#
|
84
|
+
# Given a Symbol and an arg, matches if the given proc throws the
|
85
|
+
# specified Symbol with the specified arg.
|
86
|
+
#
|
87
|
+
# == Examples
|
88
|
+
#
|
89
|
+
# lambda { do_something_risky }.should throw_symbol
|
90
|
+
# lambda { do_something_risky }.should throw_symbol(:that_was_risky)
|
91
|
+
# lambda { do_something_risky }.should throw_symbol(:that_was_risky, culprit)
|
92
|
+
#
|
93
|
+
# lambda { do_something_risky }.should_not throw_symbol
|
94
|
+
# lambda { do_something_risky }.should_not throw_symbol(:that_was_risky)
|
95
|
+
# lambda { do_something_risky }.should_not throw_symbol(:that_was_risky, culprit)
|
96
|
+
def throw_symbol(sym=nil)
|
97
|
+
Matchers::ThrowSymbol.new(sym)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
require 'micronaut/matchers/generated_descriptions'
|
2
|
+
require 'micronaut/matchers/errors'
|
3
|
+
require 'micronaut/matchers/method_missing'
|
4
|
+
require 'micronaut/matchers/simple_matcher'
|
5
|
+
require 'micronaut/matchers/be'
|
6
|
+
require 'micronaut/matchers/be_close'
|
7
|
+
require 'micronaut/matchers/change'
|
8
|
+
require 'micronaut/matchers/eql'
|
9
|
+
require 'micronaut/matchers/equal'
|
10
|
+
require 'micronaut/matchers/exist'
|
11
|
+
require 'micronaut/matchers/has'
|
12
|
+
require 'micronaut/matchers/have'
|
13
|
+
require 'micronaut/matchers/include'
|
14
|
+
require 'micronaut/matchers/match'
|
15
|
+
require 'micronaut/matchers/raise_error'
|
16
|
+
require 'micronaut/matchers/respond_to'
|
17
|
+
require 'micronaut/matchers/satisfy'
|
18
|
+
require 'micronaut/matchers/throw_symbol'
|
19
|
+
require 'micronaut/matchers/operator_matcher'
|
20
|
+
|
21
|
+
module Micronaut
|
22
|
+
|
23
|
+
# We ship with a number of useful Expression Matchers. An Expression Matcher
|
24
|
+
# is any object that responds to the following methods:
|
25
|
+
#
|
26
|
+
# matches?(actual)
|
27
|
+
# failure_message
|
28
|
+
# negative_failure_message #optional
|
29
|
+
# description #optional
|
30
|
+
#
|
31
|
+
# See Micronaut::Expectations to learn how to use these as Expectation Matchers.
|
32
|
+
# See Micronaut::Mocks to learn how to use them as Mock Argument Constraints.
|
33
|
+
#
|
34
|
+
# == Predicates
|
35
|
+
#
|
36
|
+
# In addition to those Expression Matchers that are defined explicitly, we will
|
37
|
+
# create custom Matchers on the fly for any arbitrary predicate, giving your specs
|
38
|
+
# a much more natural language feel.
|
39
|
+
#
|
40
|
+
# A Ruby predicate is a method that ends with a "?" and returns true or false.
|
41
|
+
# Common examples are +empty?+, +nil?+, and +instance_of?+.
|
42
|
+
#
|
43
|
+
# All you need to do is write +should be_+ followed by the predicate without
|
44
|
+
# the question mark, and we will figure it out from there. For example:
|
45
|
+
#
|
46
|
+
# [].should be_empty => [].empty? #passes
|
47
|
+
# [].should_not be_empty => [].empty? #fails
|
48
|
+
#
|
49
|
+
# In addtion to prefixing the predicate matchers with "be_", you can also use "be_a_"
|
50
|
+
# and "be_an_", making your specs read much more naturally:
|
51
|
+
#
|
52
|
+
# "a string".should be_an_instance_of(String) =>"a string".instance_of?(String) #passes
|
53
|
+
#
|
54
|
+
# 3.should be_a_kind_of(Fixnum) => 3.kind_of?(Numeric) #passes
|
55
|
+
# 3.should be_a_kind_of(Numeric) => 3.kind_of?(Numeric) #passes
|
56
|
+
# 3.should be_an_instance_of(Fixnum) => 3.instance_of?(Fixnum) #passes
|
57
|
+
# 3.should_not be_instance_of(Numeric) => 3.instance_of?(Numeric) #fails
|
58
|
+
#
|
59
|
+
# We will also create custom matchers for predicates like +has_key?+. To
|
60
|
+
# use this feature, just state that the object should have_key(:key) and we will
|
61
|
+
# call has_key?(:key) on the target. For example:
|
62
|
+
#
|
63
|
+
# {:a => "A"}.should have_key(:a) => {:a => "A"}.has_key?(:a) #passes
|
64
|
+
# {:a => "A"}.should have_key(:b) => {:a => "A"}.has_key?(:b) #fails
|
65
|
+
#
|
66
|
+
# You can use this feature to invoke any predicate that begins with "has_", whether it is
|
67
|
+
# part of the Ruby libraries (like +Hash#has_key?+) or a method you wrote on your own class.
|
68
|
+
#
|
69
|
+
# == Custom Expectation Matchers
|
70
|
+
#
|
71
|
+
# When you find that none of the stock Expectation Matchers provide a natural
|
72
|
+
# feeling expectation, you can very easily write your own.
|
73
|
+
#
|
74
|
+
# For example, imagine that you are writing a game in which players can
|
75
|
+
# be in various zones on a virtual board. To specify that bob should
|
76
|
+
# be in zone 4, you could say:
|
77
|
+
#
|
78
|
+
# bob.current_zone.should eql(Zone.new("4"))
|
79
|
+
#
|
80
|
+
# But you might find it more expressive to say:
|
81
|
+
#
|
82
|
+
# bob.should be_in_zone("4")
|
83
|
+
#
|
84
|
+
# and/or
|
85
|
+
#
|
86
|
+
# bob.should_not be_in_zone("3")
|
87
|
+
#
|
88
|
+
# To do this, you would need to write a class like this:
|
89
|
+
#
|
90
|
+
# class BeInZone
|
91
|
+
# def initialize(expected)
|
92
|
+
# @expected = expected
|
93
|
+
# end
|
94
|
+
# def matches?(target)
|
95
|
+
# @target = target
|
96
|
+
# @target.current_zone.eql?(Zone.new(@expected))
|
97
|
+
# end
|
98
|
+
# def failure_message
|
99
|
+
# "expected #{@target.inspect} to be in Zone #{@expected}"
|
100
|
+
# end
|
101
|
+
# def negative_failure_message
|
102
|
+
# "expected #{@target.inspect} not to be in Zone #{@expected}"
|
103
|
+
# end
|
104
|
+
# end
|
105
|
+
#
|
106
|
+
# ... and a method like this:
|
107
|
+
#
|
108
|
+
# def be_in_zone(expected)
|
109
|
+
# BeInZone.new(expected)
|
110
|
+
# end
|
111
|
+
#
|
112
|
+
# And then expose the method to your specs. This is normally done
|
113
|
+
# by including the method and the class in a module, which is then
|
114
|
+
# included in your spec:
|
115
|
+
#
|
116
|
+
# module CustomGameMatchers
|
117
|
+
# class BeInZone
|
118
|
+
# ...
|
119
|
+
# end
|
120
|
+
#
|
121
|
+
# def be_in_zone(expected)
|
122
|
+
# ...
|
123
|
+
# end
|
124
|
+
# end
|
125
|
+
#
|
126
|
+
# describe "Player behaviour" do
|
127
|
+
# include CustomGameMatchers
|
128
|
+
# ...
|
129
|
+
# end
|
130
|
+
#
|
131
|
+
# or you can include in globally in a spec_helper.rb file <tt>require</tt>d
|
132
|
+
# from your spec file(s):
|
133
|
+
#
|
134
|
+
# Micronaut::Runner.configure do |config|
|
135
|
+
# config.include(CustomGameMatchers)
|
136
|
+
# end
|
137
|
+
#
|
138
|
+
module Matchers
|
139
|
+
|
140
|
+
end
|
141
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'mocha/standalone'
|
2
|
+
require 'mocha/object'
|
3
|
+
|
4
|
+
module Micronaut
|
5
|
+
module Mocking
|
6
|
+
module WithMocha
|
7
|
+
include Mocha::Standalone
|
8
|
+
|
9
|
+
def setup_mocks
|
10
|
+
mocha_setup
|
11
|
+
end
|
12
|
+
|
13
|
+
def verify_mocks
|
14
|
+
mocha_verify
|
15
|
+
end
|
16
|
+
|
17
|
+
def teardown_mocks
|
18
|
+
mocha_teardown
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/micronaut.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'micronaut/mocking/with_mocha'
|
2
|
+
require 'micronaut/exceptions'
|
3
|
+
require 'micronaut/matchers'
|
4
|
+
require 'micronaut/expectations'
|
5
|
+
require 'micronaut/example_world'
|
6
|
+
require 'micronaut/example_runner'
|
7
|
+
require 'micronaut/example_group'
|
8
|
+
require 'micronaut/extensions/kernel'
|
9
|
+
|
10
|
+
module Micronaut
|
11
|
+
VERSION = "0.0.2"
|
12
|
+
|
13
|
+
file = if RUBY_VERSION =~ /^1\.9/ then # bt's expanded, but __FILE__ isn't :(
|
14
|
+
File.expand_path __FILE__
|
15
|
+
elsif __FILE__ =~ /^[^\.]/ then # assume both relative
|
16
|
+
require 'pathname'
|
17
|
+
pwd = Pathname.new(Dir.pwd)
|
18
|
+
path_name = Pathname.new(File.expand_path(__FILE__))
|
19
|
+
path_name = File.join(".", path_name.relative_path_from(pwd)) unless path_name.relative?
|
20
|
+
path_name.to_s
|
21
|
+
else # assume both are expanded
|
22
|
+
__FILE__
|
23
|
+
end
|
24
|
+
|
25
|
+
# './lib' in project dir, or '/usr/local/blahblah' if installed
|
26
|
+
MICRONAUT_DIR = File.expand_path(File.dirname(File.dirname(file)))
|
27
|
+
|
28
|
+
def self.filter_backtrace(backtrace)
|
29
|
+
return ["No backtrace"] unless backtrace
|
30
|
+
|
31
|
+
new_backtrace = []
|
32
|
+
backtrace.each_with_index do |line, index|
|
33
|
+
break if line.rindex(MICRONAUT_DIR, 0) && index > 2
|
34
|
+
new_backtrace << line
|
35
|
+
end
|
36
|
+
|
37
|
+
new_backtrace = backtrace.reject { |line| line.rindex(MICRONAUT_DIR, 0) } if new_backtrace.empty?
|
38
|
+
new_backtrace = backtrace.dup if new_backtrace.empty?
|
39
|
+
new_backtrace
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
metadata
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: spicycode-micronaut
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Chad Humphries
|
8
|
+
autorequire: micronaut
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-11-21 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: mocha
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "0"
|
23
|
+
version:
|
24
|
+
description: An excellent replacement for the wheel...
|
25
|
+
email: chad@spicycode.com
|
26
|
+
executables: []
|
27
|
+
|
28
|
+
extensions: []
|
29
|
+
|
30
|
+
extra_rdoc_files:
|
31
|
+
- README
|
32
|
+
- LICENSE
|
33
|
+
files:
|
34
|
+
- LICENSE
|
35
|
+
- README
|
36
|
+
- Rakefile
|
37
|
+
- lib/autotest
|
38
|
+
- lib/autotest/discover.rb
|
39
|
+
- lib/autotest/micronaut.rb
|
40
|
+
- lib/micronaut
|
41
|
+
- lib/micronaut/example_group.rb
|
42
|
+
- lib/micronaut/example_runner.rb
|
43
|
+
- lib/micronaut/example_world.rb
|
44
|
+
- lib/micronaut/exceptions.rb
|
45
|
+
- lib/micronaut/expectations
|
46
|
+
- lib/micronaut/expectations/differs
|
47
|
+
- lib/micronaut/expectations/differs/default.rb
|
48
|
+
- lib/micronaut/expectations/handler.rb
|
49
|
+
- lib/micronaut/expectations/object_extensions.rb
|
50
|
+
- lib/micronaut/expectations/string_and_symbol_extensions.rb
|
51
|
+
- lib/micronaut/expectations/wrap_expectation.rb
|
52
|
+
- lib/micronaut/expectations.rb
|
53
|
+
- lib/micronaut/extensions
|
54
|
+
- lib/micronaut/extensions/kernel.rb
|
55
|
+
- lib/micronaut/matchers
|
56
|
+
- lib/micronaut/matchers/be.rb
|
57
|
+
- lib/micronaut/matchers/be_close.rb
|
58
|
+
- lib/micronaut/matchers/change.rb
|
59
|
+
- lib/micronaut/matchers/eql.rb
|
60
|
+
- lib/micronaut/matchers/equal.rb
|
61
|
+
- lib/micronaut/matchers/errors.rb
|
62
|
+
- lib/micronaut/matchers/exist.rb
|
63
|
+
- lib/micronaut/matchers/generated_descriptions.rb
|
64
|
+
- lib/micronaut/matchers/has.rb
|
65
|
+
- lib/micronaut/matchers/have.rb
|
66
|
+
- lib/micronaut/matchers/include.rb
|
67
|
+
- lib/micronaut/matchers/match.rb
|
68
|
+
- lib/micronaut/matchers/method_missing.rb
|
69
|
+
- lib/micronaut/matchers/operator_matcher.rb
|
70
|
+
- lib/micronaut/matchers/raise_error.rb
|
71
|
+
- lib/micronaut/matchers/respond_to.rb
|
72
|
+
- lib/micronaut/matchers/satisfy.rb
|
73
|
+
- lib/micronaut/matchers/simple_matcher.rb
|
74
|
+
- lib/micronaut/matchers/throw_symbol.rb
|
75
|
+
- lib/micronaut/matchers.rb
|
76
|
+
- lib/micronaut/mocking
|
77
|
+
- lib/micronaut/mocking/with_mocha.rb
|
78
|
+
- lib/micronaut.rb
|
79
|
+
- examples/example_helper.rb
|
80
|
+
- examples/lib
|
81
|
+
- examples/lib/micronaut
|
82
|
+
- examples/lib/micronaut/example_group_example.rb
|
83
|
+
- examples/lib/micronaut/example_runner_example.rb
|
84
|
+
- examples/lib/micronaut/expectations
|
85
|
+
- examples/lib/micronaut/expectations/differs
|
86
|
+
- examples/lib/micronaut/expectations/differs/default_example.rb
|
87
|
+
- examples/lib/micronaut/expectations/extensions
|
88
|
+
- examples/lib/micronaut/expectations/extensions/object_example.rb
|
89
|
+
- examples/lib/micronaut/expectations/fail_with_example.rb
|
90
|
+
- examples/lib/micronaut/expectations/wrap_expectation_example.rb
|
91
|
+
- examples/lib/micronaut/matchers
|
92
|
+
- examples/lib/micronaut_example.rb
|
93
|
+
has_rdoc: true
|
94
|
+
homepage: http://spicycode.com
|
95
|
+
post_install_message:
|
96
|
+
rdoc_options: []
|
97
|
+
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: "0"
|
105
|
+
version:
|
106
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: "0"
|
111
|
+
version:
|
112
|
+
requirements: []
|
113
|
+
|
114
|
+
rubyforge_project:
|
115
|
+
rubygems_version: 1.2.0
|
116
|
+
signing_key:
|
117
|
+
specification_version: 2
|
118
|
+
summary: An excellent replacement for the wheel...
|
119
|
+
test_files: []
|
120
|
+
|