Skip to content

Commit

Permalink
Adapting string handling to make the test suite pass with Ruby 1.9.
Browse files Browse the repository at this point in the history
  • Loading branch information
janfri committed Apr 7, 2011
1 parent 80042e8 commit 47c010b
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 4 deletions.
6 changes: 6 additions & 0 deletions lib/mini_exiftool.rb
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,9 @@ def save
opt_params << (arr_val.detect {|x| x.kind_of?(Numeric)} ? '-n ' : '')
opt_params << (@convert_encoding ? '-L ' : '')
cmd = %Q(#@@cmd -q -P -overwrite_original #{opt_params} #{tag_params} #{temp_filename})
if convert_encoding && cmd.respond_to?(:encode)
cmd.encode('ISO-8859-1')
end
result = run(cmd)
unless result
all_ok = false
Expand Down Expand Up @@ -278,6 +281,9 @@ def run cmd
$stderr.puts cmd
end
@output = `#{cmd} 2>#{@@error_file.path}`
if convert_encoding && @output.respond_to?(:force_encoding)
@output.force_encoding('ISO-8859-1')
end
@status = $?
unless @status.exitstatus == 0
@error_text = File.readlines(@@error_file.path).join
Expand Down
6 changes: 5 additions & 1 deletion test/test_read.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,11 @@ def test_list_tags
def test_encoding_conversion
@mini_exiftool_converted = MiniExiftool.new @filename_test, :convert_encoding => true
assert_equal 'Abenddämmerung', @mini_exiftool.title
assert_equal "Abendd\344mmerung", @mini_exiftool_converted.title
converted = "Abendd\344mmerung"
if converted.respond_to?(:force_encoding)
converted.force_encoding('ISO-8859-1')
end
assert_equal converted, @mini_exiftool_converted.title
end

end
14 changes: 11 additions & 3 deletions test/test_save.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,24 @@ def test_no_changing_of_file_when_error
end

def test_encoding_conversion
special_string = 'ÄÖÜ'
special_string = 'äöü'
if special_string.respond_to?(:encode)
special_string_latin1 = special_string.encode('ISO-8859-1')
else
special_string_latin1 = "\xE4\xF6\xFC"
end
@mini_exiftool.title = special_string
assert @mini_exiftool.save
assert_equal false, @mini_exiftool.convert_encoding
assert_equal special_string, @mini_exiftool.title
@mini_exiftool.convert_encoding = true
@mini_exiftool.title = special_string
@mini_exiftool.title = special_string_latin1
assert @mini_exiftool.save
assert_equal true, @mini_exiftool.convert_encoding
assert_equal special_string, @mini_exiftool.title
if special_string_latin1.respond_to?(:encode)
special_string_latin1.encode!('ISO-8859-1')
end
assert_equal special_string_latin1, @mini_exiftool.title
end

end

0 comments on commit 47c010b

Please sign in to comment.