diff_matcher 2.4.0 → 2.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 263716b9ab7bbdc763e3ee639f6a8ecdcca95661
4
+ data.tar.gz: 193438c3843d95b7dd6d1d311ea7f5da4c98d6e2
5
+ SHA512:
6
+ metadata.gz: abbfb0e8738b88efc5a8d5546cb02e7ffc845c76255d7cf1542391c8140abdec7b21d072cb9a913d7d75f876b47a21f7e6b2a71e80c99e0f9490ada00f922571
7
+ data.tar.gz: f1d2222a64acc05739651604c378a4a9f33998d91af454f3d0c3805fa02bc0b1d7ec81032ec284da8c0c7afef5d845e46eeac81ad40eb60a30a22a842c3a1192
data/.gitignore CHANGED
@@ -1,4 +1,6 @@
1
1
  coverage
2
2
  pkg
3
3
  Gemfile.lock
4
- .rvmrc
4
+ .ruby_version
5
+ gems
6
+ bin
@@ -8,4 +8,5 @@ rvm:
8
8
  # - rbx-19mode
9
9
  - jruby
10
10
  - ree
11
- - ruby-head
11
+ # - ruby-head
12
+ - 2.0.0
@@ -1,12 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ### v2.4.1
4
+
5
+ * BUGFIX match values where their classes are different but one is a subclass of the other
6
+
3
7
  ### v2.4.0
4
8
 
5
- Add class configuration of Difference from a block
9
+ * Add class configuration of Difference from a block
6
10
 
7
11
  ### v2.3.3
8
12
 
9
- Allow HTML output using `:html_output=>true` option
13
+ * Allow HTML output using `:html_output=>true` option
10
14
 
11
15
  ### v2.3.2
12
16
 
@@ -19,13 +23,13 @@
19
23
  ### v2.2.3
20
24
 
21
25
  * set color_enabled/color_scheme on the class
22
-
26
+
23
27
  (ie. so it can be used by default)
24
28
 
25
29
  ### v2.2.2
26
30
 
27
31
  * BUGFIX for `AllMatcher`
28
-
32
+
29
33
  - return a diff instead of raising an exception
