slimkeyfy 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +34 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +6 -0
  5. data/Gemfile.lock +22 -0
  6. data/LICENSE +21 -0
  7. data/README.md +172 -0
  8. data/bin/slimkeyfy +5 -0
  9. data/lib/.DS_Store +0 -0
  10. data/lib/slimkeyfy/console/command_line.rb +90 -0
  11. data/lib/slimkeyfy/console/io_action.rb +30 -0
  12. data/lib/slimkeyfy/console/printer.rb +50 -0
  13. data/lib/slimkeyfy/console/translate.rb +101 -0
  14. data/lib/slimkeyfy/console.rb +8 -0
  15. data/lib/slimkeyfy/slimutils/file_utils.rb +61 -0
  16. data/lib/slimkeyfy/slimutils/hash_merging.rb +84 -0
  17. data/lib/slimkeyfy/slimutils/key_generator.rb +70 -0
  18. data/lib/slimkeyfy/slimutils/yaml_processor.rb +56 -0
  19. data/lib/slimkeyfy/slimutils.rb +8 -0
  20. data/lib/slimkeyfy/transformer/base_transformer.rb +42 -0
  21. data/lib/slimkeyfy/transformer/controller_transformer.rb +20 -0
  22. data/lib/slimkeyfy/transformer/slim_transformer.rb +92 -0
  23. data/lib/slimkeyfy/transformer/whitespacer.rb +48 -0
  24. data/lib/slimkeyfy/transformer/word.rb +49 -0
  25. data/lib/slimkeyfy/transformer.rb +9 -0
  26. data/lib/slimkeyfy/version.rb +3 -0
  27. data/lib/slimkeyfy.rb +12 -0
  28. data/slimkeyfy.gemspec +21 -0
  29. data/vendor/bundle/bin/htmldiff +25 -0
  30. data/vendor/bundle/bin/ldiff +25 -0
  31. data/vendor/bundle/bin/rspec +23 -0
  32. data/vendor/bundle/build_info/diff-lcs-1.2.5.info +1 -0
  33. data/vendor/bundle/build_info/rspec-3.0.0.info +1 -0
  34. data/vendor/bundle/build_info/rspec-core-3.0.2.info +1 -0
  35. data/vendor/bundle/build_info/rspec-expectations-3.0.2.info +1 -0
  36. data/vendor/bundle/build_info/rspec-mocks-3.0.2.info +1 -0
  37. data/vendor/bundle/build_info/rspec-support-3.0.2.info +1 -0
  38. data/vendor/bundle/gems/diff-lcs-1.2.5/.autotest +3 -0
  39. data/vendor/bundle/gems/diff-lcs-1.2.5/.gemtest +0 -0
  40. data/vendor/bundle/gems/diff-lcs-1.2.5/.hoerc +2 -0
  41. data/vendor/bundle/gems/diff-lcs-1.2.5/.rspec +2 -0
  42. data/vendor/bundle/gems/diff-lcs-1.2.5/.travis.yml +22 -0
  43. data/vendor/bundle/gems/diff-lcs-1.2.5/Contributing.rdoc +64 -0
  44. data/vendor/bundle/gems/diff-lcs-1.2.5/Gemfile +20 -0
  45. data/vendor/bundle/gems/diff-lcs-1.2.5/History.rdoc +152 -0
  46. data/vendor/bundle/gems/diff-lcs-1.2.5/License.rdoc +39 -0
  47. data/vendor/bundle/gems/diff-lcs-1.2.5/Manifest.txt +38 -0
  48. data/vendor/bundle/gems/diff-lcs-1.2.5/README.rdoc +85 -0
  49. data/vendor/bundle/gems/diff-lcs-1.2.5/Rakefile +41 -0
  50. data/vendor/bundle/gems/diff-lcs-1.2.5/autotest/discover.rb +1 -0
  51. data/vendor/bundle/gems/diff-lcs-1.2.5/bin/htmldiff +32 -0
  52. data/vendor/bundle/gems/diff-lcs-1.2.5/bin/ldiff +6 -0
  53. data/vendor/bundle/gems/diff-lcs-1.2.5/docs/COPYING.txt +339 -0
  54. data/vendor/bundle/gems/diff-lcs-1.2.5/docs/artistic.txt +127 -0
  55. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/array.rb +7 -0
  56. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/block.rb +37 -0
  57. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/callbacks.rb +322 -0
  58. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/change.rb +177 -0
  59. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/htmldiff.rb +149 -0
  60. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/hunk.rb +276 -0
  61. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/internals.rb +301 -0
  62. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/ldiff.rb +195 -0
  63. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/string.rb +5 -0
  64. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs.rb +805 -0
  65. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff-lcs.rb +3 -0
  66. data/vendor/bundle/gems/rspec-3.0.0/License.txt +24 -0
  67. data/vendor/bundle/gems/rspec-3.0.0/README.md +47 -0
  68. data/vendor/bundle/gems/rspec-3.0.0/lib/rspec.rb +3 -0
  69. data/vendor/bundle/gems/rspec-core-3.0.2/.document +5 -0
  70. data/vendor/bundle/gems/rspec-core-3.0.2/.yardopts +7 -0
  71. data/vendor/bundle/gems/rspec-core-3.0.2/Changelog.md +1466 -0
  72. data/vendor/bundle/gems/rspec-core-3.0.2/License.txt +25 -0
  73. data/vendor/bundle/gems/rspec-core-3.0.2/README.md +243 -0
  74. data/vendor/bundle/gems/rspec-core-3.0.2/exe/rspec +4 -0
  75. data/vendor/bundle/gems/rspec-expectations-3.0.2/.document +5 -0
  76. data/vendor/bundle/gems/rspec-expectations-3.0.2/.yardopts +6 -0
  77. data/vendor/bundle/gems/rspec-expectations-3.0.2/Changelog.md +749 -0
  78. data/vendor/bundle/gems/rspec-expectations-3.0.2/License.txt +24 -0
  79. data/vendor/bundle/gems/rspec-expectations-3.0.2/README.md +278 -0
  80. data/vendor/bundle/gems/rspec-mocks-3.0.2/.document +5 -0
  81. data/vendor/bundle/gems/rspec-mocks-3.0.2/.yardopts +6 -0
  82. data/vendor/bundle/gems/rspec-mocks-3.0.2/Changelog.md +733 -0
  83. data/vendor/bundle/gems/rspec-mocks-3.0.2/License.txt +24 -0
  84. data/vendor/bundle/gems/rspec-mocks-3.0.2/README.md +380 -0
  85. data/vendor/bundle/gems/rspec-support-3.0.2/Changelog.md +30 -0
  86. data/vendor/bundle/gems/rspec-support-3.0.2/LICENSE.txt +22 -0
  87. data/vendor/bundle/gems/rspec-support-3.0.2/README.md +17 -0
  88. data/vendor/bundle/specifications/diff-lcs-1.2.5.gemspec +68 -0
  89. data/vendor/bundle/specifications/rspec-3.0.0.gemspec +43 -0
  90. data/vendor/bundle/specifications/rspec-core-3.0.2.gemspec +66 -0
  91. data/vendor/bundle/specifications/rspec-expectations-3.0.2.gemspec +51 -0
  92. data/vendor/bundle/specifications/rspec-mocks-3.0.2.gemspec +48 -0
  93. data/vendor/bundle/specifications/rspec-support-3.0.2.gemspec +42 -0
  94. metadata +153 -0
