rspec-sleeping_king_studios 1.0.0.rc.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.
Files changed (35) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +323 -0
  4. data/lib/rspec/sleeping_king_studios.rb +5 -0
  5. data/lib/rspec/sleeping_king_studios/matchers.rb +5 -0
  6. data/lib/rspec/sleeping_king_studios/matchers/active_model.rb +5 -0
  7. data/lib/rspec/sleeping_king_studios/matchers/active_model/have_errors.rb +219 -0
  8. data/lib/rspec/sleeping_king_studios/matchers/active_model/have_errors/error_expectation.rb +60 -0
  9. data/lib/rspec/sleeping_king_studios/matchers/active_model/have_errors/message_expectation.rb +17 -0
  10. data/lib/rspec/sleeping_king_studios/matchers/active_model/have_errors/require.rb +7 -0
  11. data/lib/rspec/sleeping_king_studios/matchers/active_model/require.rb +8 -0
  12. data/lib/rspec/sleeping_king_studios/matchers/base_matcher.rb +43 -0
  13. data/lib/rspec/sleeping_king_studios/matchers/built_in.rb +5 -0
  14. data/lib/rspec/sleeping_king_studios/matchers/built_in/be_kind_of.rb +68 -0
  15. data/lib/rspec/sleeping_king_studios/matchers/built_in/include.rb +92 -0
  16. data/lib/rspec/sleeping_king_studios/matchers/built_in/require.rb +7 -0
  17. data/lib/rspec/sleeping_king_studios/matchers/built_in/respond_to.rb +187 -0
  18. data/lib/rspec/sleeping_king_studios/matchers/core.rb +5 -0
  19. data/lib/rspec/sleeping_king_studios/matchers/core/be_boolean.rb +41 -0
  20. data/lib/rspec/sleeping_king_studios/matchers/core/construct.rb +138 -0
  21. data/lib/rspec/sleeping_king_studios/matchers/core/have_property.rb +84 -0
  22. data/lib/rspec/sleeping_king_studios/matchers/core/have_reader.rb +76 -0
  23. data/lib/rspec/sleeping_king_studios/matchers/core/have_writer.rb +101 -0
  24. data/lib/rspec/sleeping_king_studios/matchers/core/require.rb +7 -0
  25. data/lib/rspec/sleeping_king_studios/matchers/meta.rb +5 -0
  26. data/lib/rspec/sleeping_king_studios/matchers/meta/fail_with_actual.rb +142 -0
  27. data/lib/rspec/sleeping_king_studios/matchers/meta/pass_with_actual.rb +96 -0
  28. data/lib/rspec/sleeping_king_studios/matchers/meta/require.rb +7 -0
  29. data/lib/rspec/sleeping_king_studios/matchers/require.rb +12 -0
  30. data/lib/rspec/sleeping_king_studios/matchers/shared/match_parameters.rb +69 -0
  31. data/lib/rspec/sleeping_king_studios/matchers/shared/require.rb +7 -0
  32. data/lib/rspec/sleeping_king_studios/mocks/custom_double.rb +13 -0
  33. data/lib/rspec/sleeping_king_studios/require.rb +7 -0
  34. data/lib/rspec/sleeping_king_studios/version.rb +7 -0
  35. metadata +151 -0