30
34
  - (raising an exception was a bad idea as it blew up the entire match
31
35
  when used in conjuction with an or-matcher, or embedded into other
@@ -45,7 +49,7 @@
45
49
  ### v2.0.0
46
50
 
47
51
  * Remove `:verbose` option
48
-
52
+
49
53
  More often than not users want this as the default.
50
54
 
51
55
  ### v1.0.1
data/Gemfile CHANGED
@@ -1,10 +1,10 @@
1
- source "http://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
- #gemspec
3
+ gemspec
4
4
 
5
5
  group :development do
6
- gem "rake" , "~> 0.9"
7
- gem "rspec", "~> 2.6.0"
6
+ gem "rake" , "~> 10.1"
7
+ gem "rspec", "~> 2.14"
8
8
 
9
9
  platforms :mri_19 do
10
10
  gem "simplecov"
data/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  DiffMatcher
2
2
  ===
3
3
 
4
- [![build status](http://travis-ci.org/playup/diff_matcher.png)](http://travis-ci.org/playup/diff_matcher)
5
- [![still maintained](http://stillmaintained.com/playupchris/diff_matcher.png)](http://stillmaintained.com/playupchris/diff_matcher)
4
+ [![Build Status](https://secure.travis-ci.org/diff-matcher/diff_matcher.png)](https://travis-ci.org/diff-matcher/diff_matcher)
5
+ [![Gem Version](https://badge.fury.io/rb/diff_matcher.png)](http://badge.fury.io/rb/diff_matcher)
6
+ [![Dependency Status](https://gemnasium.com/diff-matcher/diff_matcher.png)](https://gemnasium.com/diff-matcher/diff_matcher)
7
+ [![still maintained](http://stillmaintained.com/diff-matcher/diff_matcher.png)](http://stillmaintained.com/diff-matcher/diff_matcher)
6
8
 
7
9
  Generates a diff by matching against user-defined matchers written in ruby.
8
10
 
@@ -301,7 +303,7 @@ Using the `:default` colour scheme items shown in a difference are coloured as f
301
303
 
302
304
  Other colour schemes, eg. `:color_scheme=>:white_background` will use different colour mappings.
303
305
 
304
-
306
+
305
307
 
306
308
  Similar gems
307
309
  ---
@@ -353,34 +355,40 @@ do pattern matching and also looks like a good alternative to diff_matcher, it h
353
355
 
354
356
  Use with rspec
355
357
  ---
356
- To use with rspec create the following custom matcher:
358
+ To use with rspec, create a custom matcher. The following example matcher works with rspec-1.2.4 and up.
357
359
 
358
360
  ``` ruby
359
361
  require 'diff_matcher'
360
362
 
361
- module RSpec
362
- module Matchers
363
- class BeMatching
364
- include BaseMatcher
365
-
366
- def initialize(expected, opts)
367
- @expected = expected
368
- @opts = opts.update(:color_enabled=>RSpec::configuration.color_enabled?)
369
- end
370
-
371
- def matches?(actual)
372
- @difference = DiffMatcher::Difference.new(expected, actual, @opts)
373
- @difference.matching?
374
- end
375
-
376
- def failure_message_for_should
377
- @difference.to_s
378
- end
379
- end
380
-
381
- def be_matching(expected, opts={})
382
- Matchers::BeMatching.new(expected, opts)
383
- end
363
+ # Uses the diff_matcher gem to provide advanced matching abilities, along with nice visual representation of the
364
+ # diff between actual and expected. The functionality set is very helpful for comparing hashes.
365
+ #
366
+ # Usage examples:
367
+ # it { should be_matching(my_var) }
368
+ # it { should be_matching(my_var).with_options(ignore_additional: true) }
369
+ #
370
+ # Options: by default, color_enabled is controlled by Rspec, and quiet is set to true.
371
+ RSpec::Matchers.define :be_matching do |expected|
372
+ match do |actual|
373
+ options = { :color_enabled => RSpec::configuration.color_enabled?, :quiet => true }.merge(@options || {})
374
+ @difference = DiffMatcher::Difference.new(expected, actual, options)
375
+ @difference.matching?
376
+ end
377
+
378
+ chain :with_options do |options|
379
+ @options = options
380
+ end
381
+
382
+ failure_message_for_should do |actual|
383
+ "diff is:\n" + @difference.to_s
384
+ end
385
+
386
+ failure_message_for_should_not do |actual|
387
+ "diff is:\n" + @difference.to_s
388
+ end
389
+
390
+ description do
391
+ "match via DiffMatcher #{expected}" + (@options.blank? ? '' : " with options: #{@options}")
384
392
  end
385
393
  end
386
394
  ```
@@ -392,7 +400,7 @@ describe "hash matcher" do
392
400
  subject { { :a=>1, :b=>2, :c=>'3', :d=>4, :e=>"additional stuff" } }
393
401
  let(:expected) { { :a=>1, :b=>Fixnum, :c=>/[0-9]/, :d=>lambda { |x| (3..5).include?(x) } } }
394
402
 
395
- it { should be_matching(expected, :ignore_additional=>true) }
403
+ it { should be_matching(expected).with_options(:ignore_additional=>true) }
396
404
  it { should be_matching(expected) }
397
405
  end
398
406
  ```
@@ -431,5 +439,5 @@ Status
431
439
 
432
440
  Our company is using this gem to test our JSON API which has got above and beyond a stable v1.0.0 release.
433
441
 
434
- There's a [pull request](http://github.com/rspec/rspec-expectations/pull/79) to use this gem in a `be_hash_matching`
442
+ There's a [pull request](http://github.com/rspec/rspec-expectations/pull/79) to use this gem in a `be_hash_matching`
435
443
  [rspec matcher](https://www.relishapp.com/rspec/rspec-expectations).
@@ -7,9 +7,9 @@ Gem::Specification.new do |s|
7
7
  s.name = "diff_matcher"
8
8
  s.version = DiffMatcher::VERSION.dup
9
9
  s.platform = Gem::Platform::RUBY
10
- s.authors = ["Playup"]
11
- s.email = "chris@playup.com"
12
- s.homepage = "http://github.com/playup/diff_matcher"
10
+ s.authors = ["locochris"]
11
+ s.email = "chris@locomote.com.au"
12
+ s.homepage = "http://github.com/diff-matcher/diff_matcher"
13
13
 
14
14
  s.summary = %q{Generates a diff by matching against user-defined matchers written in ruby.}
15
15
  s.description = <<EOF
@@ -234,7 +234,7 @@ module DiffMatcher
234
234
  diff(expected, actual)
235
235
  else
236
236
  actual
237
- end if expected.is_a? actual.class
237
+ end if expected.is_a?(actual.class) || actual.is_a?(expected.class)
238
238
  end
239
239
 
240
240
  def compare(right, expected, default=nil)
@@ -1,3 +1,3 @@
1
1
  module DiffMatcher
2
- VERSION = "2.4.0"
2
+ VERSION = "2.4.1"
3
3
  end
@@ -133,7 +133,7 @@ describe "DiffMatcher::Matcher[expected].diff(actual, opts)" do
133
133
  2
134
134
 
135
135
  it_behaves_like "a diff matcher", expected, same, different,
136
- "\e[31m- \e[1m1\e[0m\e[33m+ \e[1m2\e[0m", {}
136
+ "\e[31m- \e[1m1\e[0m\e[33m+ \e[1m2\e[0m"
137
137
  end
138
138
  end
139
139
 
@@ -163,7 +163,7 @@ describe "DiffMatcher::difference(expected, actual, opts)" do
163
163
  2
164
164
 
165
165
  it_behaves_like "a diff matcher", expected, same, different,
166
- <<-EOF, {}
166
+ <<-EOF
167
167
  - 1+ 2
168
168
  Where, - 1 missing, + 1 additional
169
169
  EOF
@@ -176,7 +176,7 @@ describe "DiffMatcher::difference(expected, actual, opts)" do
176
176
  "b"
177
177
 
178
178
  it_behaves_like "a diff matcher", expected, same, different,
179
- <<-EOF, {}
179
+ <<-EOF
180
180
  - "a"+ "b"
181
181
  Where, - 1 missing, + 1 additional
182
182
  EOF
@@ -185,17 +185,29 @@ describe "DiffMatcher::difference(expected, actual, opts)" do
185
185
  different = 0
186
186
 
187
187
  it_behaves_like "a diff matcher", expected, same, different,
188
- <<-EOF, {}
188
+ <<-EOF
189
189
  - "a"+ 0
190
190
  Where, - 1 missing, + 1 additional
191
191
  EOF
192
+
193
+ context "expected class is a subclass of actual class" do
194
+ class SubString < String; end
195
+ same = SubString.new("a")
196
+ different = SubString.new("b")
197
+
198
+ it_behaves_like "a diff matcher", expected, same, different,
199
+ <<-EOF
200
+ - "a"+ "b"
201
+ Where, - 1 missing, + 1 additional
202
+ EOF
203
+ end
192
204
  end
193
205
 
194
206
  context "when actual is nil" do
195
207
  different = nil
196
208
 
197
209
  it_behaves_like "a diff matcher", expected, same, different,
198
- <<-EOF, {}
210
+ <<-EOF
199
211
  - "a"+ nil
200
212
  Where, - 1 missing, + 1 additional
201
213
  EOF
@@ -209,7 +221,7 @@ describe "DiffMatcher::difference(expected, actual, opts)" do
209
221
  false
210
222
 
211
223
  it_behaves_like "a diff matcher", expected, same, different,
212
- <<-EOF, {}
224
+ <<-EOF
213
225
  - nil+ false
214
226
  Where, - 1 missing, + 1 additional
215
227
  EOF
@@ -222,7 +234,7 @@ describe "DiffMatcher::difference(expected, actual, opts)" do
222
234
  [ 2 ]
223
235
 
224
236
  it_behaves_like "a diff matcher", expected, same, different,
225
- <<-EOF, {}
237
+ <<-EOF
226
238
  [
227
239
  - 1+ 2
228
240
  ]
@@ -335,7 +347,7 @@ describe "DiffMatcher::difference(expected, actual, opts)" do
335
347
  ArrayChild[ 2 ]
336
348
 
337
349
  it_behaves_like "a diff matcher", expected, same, different,
338
- <<-EOF, {}
350
+ <<-EOF
339
351
  [
340
352
  - 1+ 2
341
353
  ]
@@ -1,6 +1,7 @@
1
1
  RUBY_1_9 = (RUBY_VERSION =~ /^1\.9/)
2
- if RUBY_1_9
2
+ if RUBY_1_9 && !ENV['CI']
3
3
  require 'simplecov'
4
+ SimpleCov.add_filter 'gems'
4
5
  SimpleCov.start
5
6
  end
6
7
  require "diff_matcher"
metadata CHANGED
@@ -1,31 +1,24 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: diff_matcher
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 2.4.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.4.1
6
5
  platform: ruby
7
- authors:
8
- - Playup
6
+ authors:
7
+ - locochris
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
-
13
- date: 2012-08-05 00:00:00 Z
11
+ date: 2013-07-28 00:00:00.000000000 Z
14
12
  dependencies: []
15
-
16
13
  description: |
17
14
  DiffMatcher matches input data (eg. from a JSON API) against values,
18
15
  ranges, classes, regexes, procs, custom matchers and/or easily composed,
19
16
  nested combinations thereof to produce an easy to read diff string.
20
-
21
- email: chris@playup.com
17
+ email: chris@locomote.com.au
22
18
  executables: []
23
-
24
19
  extensions: []
25
-
26
20
  extra_rdoc_files: []
27
-
28
- files:
21
+ files:
29
22
  - .gitignore
30
23
  - .rspec
31
24
  - .travis.yml
@@ -44,35 +37,29 @@ files:
44
37
  - lib/diff_matcher/version.rb
45
38
  - spec/diff_matcher/difference_spec.rb
46
39
  - spec/spec_helper.rb
47
- homepage: http://github.com/playup/diff_matcher
40
+ homepage: http://github.com/diff-matcher/diff_matcher
48
41
  licenses: []
49
-
42
+ metadata: {}
50
43
  post_install_message:
51
44
  rdoc_options: []
52
-
53
- require_paths:
45
+ require_paths:
54
46
  - lib
55
- required_ruby_version: !ruby/object:Gem::Requirement
56
- none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- hash: -1395308355013142327
61
- segments:
62
- - 0
63
- version: "0"
64
- required_rubygems_version: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: "0"
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
70
57
  requirements: []
71
-
72
58
  rubyforge_project:
73
- rubygems_version: 1.8.21
59
+ rubygems_version: 2.0.3
74
60
  signing_key:
75
- specification_version: 3
61
+ specification_version: 4
76
62
  summary: Generates a diff by matching against user-defined matchers written in ruby.
77
- test_files: []
78
-
63
+ test_files:
64
+ - spec/diff_matcher/difference_spec.rb
65
+ - spec/spec_helper.rb