diff options
author | Austin Ziegler <austin@zieglers.ca> | 2013-04-11 10:57:14 -0700 |
---|---|---|
committer | Austin Ziegler <austin@zieglers.ca> | 2013-04-11 10:57:14 -0700 |
commit | 68e1a153d44a9e5a682144c2eb1a7800b5880480 (patch) | |
tree | 1eb87fcad1de6c7bd856b2daf869c9dc1d5f1e6c | |
parent | 498a97c9089ea377d85f03470ecef1c1a5c6330a (diff) | |
parent | c1373fd0c4e9e398d2f474376e99500ef882d856 (diff) | |
download | diff-lcs-68e1a153d44a9e5a682144c2eb1a7800b5880480.tar.gz |
Merge pull request #17 from JonRowe/guard_against_empty
Fix an issue caused by detecting the encoding when first data is empty
-rw-r--r-- | lib/diff/lcs/hunk.rb | 2 | ||||
-rw-r--r-- | spec/hunk_spec.rb | 65 |
2 files changed, 38 insertions, 29 deletions
diff --git a/lib/diff/lcs/hunk.rb b/lib/diff/lcs/hunk.rb index 6c5ea6a..05c3fb6 100644 --- a/lib/diff/lcs/hunk.rb +++ b/lib/diff/lcs/hunk.rb @@ -12,7 +12,7 @@ class Diff::LCS::Hunk # At first, a hunk will have just one Block in it @blocks = [ Diff::LCS::Block.new(piece) ] if String.method_defined?(:encoding) - @preferred_data_encoding = data_old[0].encoding + @preferred_data_encoding = data_old.fetch(0, data_new.fetch(0,'') ).encoding end @data_old = data_old @data_new = data_new diff --git a/spec/hunk_spec.rb b/spec/hunk_spec.rb index 0741b87..dc6f532 100644 --- a/spec/hunk_spec.rb +++ b/spec/hunk_spec.rb @@ -15,49 +15,58 @@ describe "Diff::LCS::Hunk" do let(:hunk) { Diff::LCS::Hunk.new(old_data, new_data, pieces[0], 3, 0) } it 'should be able to produce a unified diff from the two pieces' do - expected = -(<<-EOD.encode('UTF-16LE').chomp) -@@ -1,2 +1,2 @@ --Tu avec carté {count} itém has -+Tu avec carte {count} item has -EOD + expected = (<<-EOD.gsub(/^\s+/,'').encode('UTF-16LE').chomp) + @@ -1,2 +1,2 @@ + -Tu avec carté {count} itém has + +Tu avec carte {count} item has + EOD expect(hunk.diff(:unified).to_s == expected).to eql true end it 'should be able to produce a context diff from the two pieces' do - expected = -(<<-EOD.encode('UTF-16LE').chomp) -*************** -*** 1,2 **** -!Tu avec carté {count} itém has ---- 1,2 ---- -!Tu avec carte {count} item has -EOD + expected = (<<-EOD.gsub(/^\s+/,'').encode('UTF-16LE').chomp) + *************** + *** 1,2 **** + !Tu avec carté {count} itém has + --- 1,2 ---- + !Tu avec carte {count} item has + EOD expect(hunk.diff(:context).to_s == expected).to eql true end it 'should be able to produce an old diff from the two pieces' do - expected = -(<<-EOD.encode('UTF-16LE').chomp) -1,2c1,2 -< Tu avec carté {count} itém has ---- -> Tu avec carte {count} item has - -EOD + expected = (<<-EOD.gsub(/^ +/,'').encode('UTF-16LE').chomp) + 1,2c1,2 + < Tu avec carté {count} itém has + --- + > Tu avec carte {count} item has + + EOD expect(hunk.diff(:old).to_s == expected).to eql true end it 'should be able to produce a reverse ed diff from the two pieces' do - expected = -(<<-EOD.encode('UTF-16LE').chomp) -c1,2 -Tu avec carte {count} item has -. + expected = (<<-EOD.gsub(/^ +/,'').encode('UTF-16LE').chomp) + c1,2 + Tu avec carte {count} item has + . -EOD + EOD expect(hunk.diff(:reverse_ed).to_s == expected).to eql true end + + context 'with empty first data set' do + let(:old_data) { [] } + + it 'should be able to produce a unified diff' do + expected = (<<-EOD.gsub(/^\s+/,'').encode('UTF-16LE').chomp) + @@ -1 +1,2 @@ + +Tu avec carte {count} item has + EOD + expect(hunk.diff(:unified).to_s == expected).to eql true + end + end + end end |