rspec-expectations 2.14.3 → 2.14.4

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.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- Mzg4MjBiNTY0NTMxM2E3ODVlNjJjYjgzYmJjMThhMTk4N2ZmZmIyOA==
5
- data.tar.gz: !binary |-
6
- NGRiNWI1ODQ4MTY2YTZlYTJlZGM3ZDQ3YzQwZjExMTQ2YWE5MTc5OA==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- ZTEyOTg0ZTBjMDczNGJlZTc1ZGI3YThjODY4MWViMjMzYzI2ZTk1OWQ4NjVi
10
- NjgyMmZlZjNiODRjOTU2ODdkYTM0YzIzMjQwMjAxZTI4YzY5Y2MzYWJlZmVl
11
- MDgwZjdjZjQ5Nzc0MDY4MzVlMTQwMTczMGE4Y2NhNzJlZDAzMjE=
12
- data.tar.gz: !binary |-
13
- ZGZjNzZkNjQwMDU4NWI5ZDRmYzM0NjM4M2MwMTMzNmJhODgyOWE0NGU4NzQ0
14
- MWI2Yjc2YzUxYjNmMGZmMGQ4MzQ4ODFiYjU2NDViOGJmNGVmNjFlNGU4M2Iz
15
- Njc3N2U0ZDUwNGJiMjVhZmRmZDViOTRmNjVhMjU1MDRjYjk3NTY=
2
+ SHA1:
3
+ metadata.gz: 2fe9c0e9206aaf6e58ecb9d8ef9e906668443bad
4
+ data.tar.gz: b87df2d0361493a79a7f6b481b55e13babff42e8
5
+ SHA512:
6
+ metadata.gz: e72fd27b6f8595cccd408ce04cae06c4ec222f424015c0e50a942ab03ee40b716a3d159c4b88d73715769ab45156056d9a51c0f223335c8ddc1ac9cc1fde01bf
7
+ data.tar.gz: cf203e11140a60a320babfa6be93bd5943b1645a6ccd4b5dc01edaefd5fbe0ed7e770ba05f2deb9f2b096c76213db103cf8ea8042ef8f6e9052ac24d6e45ca04
@@ -1,3 +1,12 @@
1
+ ### 2.14.4 / 2013-11-06
2
+ [full changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.3...v2.14.4)
3
+
4
+ Bug fixes
5
+
6
+ * Make the `match` matcher produce a diff output. (Jon Rowe, Ben Moss)
7
+ * Choose encoding for diff's more intelligently, and when all else fails fall
8
+ back to default internal encoding with replacing characters. (Jon Rowe)
9
+
1
10
  ### 2.14.3 / 2013-09-22
2
11
  [full changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.2...v2.14.3)
3
12
 
@@ -43,7 +43,7 @@ Feature: diffing
43
43
  actual
44
44
  string
45
45
  ACTUAL
46
- actual.should =~ expected
46
+ expect(actual).to match expected
47
47
  end
48
48
  end
