]> source.dussan.org Git - redmine.git/commitdiff
Rescue any EncodingError exceptions (#25861).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 27 May 2017 08:40:39 +0000 (08:40 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 27 May 2017 08:40:39 +0000 (08:40 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@16572 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/imports_controller.rb
test/fixtures/files/invalid-Shift_JIS.csv [new file with mode: 0644]
test/functional/imports_controller_test.rb

index fb87c9bc806bc548850d0fb7bea0416c99f13af4..2ec918e6c5e0e1fa508b8f27ab81dd905f83bdda 100644 (file)
@@ -52,7 +52,7 @@ class ImportsController < ApplicationController
 
   rescue CSV::MalformedCSVError => e
     flash.now[:error] = l(:error_invalid_csv_file_or_settings)
-  rescue ArgumentError, Encoding::InvalidByteSequenceError => e
+  rescue ArgumentError, EncodingError => e
     flash.now[:error] = l(:error_invalid_file_encoding, :encoding => ERB::Util.h(@import.settings['encoding']))
   rescue SystemCallError => e
     flash.now[:error] = l(:error_can_not_read_import_file)
diff --git a/test/fixtures/files/invalid-Shift_JIS.csv b/test/fixtures/files/invalid-Shift_JIS.csv
new file mode 100644 (file)
index 0000000..b759171
--- /dev/null
@@ -0,0 +1 @@
\ No newline at end of file
index 3b271b0ce07269e96ad0999a6e138a4c84f8d503..28ce703f5a52860ca68a45bb03c23c06251ff527 100644 (file)
@@ -102,6 +102,17 @@ class ImportsControllerTest < Redmine::ControllerTest
     assert_select 'div#flash_error', /not a valid UTF-8 encoded file/
   end
 
+  def test_post_settings_with_invalid_encoding_should_display_error
+    import = generate_import('invalid-Shift_JIS.csv')
+
+    post :settings, :id => import.to_param,
+      :import_settings => {:separator => ";", :wrapper => '"', :encoding => "Shift_JIS"}
+    assert_response 200
+    import.reload
+    assert_nil import.total_items
+    assert_select 'div#flash_error', /not a valid Shift_JIS encoded file/
+  end
+
   def test_get_mapping_should_display_mapping_form
     import = generate_import('import_iso8859-1.csv')
     import.settings = {'separator' => ";", 'wrapper' => '"', 'encoding' => "ISO-8859-1"}