summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Ziegler <austin@zieglers.ca>2013-04-11 10:57:14 -0700
committerAustin Ziegler <austin@zieglers.ca>2013-04-11 10:57:14 -0700
commit68e1a153d44a9e5a682144c2eb1a7800b5880480 (patch)
tree1eb87fcad1de6c7bd856b2daf869c9dc1d5f1e6c
parent498a97c9089ea377d85f03470ecef1c1a5c6330a (diff)
parentc1373fd0c4e9e398d2f474376e99500ef882d856 (diff)
downloaddiff-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.rb2
-rw-r--r--spec/hunk_spec.rb65
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