49
49
  """
@@ -5,11 +5,13 @@ require 'pp'
5
5
  module RSpec
6
6
  module Expectations
7
7
  class Differ
8
+
8
9
  # This is snagged from diff/lcs/ldiff.rb (which is a commandline tool)
9
10
  def diff_as_string(input_data_new, input_data_old)
10
- output = matching_encoding("", input_data_old)
11
- data_old = input_data_old.split(matching_encoding("\n", input_data_old)).map! { |e| e.chomp }
12
- data_new = input_data_new.split(matching_encoding("\n", input_data_new)).map! { |e| e.chomp }
11
+ encoding = pick_encoding input_data_new, input_data_old
12
+ output = matching_encoding("", encoding)
13
+ data_old = input_data_old.split(matching_encoding("\n", encoding)).map! { |e| e.chomp }
14
+ data_new = input_data_new.split(matching_encoding("\n", encoding)).map! { |e| e.chomp }
13
15
  diffs = Diff::LCS.diff(data_old, data_new)
14
16
  return output if diffs.empty?
15
17
  oldhunk = hunk = nil
@@ -33,16 +35,16 @@ module RSpec
33
35
  hunk.unshift(oldhunk)
34
36
  end
35
37
  else
36
- output << matching_encoding(oldhunk.diff(format).to_s, output)
38
+ output << matching_encoding(oldhunk.diff(format).to_s, encoding)
37
39
  end
38
40
  ensure
39
41
  oldhunk = hunk
40
- output << matching_encoding("\n", output)
42
+ output << matching_encoding("\n", encoding)
41
43
  end
42
44
  end
43
45
  #Handle the last remaining hunk
44
- output << matching_encoding(oldhunk.diff(format).to_s,output)
45
- output << matching_encoding("\n",output)
46
+ output << matching_encoding(oldhunk.diff(format).to_s, encoding)
47
+ output << matching_encoding("\n", encoding)
46
48
  color_diff output
47
49
  rescue Encoding::CompatibilityError
48
50
  if input_data_new.encoding != input_data_old.encoding
@@ -115,7 +117,8 @@ module RSpec
115
117
  #
116
118
  # note, PP is used to ensure the ordering of the internal values of key/value e.g.
117
119
  # <# a: b: c:> not <# c: a: b:>
118
- matching_encoding("#{pp_key} => #{pp_value}", key.to_s)
120
+ encoding = pick_encoding pp_key, pp_value
121
+ matching_encoding("#{pp_key} => #{pp_value}", encoding)
119
122
  end.join(",\n")
120
123
  when String
121
124
  object =~ /\n/ ? object : object.inspect
@@ -124,12 +127,23 @@ module RSpec
124
127
  end
125
128
  end
126
129
 
130
+ private
131
+
127
132
  if String.method_defined?(:encoding)
128
- def matching_encoding(string, source)
129
- string.encode(source.encoding)
133
+ def pick_encoding(source_a, source_b)
134
+ Encoding.compatible?(source_a, source_b) || Encoding.default_external
135
+ end
136
+
137
+ def matching_encoding(string, encoding)
138
+ string.encode encoding
139
+ rescue Encoding::UndefinedConversionError
140
+ string.encode(encoding, :undef => :replace)
130
141
  end
131
142
  else
132
- def matching_encoding(string, source)
143
+ def pick_encoding(source_a, source_b)
144
+ end
145
+
146
+ def matching_encoding(string, encoding)
133
147
  string
134
148
  end
135
149
  end
@@ -2,7 +2,7 @@ module RSpec
2
2
  module Expectations
3
3
  # @private
4
4
  module Version
5
- STRING = '2.14.3'
5
+ STRING = '2.14.4'
6
6
  end
7
7
  end
8
8
  end
@@ -521,9 +521,6 @@ module RSpec
521
521
  # expect { do_something_risky }.to raise_error(PoorRiskDecisionError, /oo ri/)
522
522
  #
523
523
  # expect { do_something_risky }.not_to raise_error
524
- # expect { do_something_risky }.not_to raise_error(PoorRiskDecisionError)
525
- # expect { do_something_risky }.not_to raise_error(PoorRiskDecisionError, "that was too risky")
526
- # expect { do_something_risky }.not_to raise_error(PoorRiskDecisionError, /oo ri/)
527
524
  def raise_error(error=Exception, message=nil, &block)
528
525
  BuiltIn::RaiseError.new(error, message, &block)
529
526
  end
@@ -6,6 +6,11 @@ module RSpec
6
6
  def match(expected, actual)
7
7
  actual.match expected
8
8
  end
9
+
10
+ def diffable?
11
+ true
12
+ end
13
+
9
14
  end
10
15
  end
11
16
  end
@@ -54,7 +54,12 @@ EOD
54
54
  @actual="Tu avec carte {count} item has".encode('UTF-16LE')
55
55
  expect(subject).to eql 'Could not produce a diff because of the encoding of the string (UTF-16LE)'
56
56
  end
57
- it 'ouputs a message when encountering differently encoded strings' do
57
+ it 'handles differently encoded strings that are compatible' do
58
+ @expected = "강인철".encode('UTF-8')
59
+ @actual = "abc".encode('us-ascii')
60
+ expect(subject).to eql "\n@@ -1,2 +1,2 @@\n-abc\n+강인철\n"
61
+ end
62
+ it 'outputs a message when encountering differently encoded strings' do
58
63
  @expected="Tu avec carté {count} itém has".encode('UTF-16LE')
59
64
  @actual="Tu avec carte {count} item has"
60
65
  expect(subject).to eql 'Could not produce a diff because the encoding of the actual string (UTF-8) differs from the encoding of the expected string (UTF-16LE)'
@@ -137,7 +142,7 @@ EOD
137
142
  expect(diff).to eq expected_diff
138
143
  end
139
144
 
140
- it 'outputs unified diff messaoge of two hashes with differing encoding' do
145
+ it 'outputs unified diff message of two hashes with differing encoding' do
141
146
  expected_diff = %Q{
142
147
  @@ -1,2 +1,2 @@
143
148
  -"a" => "a"
@@ -148,6 +153,17 @@ EOD
148
153
  expect(diff).to eq expected_diff
149
154
  end
150
155
 
156
+ it 'outputs unified diff message of two hashes with encoding different to key encoding' do
157
+ expected_diff = %Q{
158
+ @@ -1,2 +1,2 @@
159
+ -:a => "a"
160
+ #{ (RUBY_VERSION.to_f > 1.8) ? %Q{+\"한글\" => \"한글2\"} : '+"\355\225\234\352\270\200" => "\355\225\234\352\270\2002"' }
161
+ }
162
+
163
+ diff = differ.diff_as_object({ "한글" => "한글2"}, { :a => "a"})
164
+ expect(diff).to eq expected_diff
165
+ end
166
+
151
167
  it "outputs unified diff message of two hashes with object keys" do
152
168
  expected_diff = %Q{
153
169
  @@ -1,2 +1,2 @@
@@ -211,4 +227,3 @@ EOD
211
227
  end
212
228
  end
213
229
  end
214
-
@@ -30,6 +30,19 @@ describe "expect(...).to match(expected)" do
30
30
  matcher.matches?("string")
31
31
  expect(matcher.failure_message_for_should).to eq "expected \"string\" to match /rings/"
32
32
  end
33
+
34
+ it "provides a diff on failure" do
35
+ allow(RSpec::Matchers.configuration).to receive(:color?).and_return(false)
36
+
37
+ failure_message_that_includes_diff = %r%
38
+ \s*Diff:
39
+ \s*@@ -1,2 \+1,2 @@
40
+ \s*-/bar/
41
+ \s*\+"foo"%
42
+
43
+ expect { expect("foo").to match(/bar/) }.to fail_with(failure_message_that_includes_diff)
44
+ end
45
+
33
46
  end
34
47
 
35
48
  describe "expect(...).not_to match(expected)" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-expectations
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.14.3
4
+ version: 2.14.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Baker
@@ -9,13 +9,13 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-23 00:00:00.000000000 Z
12
+ date: 2013-11-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: diff-lcs
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ! '>='
18
+ - - '>='
19
19
  - !ruby/object:Gem::Version
20
20
  version: 1.1.3
21
21
  - - <
@@ -25,7 +25,7 @@ dependencies:
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
- - - ! '>='
28
+ - - '>='
29
29
  - !ruby/object:Gem::Version
30
30
  version: 1.1.3
31
31
  - - <
@@ -222,20 +222,20 @@ require_paths:
222
222
  - lib
223
223
  required_ruby_version: !ruby/object:Gem::Requirement
224
224
  requirements:
225
- - - ! '>='
225
+ - - '>='
226
226
  - !ruby/object:Gem::Version
227
227
  version: '0'
228
228
  required_rubygems_version: !ruby/object:Gem::Requirement
229
229
  requirements:
230
- - - ! '>='
230
+ - - '>='
231
231
  - !ruby/object:Gem::Version
232
232
  version: '0'
233
233
  requirements: []
234
234
  rubyforge_project: rspec
235
- rubygems_version: 2.0.7
235
+ rubygems_version: 2.0.3
236
236
  signing_key:
237
237
  specification_version: 4
238
- summary: rspec-expectations-2.14.3
238
+ summary: rspec-expectations-2.14.4
239
239
  test_files:
240
240
  - features/README.md
241
241
  - features/Upgrade.md