@@ -0,0 +1,749 @@
1
+ ### 3.0.2 / 2014-06-19
2
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.0.1...v3.0.2)
3
+
4
+ Bug Fixes:
5
+
6
+ * Fix regression in `contain_exactly` (AKA `match_array`) that caused it
7
+ to wrongly pass when the expected array was empty. (Myron Marston, #581)
8
+ * Provide a better error message when you use the `change(obj, :msg)`
9
+ form of the change matcher but forget the message argument. (Alex
10
+ Sunderland, #585)
11
+ * Make the `contain_exactly` matcher work with arrays that contain hashes in
12
+ arbitrary ordering. (Sam Phippen, #578)
13
+
14
+ ### 3.0.1 / 2014-06-12
15
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.0.0...v3.0.1)
16
+
17
+ Bug Fixes:
18
+
19
+ * Add a missing `require` that would cause the `respond_to` matcher to
20
+ fail when used in a project where the rest of RSpec (e.g. core and
21
+ expecatations) weren't being used. (Myron Marston, #566)
22
+ * Structs are no longer treated as arrays when diffed. (Jon Rowe, #576)
23
+
24
+ ### 3.0.0 / 2014-06-01
25
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.0.0.rc1...v3.0.0)
26
+
27
+ No code changes. Just taking it out of pre-release.
28
+
29
+ ### 3.0.0.rc1 / 2014-05-18
30
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.0.0.beta2...v3.0.0.rc1)
31
+
32
+ Breaking Changes for 3.0.0:
33
+
34
+ * Remove `matcher_execution_context` attribute from DSL-defined
35
+ custom matchers. (Myron Marston)
36
+ * Remove `RSpec::Matchers::Pretty#_pretty_print`. (Myron Marston)
37
+ * Remove `RSpec::Matchers::Pretty#expected_to_sentence`. (Myron Marston)
38
+ * Rename `RSpec::Matchers::Configuration` constant to
39
+ `RSpec::Expectations::Configuration`. (Myron Marston)
40
+ * Prevent `have_xyz` predicate matchers using private methods.
41
+ (Adrian Gonzalez)
42
+ * Block matchers must now implement `supports_block_expectations?`.
43
+ (Myron Marston)
44
+ * Stop supporting `require 'rspec-expectations'`.
45
+ Use `require 'rspec/expectations'` instead. (Myron Marston)
46
+
47
+ Bug Fixes:
48
+
49
+ * Fix `NoMethodError` triggered by beta2 when `YARD` was loaded in
50
+ the test environment. (Myron Marston)
51
+ * Fix `be_xyz` matcher to accept a `do...end` block. (Myron Marston)
52
+ * Fix composable matcher failure message generation logic
53
+ so that it does not blow up when given `$stdout` or `$stderr`.
54
+ (Myron Marston)
55
+ * Fix `change` matcher to work properly with `IO` objects.
56
+ (Myron Marston)
57
+ * Fix `exist` matcher so that it can be used in composed matcher
58
+ expressions involving objects that do not implement `exist?` or
59
+ `exists?`. (Daniel Fone)
60
+ * Fix composable matcher match logic so that it clones matchers
61
+ before using them in order to work properly with matchers
62
+ that use internal memoization based on a given `actual` value.
63
+ (Myron Marston)
64
+ * Fix `be_xyz` and `has_xyz` predicate matchers so that they can
65
+ be used in composed matcher expressions involving objects that
66
+ do not implement the predicate method. (Daniel Fone)
67
+
68
+ Enhancements:
69
+
70
+ * Document the remaining public APIs. rspec-expectations now has 100% of
71
+ the public API documented and will remain that way (as new undocumented
72
+ methods will fail the build). (Myron Marston)
73
+ * Improve the formatting of BigDecimal objects in `eq` matcher failure
74
+ messages. (Daniel Fone)
75
+ * Improve the failure message for `be_xyz` predicate matchers so
76
+ that it includes the `inspect` output of the receiver.
77
+ (Erik Michaels-Ober, Sam Phippen)
78
+ * Add `all` matcher, to allow you to specify that a given matcher
79
+ matches all elements in a collection:
80
+ `expect([1, 3, 5]).to all( be_odd )`. (Adam Farhi)
81
+ * Add boolean aliases (`&`/`|`) for compound operators (`and`/`or`). (Adam Farhi)
82
+ * Give users a clear error when they wrongly use a value matcher
83
+ in a block expectation expression (e.g. `expect { 3 }.to eq(3)`)
84
+ or vice versa. (Myron Marston)
85
+
86
+ ### 3.0.0.beta2 / 2014-02-17
87
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.0.0.beta1...v3.0.0.beta2)
88
+
89
+ Breaking Changes for 3.0.0:
90
+
91
+ * Remove deprecated support for accessing the `RSpec` constant using
92
+ `Rspec` or `Spec`. (Myron Marston)
93
+ * Remove deprecated `RSpec::Expectations.differ=`. (Myron Marston)
94
+ * Remove support for deprecated `expect(...).should`. (Myron Marston)
95
+ * Explicitly disallow `expect { }.not_to change { }` with `by`,
96
+ `by_at_least`, `by_at_most` or `to`. These have never been supported
97
+ but did not raise explicit errors. (Myron Marston)
98
+ * Provide `===` rather than `==` as an alias of `matches?` for
99
+ all matchers. The semantics of `===` are closer to an RSpec
100
+ matcher than `==`. (Myron Marston)
101
+ * Remove deprecated `RSpec::Matchers::OperatorMatcher` constant.
102
+ (Myron Marston)
103
+ * Make `RSpec::Expectations::ExpectationNotMetError` subclass
104
+ `Exception` rather than `StandardError` so they can bypass
105
+ a bare `rescue` in end-user code (e.g. when an expectation is
106
+ set from within a rspec-mocks stub implementation). (Myron Marston)
107
+ * Remove Test::Unit and Minitest 4.x integration. (Myron Marston)
108
+
109
+ Enhancements:
110
+
111
+ * Simplify the failure message of the `be` matcher when matching against:
112
+ `true`, `false` and `nil`. (Sam Phippen)
113
+ * Update matcher protocol and custom matcher DSL to better align
114
+ with the newer `expect` syntax. If you want your matchers to
115
+ maintain compatibility with multiple versions of RSpec, you can
116
+ alias the new names to the old. (Myron Marston)
117
+ * `failure_message_for_should` => `failure_message`
118
+ * `failure_message_for_should_not` => `failure_message_when_negated`
119
+ * `match_for_should` => `match`
120
+ * `match_for_should_not` => `match_when_negated`
121
+ * Improve generated descriptions from `change` matcher. (Myron Marston)
122
+ * Add support for compound matcher expressions using `and` and `or`.
123
+ Simply chain them off of any existing matcher to create an expression
124
+ like `expect(alphabet).to start_with("a").and end_with("z")`.
125
+ (Eloy Espinaco)
126
+ * Add `contain_exactly` as a less ambiguous version of `match_array`.
127
+ Note that it expects the expected array to be splatted as
128
+ individual args: `expect(array).to contain_exactly(1, 2)` is
129
+ the same as `expect(array).to match_array([1, 2])`. (Myron Marston)
130
+ * Update `contain_exactly`/`match_array` so that it can match against
131
+ other non-array collections (such as a `Set`). (Myron Marston)
132
+ * Update built-in matchers so that they can accept matchers as arguments
133
+ to allow you to compose matchers in arbitrary ways. (Myron Marston)
134
+ * Add `RSpec::Matchers::Composable` mixin that can be used to make
135
+ a custom matcher composable as well. Note that custom matchers
136
+ defined via `RSpec::Matchers.define` already have this. (Myron
137
+ Marston)
138
+ * Define noun-phrase aliases for built-in matchers, which can be
139
+ used when creating composed matcher expressions that read better
140
+ and provide better failure messages. (Myron Marston)
141
+ * Add `RSpec::Machers.alias_matcher` so users can define their own
142
+ matcher aliases. The `description` of the matcher will reflect the
143
+ alternate matcher name. (Myron Marston)
144
+ * Add explicit `be_between` matcher. `be_between` has worked for a
145
+ long time as a dynamic predicate matcher, but the failure message
146
+ was suboptimal. The new matcher provides a much better failure
147
+ message. (Erik Michaels-Ober)
148
+ * Enhance the `be_between` matcher to allow for `inclusive` or `exclusive`
149
+ comparison (e.g. inclusive of min/max or exclusive of min/max).
150
+ (Pedro Gimenez)
151
+ * Make failure message for `not_to be #{operator}` less confusing by
152
+ only saying it's confusing when comparison operators are used.
153
+ (Prathamesh Sonpatki)
154
+ * Improve failure message of `eq` matcher when `Time` or `DateTime`
155
+ objects are used so that the full sub-second precision is included.
156
+ (Thomas Holmes, Jeff Wallace)
157
+ * Add `output` matcher for expecting that a block outputs `to_stdout`
158
+ or `to_stderr`. (Luca Pette, Matthias Günther)
159
+ * Forward a provided block on to the `has_xyz?` method call when
160
+ the `have_xyz` matcher is used. (Damian Galarza)
161
+ * Provide integration with Minitest 5.x. Require
162
+ `rspec/expectations/minitest_integration` after loading minitest
163
+ to use rspec-expectations with minitest. (Myron Marston)
164
+
165
+ Bug Fixes:
166
+
167
+ * Fix wrong matcher descriptions with falsey expected value (yujinakayama)
168
+ * Fix `expect { }.not_to change { }.from(x)` so that the matcher only
169
+ passes if the starting value is `x`. (Tyler Rick, Myron Marston)
170
+ * Fix hash diffing, so that it colorizes properly and doesn't consider trailing
171
+ commas when performing the diff. (Jared Norman)
172
+ * Fix built-in matchers to fail normally rather than raising
173
+ `ArgumentError` when given an object of the wrong type to match
174
+ against, so that they work well in composite matcher expressions like
175
+ `expect([1.51, "foo"]).to include(a_string_matching(/foo/), a_value_within(0.1).of(1.5))`.
176
+ (Myron Marston)
177
+
178
+ Deprecations:
179
+
180
+ * Retain support for RSpec 2 matcher protocol (e.g. for matchers
181
+ in 3rd party extension gems like `shoulda`), but it will print
182
+ a deprecation warning. (Myron Marston)
183
+
184
+ ### 3.0.0.beta1 / 2013-11-07
185
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.99.1...v3.0.0.beta1)
186
+
187
+ Breaking Changes for 3.0.0:
188
+
189
+ * Remove explicit support for 1.8.6. (Jon Rowe)
190
+ * Remove the deprecated `be_close` matcher, preferring `be_within` instead.
191
+ (Sam Phippen)
192
+ * Remove the deprecated `have`, `have_at_least` and `have_at_most` matchers.
193
+ You can continue using those matchers through https://github.com/rspec/rspec-collection_matchers,
194
+ or you can rewrite your expectations with something like
195
+ `expect(your_object.size).to eq(num)`. (Hugo Baraúna)
196
+ * Rename `be_true` and `be_false` to `be_truthy` and `be_falsey`. (Sam Phippen)
197
+ * Make `expect { }.to_not raise_error(SomeSpecificClass, message)`,
198
+ `expect { }.to_not raise_error(SomeSpecificClass)` and
199
+ `expect { }.to_not raise_error(message)` invalid, since they are prone
200
+ to hiding failures. Instead, use `expect { }.to_not raise_error` (with no
201
+ args). (Sam Phippen)
202
+ * Within `RSpec::Matchers.define` blocks, helper methods made available
203
+ either via `def self.helper` or `extend HelperModule` are no longer
204
+ available to the `match` block (or any of the others). Instead
205
+ `include` your helper module and define the helper method as an
206
+ instance method. (Myron Marston)
207
+ * Force upgrading Diff::LCS for encoding compatability with diffs. (Jon Rowe)
208
+
209
+ Enhancements:
210
+
211
+ * Support `do..end` style block with `raise_error` matcher. (Yuji Nakayama)
212
+ * Rewrote custom matcher DSL to simplify its implementation and solve a
213
+ few issues. (Myron Marston)
214
+ * Allow early `return` from within custom matcher DSL blocks. (Myron
215
+ Marston)
216
+ * The custom matcher DSL's `chain` can now accept a block. (Myron
217
+ Marston)
218
+ * Support setting an expectation on a `raise_error` matcher via a chained
219
+ `with_message` method call. (Sam Phippen)
220
+
221
+ Bug Fixes:
222
+
223
+ * Allow `include` and `match` matchers to be used from within a
224
+ DSL-defined custom matcher's `match` block. (Myron Marston)
225
+ * Correct encoding error message on diff failure (Jon Rowe)
226
+
227
+ Deprecations:
228
+
229
+ * Using the old `:should` syntax without explicitly configuring it is deprecated.
230
+ It will continue to work but will emit a deprecation warning in RSpec 3 if
231
+ you do not explicitly enable it. (Sam Phippen)
232
+
233
+ ### 2.99.1 / 2014-06-19
234
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.99.0...v2.99.1)
235
+
236
+ Bug Fixes:
237
+
238
+ * Fix typo in custom matcher `expected` deprecation warning -- it's
239
+ `expected_as_array`, not `expected_array`. (Frederick Cheung, #562)
240
+
241
+ ### 2.99.0 / 2014-06-01
242
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.99.0.rc1...v2.99.0)
243
+
244
+ Enhancements:
245
+
246
+ * Special case deprecation message for `errors_on` with `rspec-rails` to be more useful.
247
+ (Aaron Kromer)
248
+
249
+ ### 2.99.0.rc1 / 2014-05-18
250
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.99.0.beta2...2.99.0.rc1)
251
+
252
+ Deprecations:
253
+
254
+ * Deprecate `matcher_execution_context` attribute on DSL-defined
255
+ custom matchers. (Myron Marston)
256
+ * Deprecate `RSpec::Matchers::Pretty#_pretty_print`. (Myron Marston)
257
+ * Deprecate `RSpec::Matchers::Pretty#expected_to_sentence`. (Myron Marston)
258
+ * Deprecate `RSpec::Matchers::Configuration` in favor of
259
+ `RSpec::Expectations::Configuration`. (Myron Marston)
260
+ * Deprecate `be_xyz` predicate matcher on an object that doesn't respond to
261
+ `xyz?` or `xyzs?`. (Daniel Fone)
262
+ * Deprecate `have_xyz` matcher on an object that doesn't respond to `has_xyz?`.
263
+ (Daniel Fone)
264
+ * Deprecate `have_xyz` matcher on an object that has a private method `has_xyz?`.
265
+ (Jon Rowe)
266
+ * Issue a deprecation warning when a block expectation expression is
267
+ used with a matcher that doesn't explicitly support block expectations
268
+ via `supports_block_expectations?`. (Myron Marston)
269
+ * Deprecate `require 'rspec-expectations'`. Use
270
+ `require 'rspec/expectations'` instead. (Myron Marston)
271
+
272
+ ### 2.99.0.beta2 / 2014-02-17
273
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.99.0.beta1...v2.99.0.beta2)
274
+
275
+ Deprecations:
276
+
277
+ * Deprecate chaining `by`, `by_at_least`, `by_at_most` or `to` off of
278
+ `expect { }.not_to change { }`. The docs have always said these are
279
+ not supported for the negative form but now they explicitly raise
280
+ errors in RSpec 3. (Myron Marston)
281
+ * Change the semantics of `expect { }.not_to change { x }.from(y)`.
282
+ In RSpec 2.x, this expectation would only fail if `x` started with
283
+ the value of `y` and changed. If it started with a different value
284
+ and changed, it would pass. In RSpec 3, it will pass only if the
285
+ value starts at `y` and it does not change. (Myron Marston)
286
+ * Deprecate `matcher == value` as an alias for `matcher.matches?(value)`,
287
+ in favor of `matcher === value`. (Myron Marston)
288
+ * Deprecate `RSpec::Matchers::OperatorMatcher` in favor of
289
+ `RSpec::Matchers::BuiltIn::OperatorMatcher`. (Myron Marston)
290
+ * Deprecate auto-integration with Test::Unit and minitest.
291
+ Instead, include `RSpec::Matchers` in the appropriate test case
292
+ base class yourself. (Myron Marston)
293
+ * Deprecate treating `#expected` on a DSL-generated custom matcher
294
+ as an array when only 1 argument is passed to the matcher method.
295
+ In RSpec 3 it will be the single value in order to make diffs
296
+ work properly. (Jon Rowe)
297
+
298
+ ### 2.99.0.beta1 / 2013-11-07
299
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.4...v2.99.0.beta1)
300
+
301
+ Deprecations
302
+
303
+ * Deprecate `have`, `have_at_least` and `have_at_most`. You can continue using those
304
+ matchers through https://github.com/rspec/rspec-collection_matchers, or
305
+ you can rewrite your expectations with something like
306
+ `expect(your_object.size).to eq(num)`. (Hugo Baraúna)
307
+ * Deprecate `be_xyz` predicate matcher when `xyz?` is a private method.
308
+ (Jon Rowe)
309
+ * Deprecate `be_true`/`be_false` in favour of `be_truthy`/`be_falsey`
310
+ (for Ruby's conditional semantics) or `be true`/`be false`
311
+ (for exact equality). (Sam Phippen)
312
+ * Deprecate calling helper methods from a custom matcher with the wrong
313
+ scope. (Myron Marston)
314
+ * `def self.foo` / `extend Helper` can be used to add macro methods
315
+ (e.g. methods that call the custom matcher DSL methods), but should
316
+ not be used to define helper methods called from within the DSL
317
+ blocks.
318
+ * `def foo` / `include Helper` is the opposite: it's for helper methods
319
+ callable from within a DSL block, but not for defining macros.
320
+ * RSpec 2.x allowed helper methods defined either way to be used for
321
+ either purpose, but RSpec 3.0 will not.
322
+
323
+ ### 2.14.5 / 2014-02-01
324
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.4...v2.14.5)
325
+
326
+ Bug fixes
327
+
328
+ * Fix wrong matcher descriptions with falsey expected value
329
+ (yujinakayama)
330
+
331
+ ### 2.14.4 / 2013-11-06
332
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.3...v2.14.4)
333
+
334
+ Bug fixes
335
+
336
+ * Make the `match` matcher produce a diff output. (Jon Rowe, Ben Moss)
337
+ * Choose encoding for diff's more intelligently, and when all else fails fall
338
+ back to default internal encoding with replacing characters. (Jon Rowe)
339
+
340
+ ### 2.14.3 / 2013-09-22
341
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.2...v2.14.3)
342
+
343
+ Bug fixes
344
+
345
+ * Fix operator matchers (`should` syntax) when `method` is redefined on target.
346
+ (Brandon Turner)
347
+ * Fix diffing of hashes with object based keys. (Jon Rowe)
348
+ * Fix operator matchers (`should` syntax) when operator is defined via
349
+ `method_missing` (Jon Rowe)
350
+
351
+ ### 2.14.2 / 2013-08-14
352
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.1...v2.14.2)
353
+
354
+ Bug fixes
355
+
356
+ * Fix `be_<predicate>` matcher to not support operator chaining like the
357
+ `be` matcher does (e.g. `be == 5`). This led to some odd behaviors
358
+ since `be_<predicate> == anything` returned a `BeComparedTo` matcher
359
+ and was thus always truthy. This was a consequence of the implementation
360
+ (e.g. subclassing the basic `Be` matcher) and was not intended behavior.
361
+ (Myron Marston).
362
+ * Fix `change` matcher to compare using `==` in addition to `===`. This
363
+ is important for an expression like:
364
+ `expect {}.to change { a.class }.from(ClassA).to(ClassB)` because
365
+ `SomeClass === SomeClass` returns false. (Myron Marston)
366
+
367
+ ### 2.14.1 / 2013-08-08
368
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.0...2.14.1)
369
+
370
+ Bug fixes
371
+
372
+ * Ensure diff output uses the same encoding as the encoding of
373
+ the string being diff'd to prevent `Encoding::UndefinedConversionError`
374
+ errors (Jon Rowe).
375
+
376
+ ### 2.14.0 / 2013-07-06
377
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.0.rc1...v2.14.0)
378
+
379
+ Bug fixes
380
+
381
+ * Values that are not matchers use `#inspect`, rather than `#description` for
382
+ documentation output (Andy Lindeman, Sam Phippen).
383
+ * Make `expect(a).to be_within(x).percent_of(y)` work with negative y
384
+ (Katsuhiko Nishimra).
385
+ * Make the `be_predicate` matcher work as expected used with `expect{...}.to
386
+ change...` (Sam Phippen).
387
+
388
+ ### 2.14.0.rc1 / 2013-05-27
389
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.13.0...v2.14.0.rc1)
390
+
391
+ Enhancements
392
+
393
+ * Enhance `yield_control` so that you can specify an exact or relative
394
+ number of times: `expect { }.to yield_control.exactly(3).times`,
395
+ `expect { }.to yield_control.at_least(2).times`, etc (Bartek
396
+ Borkowski).
397
+ * Make the differ that is used when an expectation fails better handle arrays
398
+ by splitting each element of the array onto its own line. (Sam Phippen)
399
+ * Accept duck-typed strings that respond to `:to_str` as expectation messages.
400
+ (Toby Ovod-Everett)
401
+
402
+ Bug fixes
403
+
404
+ * Fix differ to not raise errors when dealing with differently-encoded
405
+ strings (Jon Rowe).
406
+ * Fix `expect(something).to be_within(x).percent_of(y)` where x and y are both
407
+ integers (Sam Phippen).
408
+ * Fix `have` matcher to handle the fact that on ruby 2.0,
409
+ `Enumerator#size` may return nil (Kenta Murata).
410
+ * Fix `expect { raise s }.to raise_error(s)` where s is an error instance
411
+ on ruby 2.0 (Sam Phippen).
412
+ * Fix `expect(object).to raise_error` passing. This now warns the user and
413
+ fails the spec (tomykaira).
414
+
415
+ Deprecations
416
+
417
+ * Deprecate `expect { }.not_to raise_error(SpecificErrorClass)` or
418
+ `expect { }.not_to raise_error("some specific message")`. Using
419
+ these was prone to hiding failures as they would allow _any other
420
+ error_ to pass. (Sam Phippen and David Chelimsky)
421
+
422
+ ### 2.13.0 / 2013-02-23
423
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.12.1...v2.13.0)
424
+
425
+ Enhancements
426
+
427
+ * Add support for percent deltas to `be_within` matcher:
428
+ `expect(value).to be_within(10).percent_of(expected)`
429
+ (Myron Marston).
430
+ * Add support to `include` matcher to allow it to be given a list
431
+ of matchers as the expecteds to match against (Luke Redpath).
432
+
433
+ Bug fixes
434
+
435
+ * Fix `change` matcher so that it dups strings in order to handle
436
+ mutated strings (Myron Marston).
437
+ * Fix `should be =~ /some regex/` / `expect(...).to be =~ /some regex/`.
438
+ Previously, these either failed with a confusing `undefined method
439
+ matches?' for false:FalseClass` error or were no-ops that didn't
440
+ actually verify anything (Myron Marston).
441
+ * Add compatibility for diff-lcs 1.2 and relax the version
442
+ constraint (Peter Goldstein).
443
+ * Fix DSL-generated matchers to allow multiple instances of the
444
+ same matcher in the same example to have different description
445
+ and failure messages based on the expected value (Myron Marston).
446
+ * Prevent `undefined method #split for Array` error when dumping
447
+ the diff of an array of multiline strings (Myron Marston).
448
+ * Don't blow up when comparing strings that are in an encoding
449
+ that is not ASCII compatible (Myron Marston).
450
+ * Remove confusing "Check the implementation of #==" message
451
+ printed for empty diffs (Myron Marston).
452
+
453
+ ### 2.12.1 / 2012-12-15
454
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.12.0...v2.12.1)
455
+
456
+ Bug fixes
457
+
458
+ * Improve the failure message for an expression like
459
+ `{}.should =~ {}`. (Myron Marston and Andy Lindeman)
460
+ * Provide a `match_regex` alias so that custom matchers
461
+ built using the matcher DSL can use it (since `match`
462
+ is a different method in that context).
463
+ (Steven Harman)
464
+
465
+ ### 2.12.0 / 2012-11-12
466
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.11.3...v2.12.0)
467
+
468
+ Enhancements
469
+
470
+ * Colorize diffs if the `--color` option is configured. (Alex Coplan)
471
+ * Include backtraces in unexpected errors handled by `raise_error`
472
+ matcher (Myron Marston)
473
+ * Print a warning when users accidentally pass a non-string argument
474
+ as an expectation message (Sam Phippen)
475
+ * `=~` and `match_array` matchers output a more useful error message when
476
+ the actual value is not an array (or an object that responds to `#to_ary`)
477
+ (Sam Phippen)
478
+
479
+ Bug fixes
480
+
481
+ * Fix `include` matcher so that `expect({}).to include(:a => nil)`
482
+ fails as it should (Sam Phippen).
483
+ * Fix `be_an_instance_of` matcher so that `Class#to_s` is used in the
484
+ description rather than `Class#inspect`, since some classes (like
485
+ `ActiveRecord::Base`) define a long, verbose `#inspect`.
486
+ (Tom Stuart)
487
+
488
+ ### 2.11.3 / 2012-09-04
489
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.11.2...v2.11.3)
490
+
491
+ Bug fixes
492
+
493
+ * Fix (and deprecate) `expect { }.should` syntax so that it works even
494
+ though it was never a documented or intended syntax. It worked as a
495
+ consequence of the implementation of `expect` in RSpec 2.10 and
496
+ earlier. (Myron Marston)
497
+ * Ensure #== is defined on built in matchers so that they can be composed.
498
+ For example:
499
+
500
+ expect {
501
+ user.emailed!
502
+ }.to change { user.last_emailed_at }.to be_within(1.second).of(Time.zone.now)
503
+
504
+ ### 2.11.2 / 2012-07-25
505
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.11.1...v2.11.2)
506
+
507
+ Bug fixes
508
+
509
+ * Define `should` and `should_not` on `Object` rather than `BasicObject`
510
+ on MacRuby. On MacRuby, `BasicObject` is defined but is not the root
511
+ of the object hierarchy. (Gabriel Gilder)
512
+
513
+ ### 2.11.1 / 2012-07-08
514
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.11.0...v2.11.1)
515
+
516
+ Bug fixes
517
+
518
+ * Constrain `actual` in `be_within` matcher to values that respond to `-` instead
519
+ of requiring a specific type.
520
+ * `Time`, for example, is a legit alternative.
521
+
522
+ ### 2.11.0 / 2012-07-07
523
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.10.0...v2.11.0)
524
+
525
+ Enhancements
526
+
527
+ * Expand `expect` syntax so that it supports expections on bare values
528
+ in addition to blocks (Myron Marston).
529
+ * Add configuration options to control available expectation syntaxes
530
+ (Myron Marston):
531
+ * `RSpec.configuration.expect_with(:rspec) { |c| c.syntax = :expect }`
532
+ * `RSpec.configuration.expect_with(:rspec) { |c| c.syntax = :should }`
533
+ * `RSpec.configuration.expect_with(:rspec) { |c| c.syntax = [:should, :expect] }`
534
+ * `RSpec.configuration.add_should_and_should_not_to Delegator`
535
+
536
+ Bug fixes
537
+
538
+ * Allow only `Numeric` values to be the "actual" in the `be_within` matcher.
539
+ This prevents confusing error messages. (Su Zhang @zhangsu)
540
+ * Define `should` and `should_not` on `BasicObject` rather than `Kernel`
541
+ on 1.9. This makes `should` and `should_not` work properly with
542
+ `BasicObject`-subclassed proxy objects like `Delegator`. (Myron
543
+ Marston)
544
+
545
+ ### 2.10.0 / 2012-05-03
546
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.9.1...v2.10.0)
547
+
548
+ Enhancements
549
+
550
+ * Add new `start_with` and `end_with` matchers (Jeremy Wadsack)
551
+ * Add new matchers for specifying yields (Myron Marston):
552
+ * `expect {...}.to yield_control`
553
+ * `expect {...}.to yield_with_args(1, 2, 3)`
554
+ * `expect {...}.to yield_with_no_args`
555
+ * `expect {...}.to yield_successive_args(1, 2, 3)`
556
+ * `match_unless_raises` takes multiple exception args
557
+
558
+ Bug fixes
559
+
560
+ * Fix `be_within` matcher to be inclusive of delta.
561
+ * Fix message-specific specs to pass on Rubinius (John Firebaugh)
562
+
563
+ ### 2.9.1 / 2012-04-03
564
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.9.0...v2.9.1)
565
+
566
+ Bug fixes
567
+
568
+ * Provide a helpful message if the diff between two objects is empty.
569
+ * Fix bug diffing single strings with multiline strings.
570
+ * Fix for error with using custom matchers inside other custom matchers
571
+ (mirasrael)
572
+ * Fix using execution context methods in nested DSL matchers (mirasrael)
573
+
574
+ ### 2.9.0 / 2012-03-17
575
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.8.0...v2.9.0)
576
+
577
+ Enhancements
578
+
579
+ * Move built-in matcher classes to RSpec::Matchers::BuiltIn to reduce pollution
580
+ of RSpec::Matchers (which is included in every example).
581
+ * Autoload files with matcher classes to improve load time.
582
+
583
+ Bug fixes
584
+
585
+ * Align `respond_to?` and `method_missing` in DSL-defined matchers.
586
+ * Clear out user-defined instance variables between invocations of DSL-defined
587
+ matchers.
588
+ * Dup the instance of a DSL generated matcher so its state is not changed by
589
+ subsequent invocations.
590
+ * Treat expected args consistently across positive and negative expectations
591
+ (thanks to Ralf Kistner for the heads up)
592
+
593
+ ### 2.8.0 / 2012-01-04
594
+
595
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.8.0.rc2...v2.8.0)
596
+
597
+ Enhancements
598
+
599
+ * Better diff output for Hash (Philippe Creux)
600
+ * Eliminate Ruby warnings (Olek Janiszewski)
601
+
602
+ ### 2.8.0.rc2 / 2011-12-19
603
+
604
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.8.0.rc1...v2.8.0.rc2)
605
+
606
+ No changes for this release. Just releasing with the other rspec gems.
607
+
608
+ ### 2.8.0.rc1 / 2011-11-06
609
+
610
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.7.0...v2.8.0.rc1)
611
+
612
+ Enhancements
613
+
614
+ * Use classes for the built-in matchers (they're faster).
615
+ * Eliminate Ruby warnings (Matijs van Zuijlen)
616
+
617
+ ### 2.7.0 / 2011-10-16
618
+
619
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.6.0...v2.7.0)
620
+
621
+ Enhancements
622
+
623
+ * `HaveMatcher` converts argument using `to_i` (Alex Bepple & Pat Maddox)
624
+ * Improved failure message for the `have_xxx` matcher (Myron Marston)
625
+ * `HaveMatcher` supports `count` (Matthew Bellantoni)
626
+ * Change matcher dups `Enumerable` before the action, supporting custom
627
+ `Enumerable` types like `CollectionProxy` in Rails (David Chelimsky)
628
+
629
+ Bug fixes
630
+
631
+ * Fix typo in `have(n).xyz` documentation (Jean Boussier)
632
+ * fix `safe_sort` for ruby 1.9.2 (`Kernel` now defines `<=>` for Object) (Peter
633
+ van Hardenberg)
634
+
635
+ ### 2.6.0 / 2011-05-12
636
+
637
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.5.0...v2.6.0)
638
+
639
+ Enhancements
640
+
641
+ * `change` matcher accepts regexps (Robert Davis)
642
+ * better descriptions for `have_xxx` matchers (Magnus Bergmark)
643
+ * `range.should cover(*values)` (Anders Furseth)
644
+
645
+ Bug fixes
646
+
647
+ * Removed non-ascii characters that were choking rcov (Geoffrey Byers)
648
+ * change matcher dups arrays and hashes so their before/after states can be
649
+ compared correctly.
650
+ * Fix the order of inclusion of RSpec::Matchers in Test::Unit::TestCase and
651
+ MiniTest::Unit::TestCase to prevent a SystemStackError (Myron Marston)
652
+
653
+ ### 2.5.0 / 2011-02-05
654
+
655
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.4.0...v2.5.0)
656
+
657
+ Enhancements
658
+
659
+ * `should exist` works with `exist?` or `exists?` (Myron Marston)
660
+ * `expect { ... }.not_to do_something` (in addition to `to_not`)
661
+
662
+ Documentation
663
+
664
+ * improved docs for raise_error matcher (James Almond)
665
+
666
+ ### 2.4.0 / 2011-01-02
667
+
668
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.3.0...v2.4.0)
669
+
670
+ No functional changes in this release, which was made to align with the
671
+ rspec-core-2.4.0 release.
672
+
673
+ Enhancements
674
+
675
+ * improved RDoc for change matcher (Jo Liss)
676
+
677
+ ### 2.3.0 / 2010-12-12
678
+
679
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.2.1...v2.3.0)
680
+
681
+ Enhancements
682
+
683
+ * diff strings when include matcher fails (Mike Sassak)
684
+
685
+ ### 2.2.0 / 2010-11-28
686
+
687
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.1.0...v2.2.0)
688
+
689
+ ### 2.1.0 / 2010-11-07
690
+
691
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.0.1...v2.1.0)
692
+
693
+ Enhancements
694
+
695
+ * `be_within(delta).of(expected)` matcher (Myron Marston)
696
+ * Lots of new Cucumber features (Myron Marston)
697
+ * Raise error if you try `should != expected` on Ruby-1.9 (Myron Marston)
698
+ * Improved failure messages from `throw_symbol` (Myron Marston)
699
+
700
+ Bug fixes
701
+
702
+ * Eliminate hard dependency on `RSpec::Core` (Myron Marston)
703
+ * `have_matcher` - use pluralize only when ActiveSupport inflections are indeed
704
+ defined (Josep M Bach)
705
+ * throw_symbol matcher no longer swallows exceptions (Myron Marston)
706
+ * fix matcher chaining to avoid name collisions (Myron Marston)
707
+
708
+ ### 2.0.0 / 2010-10-10
709
+
710
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.0.0.rc...v2.0.0)
711
+
712
+ Enhancements
713
+
714
+ * Add match_for_should_not method to matcher DSL (Myron Marston)
715
+
716
+ Bug fixes
717
+
718
+ * `respond_to` matcher works correctly with `should_not` with multiple methods
719
+ (Myron Marston)
720
+ * `include` matcher works correctly with `should_not` with multiple values
721
+ (Myron Marston)
722
+
723
+ ### 2.0.0.rc / 2010-10-05
724
+
725
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.0.0.beta.22...v2.0.0.rc)
726
+
727
+ Enhancements
728
+
729
+ * `require 'rspec/expectations'` in a T::U or MiniUnit suite (Josep M. Bach)
730
+
731
+ Bug fixes
732
+
733
+ * change by 0 passes/fails correctly (Len Smith)
734
+ * Add description to satisfy matcher
735
+
736
+ ### 2.0.0.beta.22 / 2010-09-12
737
+
738
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.0.0.beta.20...v2.0.0.beta.22)
739
+
740
+ Enhancements
741
+
742
+ * diffing improvements
743
+ * diff multiline strings
744
+ * don't diff single line strings
745
+ * don't diff numbers (silly)
746
+ * diff regexp + multiline string
747
+
748
+ Bug fixes
749
+ * `should[_not]` change now handles boolean values correctly