@@ -0,0 +1,7 @@
1
+ # lib/rspec/sleeping_king_studios/matchers/core/require.rb
2
+
3
+ require 'rspec/sleeping_king_studios/matchers/require'
4
+
5
+ module RSpec::SleepingKingStudios::Matchers
6
+ module Core; end
7
+ end # module
@@ -0,0 +1,5 @@
1
+ # lib/rspec/sleeping_king_studios/matchers/meta.rb
2
+
3
+ Dir[File.join File.dirname(__FILE__), 'meta', '*.rb'].each do |file|
4
+ require file
5
+ end # end each
@@ -0,0 +1,142 @@
1
+ # lib/rspec/sleeping_king_studios/matchers/rspec/fail_with_actual.rb
2
+
3
+ require 'rspec/sleeping_king_studios/matchers/base_matcher'
4
+ require 'rspec/sleeping_king_studios/matchers/meta/require'
5
+
6
+ module RSpec::SleepingKingStudios::Matchers::Meta
7
+ # Matcher for testing whether an RSpec matcher will fail with a given actual
8
+ # object, and return the specified failure message if the matcher is called
9
+ # via expect#to.
10
+ #
11
+ # @note Do not use this matcher with expect#not_to to verify that a matcher
12
+ # will pass with a given actual object; use the #pass_with_actual matcher
13
+ # instead.
14
+ #
15
+ # @see RSpec::SleepingKingStudios::Matchers::Meta::PassWithActualMatcher
16
+ #
17
+ # @since 1.0.0
18
+ class FailWithActualMatcher < RSpec::SleepingKingStudios::Matchers::BaseMatcher
19
+ # @param [Object] expected the actual object to check the matcher against
20
+ def initialize expected
21
+ super
22
+ @expected = expected
23
+ end # method initialize
24
+
25
+ # Checks if the matcher evaluates to false with the expected object. If a
26
+ # message expectation is set, checks the value of
27
+ # #failure_message_for_should against the expected message.
28
+ #
29
+ # @param [Object] actual the RSpec matcher to check; should respond to
30
+ # :matches? and :failure_message_for_should, as a minimum
31
+ #
32
+ # @return [Boolean] true if the matcher evaluates to false and the
33
+ # matcher's #failure_message_for_should matches the expected message
34
+ # (if any); otherwise false
35
+ def matches? actual
36
+ super
37
+ return false if @matches = @actual.matches?(@expected)
38
+
39
+ if @message.is_a? Regexp
40
+ !!(@actual.failure_message_for_should =~ @message)
41
+ elsif @message
42
+ @actual.failure_message_for_should == @message.to_s
43
+ else
44
+ true
45
+ end # if-elsif-else
46
+ end # method matches?
47
+
48
+ def failure_message_for_should
49
+ if @matches
50
+ "expected #{@actual} not to match #{@expected}"
51
+ else
52
+ message_text = @message.is_a?(Regexp) ? @message.inspect : @message.to_s
53
+
54
+ "expected message#{@message.is_a?(Regexp) ? " matching" : ""}:\n#{
55
+ message_text.lines.map { |line| "#{" " * 2}#{line}" }.join
56
+ }\nreceived message:\n#{
57
+ @actual.failure_message_for_should.lines.map { |line| "#{" " * 2}#{line}" }.join
58
+ }"
59
+ end # if-else
60
+ end # method failure_message_for_should
61
+
62
+ # @see BaseMatcher#failure_message_for_should_not
63
+ def failure_message_for_should_not
64
+ "failure: testing positive condition with negative matcher\n~> use the :pass_with_actual matcher instead"
65
+ end # method failure_message_for_should_not
66
+
67
+ # The expected failure message for should when the matcher is called via
68
+ # expect#to.
69
+ #
70
+ # @return [String, nil] the expected message if one has been defined;
71
+ # otherwise nil
72
+ attr_reader :message
73
+
74
+ # Sets up a message expectation. When the matcher is called with the
75
+ # provided actual object, the matcher's failure_message_for_should
76
+ # message is compared to the provided message.
77
+ #
78
+ # @param [String, Regexp] message the message to compare
79
+ #
80
+ # @return [FailWithActualMatcher] self
81
+ def with_message message
82
+ @message = message
83
+ self
84
+ end # method with_message
85
+ end # class
86
+ end # module
87
+
88
+ module RSpec::SleepingKingStudios::Matchers
89
+ # @see RSpec::SleepingKingStudios::Matchers::Meta::FailWithActualMatcher#matches?
90
+ def fail_with_actual expected
91
+ Meta::FailWithActualMatcher.new expected
92
+ end # method fail_with_actual
93
+ end # module
94
+
95
+ =begin
96
+ RSpec::Matchers.define :fail_with_actual do |actual|
97
+ match do |matcher|
98
+ @matcher = matcher
99
+ @actual = actual
100
+
101
+ next false if @matches = @matcher.matches?(@actual)
102
+
103
+ text = @matcher.failure_message_for_should
104
+ if @message.is_a? Regexp
105
+ !!(text =~ @message)
106
+ elsif @message
107
+ text == @message.to_s
108
+ else
109
+ true
110
+ end # if-elsif-else
111
+ end # match
112
+
113
+ failure_message_for_should do
114
+ if @matches = @matcher.matches?(@actual)
115
+ "expected #{@matcher} not to match #{@actual}"
116
+ else
117
+ message_text = @message.is_a?(Regexp) ? @message.inspect : @message.to_s
118
+
119
+ "expected message#{@message.is_a?(Regexp) ? " matching" : ""}:\n#{
120
+ message_text.lines.map { |line| "#{" " * 2}#{line}" }.join
121
+ }\nreceived message:\n#{
122
+ @matcher.failure_message_for_should.lines.map { |line| "#{" " * 2}#{line}" }.join
123
+ }"
124
+ end # if-else
125
+ end # method failure_message_for_should
126
+
127
+ failure_message_for_should_not do
128
+ "failure: testing positive condition with negative matcher\n~> use the :pass_with_actual matcher instead"
129
+ end # method failure_message_for_should_not
130
+
131
+ def message
132
+ @message
133
+ end # reader message
134
+
135
+ # The text of the tested matcher's :failure_message_for_should, when the
136
+ # tested matcher correctly fails to match the actual object.
137
+ def with_message message
138
+ @message = message
139
+ self
140
+ end # method with_message
141
+ end # matcher pass
142
+ =end
@@ -0,0 +1,96 @@
1
+ # lib/rspec/sleeping_king_studios/matchers/meta/pass_with_actual.rb
2
+
3
+ require 'rspec/sleeping_king_studios/matchers/base_matcher'
4
+ require 'rspec/sleeping_king_studios/matchers/meta/require'
5
+
6
+ module RSpec::SleepingKingStudios::Matchers::Meta
7
+ # Matcher for testing whether an RSpec matcher will pass with a given actual
8
+ # object, and return the specified failure message if the matcher is called
9
+ # via expect#not_to.
10
+ #
11
+ # @note Do not use this matcher with expect#not_to to verify that a matcher
12
+ # will fail with a given actual object; use the #fail_with_actual matcher
13
+ # instead.
14
+ #
15
+ # @see RSpec::SleepingKingStudios::Matchers::Meta::FailWithActualMatcher
16
+ #
17
+ # @since 1.0.0
18
+ class PassWithActualMatcher < RSpec::SleepingKingStudios::Matchers::BaseMatcher
19
+ # @param [Object] expected the actual object to check the matcher against
20
+ def initialize expected
21
+ super
22
+ @expected = expected
23
+ end # method initialize
24
+
25
+ # Checks if the matcher evaluates to true with the expected object. If a
26
+ # message expectation is set, checks the value of
27
+ # #failure_message_for_should_not against the expected message.
28
+ #
29
+ # @param [Object] actual the RSpec matcher to check; should respond to
30
+ # :matches? and :failure_message_for_should_not, as a minimum
31
+ #
32
+ # @return [Boolean] true if the matcher evaluates to true and the matcher's
33
+ # #failure_message_for_should_not matches the expected message (if any);
34
+ # otherwise false
35
+ def matches? actual
36
+ super
37
+ return false unless @matches = @actual.matches?(@expected)
38
+
39
+ if @message.is_a? Regexp
40
+ !!(@actual.failure_message_for_should_not =~ @message)
41
+ elsif @message
42
+ @actual.failure_message_for_should_not == @message.to_s
43
+ else
44
+ true
45
+ end # if-elsif-else
46
+ end # method matches?
47
+
48
+ # @see BaseMatcher#failure_message_for_should_not
49
+ def failure_message_for_should
50
+ if @matches
51
+ message_text = @message.is_a?(Regexp) ? @message.inspect : @message.to_s
52
+
53
+ "expected message#{@message.is_a?(Regexp) ? " matching" : ""}:\n#{
54
+ message_text.lines.map { |line| "#{" " * 2}#{line}" }.join
55
+ }\nreceived message:\n#{
56
+ @actual.failure_message_for_should_not.lines.map { |line| "#{" " * 2}#{line}" }.join
57
+ }"
58
+ else
59
+ failure_message = @actual.failure_message_for_should
60
+ failure_message = failure_message.lines.map { |line| "#{" " * 4}#{line}" }.join("\n")
61
+ "expected #{@actual} to match #{@expected}\n message:\n#{failure_message}"
62
+ end # if-else
63
+ end # method failure_message_for_should
64
+
65
+ # @see BaseMatcher#failure_message_for_should_not
66
+ def failure_message_for_should_not
67
+ "failure: testing negative condition with positive matcher\n~> use the :fail_with_actual matcher instead"
68
+ end # method failure_message_for_should_not
69
+
70
+ # The expected failure message for should_not when the matcher is called
71
+ # via expect#not_to.
72
+ #
73
+ # @return [String, nil] the expected message if one has been defined;
74
+ # otherwise nil
75
+ attr_reader :message
76
+
77
+ # Sets up a message expectation. When the matcher is called with the
78
+ # provided actual object, the matcher's failure_message_for_should_not
79
+ # message is compared to the provided message.
80
+ #
81
+ # @param [String, Regexp] message the message to compare
82
+ #
83
+ # @return [PassWithActualMatcher] self
84
+ def with_message message
85
+ @message = message
86
+ self
87
+ end # method with_message
88
+ end # class
89
+ end # module
90
+
91
+ module RSpec::SleepingKingStudios::Matchers
92
+ # @see RSpec::SleepingKingStudios::Matchers::Meta::PassWithActualMatcher#matches?
93
+ def pass_with_actual expected
94
+ Meta::PassWithActualMatcher.new expected
95
+ end # method pass_with_actual
96
+ end # module
@@ -0,0 +1,7 @@
1
+ # lib/rspec/sleeping_king_studios/matchers/meta/require.rb
2
+
3
+ require 'rspec/sleeping_king_studios/matchers/require'
4
+
5
+ module RSpec::SleepingKingStudios::Matchers
6
+ module Meta; end
7
+ end # module
@@ -0,0 +1,12 @@
1
+ # lib/rspec/sleeping_king_studios/matchers/require.rb
2
+
3
+ require 'rspec/sleeping_king_studios/require'
4
+
5
+ module RSpec::SleepingKingStudios
6
+ # Custom matchers for use with RSpec::Expectations.
7
+ module Matchers; end
8
+ end # module
9
+
10
+ RSpec.configure do |config|
11
+ config.include RSpec::SleepingKingStudios::Matchers
12
+ end # configuration
@@ -0,0 +1,69 @@
1
+ # lib/rspec/sleeping_king_studios/matchers/shared/parameters_matcher.rb
2
+
3
+ require 'rspec/sleeping_king_studios/matchers/shared/require'
4
+
5
+ module RSpec::SleepingKingStudios::Matchers::Shared
6
+ # Helper methods for checking the parameters and keywords (Ruby 2.0 only) of
7
+ # a method.
8
+ module MatchParameters
9
+ # Checks whether the method accepts the specified number or range of
10
+ # arguments.
11
+ #
12
+ # @param [Method] method the method to check
13
+ # @param [Integer, Range] arity the expected number or range of parameters
14
+ #
15
+ # @return [Boolean] true if the method accepts the specified number or both
16
+ # the specified minimum and maximum number of parameters; otherwise false
17
+ def check_method_arity method, arity
18
+ parameters = method.parameters
19
+ required = parameters.count { |type, | :req == type }
20
+ optional = parameters.count { |type, | :opt == type }
21
+ variadic = parameters.count { |type, | :rest == type }
22
+
23
+ min, max = arity.is_a?(Range) ?
24
+ [arity.begin, arity.end] :
25
+ [arity, arity]
26
+
27
+ if min < required
28
+ return { :not_enough_args => { arity: min, count: required } }
29
+ elsif 0 == variadic && max > required + optional
30
+ return { :too_many_args => { arity: max, count: required + optional } }
31
+ end # if
32
+
33
+ nil
34
+ end # method check_method_arity
35
+
36
+ # Checks whether the method accepts the specified keywords.
37
+ #
38
+ # @param [Method] method the method to check
39
+ # @param [Array<String, Symbol>] keywords the expected keywords
40
+ #
41
+ # @return [Boolean] true if the method accepts the specified keywords;
42
+ # otherwise false
43
+ def check_method_keywords method, keywords
44
+ return nil unless RUBY_VERSION >= "2.0.0"
45
+
46
+ parameters = method.parameters
47
+ return nil if 0 < parameters.count { |type, _| :keyrest == type }
48
+
49
+ mismatch = []
50
+ keywords.each do |keyword|
51
+ mismatch << keyword unless parameters.include?([:key, keyword])
52
+ end # each
53
+
54
+ mismatch.empty? ? nil : { :unexpected_keywords => mismatch }
55
+ end # method check_method_keywords
56
+
57
+ # Checks whether the method expects a block.
58
+ #
59
+ # @param [Method] method the method to check
60
+ #
61
+ # @return [Boolean] true if the method expects a block argument; otherwise
62
+ # false
63
+ def check_method_block method
64
+ 0 == method.parameters.count { |type, | :block == type } ? { :expected_block => true } : nil
65
+ end # method check_method_block
66
+
67
+ private :check_method_arity, :check_method_block, :check_method_keywords
68
+ end # module
69
+ end # module
@@ -0,0 +1,7 @@
1
+ # lib/rspec/sleeping_king_studios/matchers/shared/require.rb
2
+
3
+ require 'rspec/sleeping_king_studios/matchers/require'
4
+
5
+ module RSpec::SleepingKingStudios::Matchers
6
+ module Shared; end
7
+ end # module
@@ -0,0 +1,13 @@
1
+ # lib/rspec/sleeping_king_studios/mocks/custom_double.rb
2
+
3
+ module RSpec
4
+ module Mocks
5
+ module ExampleMethods
6
+ def custom_double(*args, &block)
7
+ args << {} unless Hash === args.last
8
+ args.last[:__declared_as] = "Custom Double"
9
+ Class.new(&block).new.tap { |obj| RSpec::Mocks::TestDouble.extend_onto obj, *args }
10
+ end # method
11
+ end # module
12
+ end # module
13
+ end # module
@@ -0,0 +1,7 @@
1
+ # lib/rspec/sleeping_king_studios/require.rb
2
+
3
+ require 'rspec/core'
4
+
5
+ module RSpec
6
+ module SleepingKingStudios; end
7
+ end # module
@@ -0,0 +1,7 @@
1
+ # lib/rspec/sleeping_king_studios/version.rb
2
+
3
+ module RSpec
4
+ module SleepingKingStudios
5
+ VERSION = '1.0.0.rc.2'
6
+ end # module
7
+ end # module
metadata ADDED
@@ -0,0 +1,151 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rspec-sleeping_king_studios
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.rc.2
5
+ platform: ruby
6
+ authors:
7
+ - Rob "Merlin" Smith
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-02-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '2.14'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '2.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activemodel
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: factory_girl
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '4.2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '4.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: fuubar
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: |2
84
+ A collection of RSpec patches and custom matchers. The features can be
85
+ included individually or by category. For more information, check out the
86
+ README.
87
+ email:
88
+ - merlin@sleepingkingstudios.com
89
+ executables: []
90
+ extensions: []
91
+ extra_rdoc_files: []
92
+ files:
93
+ - lib/rspec/sleeping_king_studios/matchers/active_model/have_errors/error_expectation.rb
94
+ - lib/rspec/sleeping_king_studios/matchers/active_model/have_errors/message_expectation.rb
95
+ - lib/rspec/sleeping_king_studios/matchers/active_model/have_errors/require.rb
96
+ - lib/rspec/sleeping_king_studios/matchers/active_model/have_errors.rb
97
+ - lib/rspec/sleeping_king_studios/matchers/active_model/require.rb
98
+ - lib/rspec/sleeping_king_studios/matchers/active_model.rb
99
+ - lib/rspec/sleeping_king_studios/matchers/base_matcher.rb
100
+ - lib/rspec/sleeping_king_studios/matchers/built_in/be_kind_of.rb
101
+ - lib/rspec/sleeping_king_studios/matchers/built_in/include.rb
102
+ - lib/rspec/sleeping_king_studios/matchers/built_in/require.rb
103
+ - lib/rspec/sleeping_king_studios/matchers/built_in/respond_to.rb
104
+ - lib/rspec/sleeping_king_studios/matchers/built_in.rb
105
+ - lib/rspec/sleeping_king_studios/matchers/core/be_boolean.rb
106
+ - lib/rspec/sleeping_king_studios/matchers/core/construct.rb
107
+ - lib/rspec/sleeping_king_studios/matchers/core/have_property.rb
108
+ - lib/rspec/sleeping_king_studios/matchers/core/have_reader.rb
109
+ - lib/rspec/sleeping_king_studios/matchers/core/have_writer.rb
110
+ - lib/rspec/sleeping_king_studios/matchers/core/require.rb
111
+ - lib/rspec/sleeping_king_studios/matchers/core.rb
112
+ - lib/rspec/sleeping_king_studios/matchers/meta/fail_with_actual.rb
113
+ - lib/rspec/sleeping_king_studios/matchers/meta/pass_with_actual.rb
114
+ - lib/rspec/sleeping_king_studios/matchers/meta/require.rb
115
+ - lib/rspec/sleeping_king_studios/matchers/meta.rb
116
+ - lib/rspec/sleeping_king_studios/matchers/require.rb
117
+ - lib/rspec/sleeping_king_studios/matchers/shared/match_parameters.rb
118
+ - lib/rspec/sleeping_king_studios/matchers/shared/require.rb
119
+ - lib/rspec/sleeping_king_studios/matchers.rb
120
+ - lib/rspec/sleeping_king_studios/mocks/custom_double.rb
121
+ - lib/rspec/sleeping_king_studios/require.rb
122
+ - lib/rspec/sleeping_king_studios/version.rb
123
+ - lib/rspec/sleeping_king_studios.rb
124
+ - LICENSE
125
+ - README.md
126
+ homepage: http://sleepingkingstudios.com
127
+ licenses:
128
+ - MIT
129
+ metadata: {}
130
+ post_install_message:
131
+ rdoc_options: []
132
+ require_paths:
133
+ - lib
134
+ required_ruby_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - '>'
142
+ - !ruby/object:Gem::Version
143
+ version: 1.3.1
144
+ requirements: []
145
+ rubyforge_project:
146
+ rubygems_version: 2.0.3
147
+ signing_key:
148
+ specification_version: 4
149
+ summary: A collection of RSpec patches and custom matchers.
150
+ test_files: []
151
+ has_rdoc: