summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2017-05-27 08:40:39 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2017-05-27 08:40:39 +0000
commitccb9d4ada9bdf2c24754f0dcf6608d8a3f7e895b (patch)
tree4074ac9da706962ff3a66a047a4ea72048740a1c
parent86fa4e66c9971dd7f399bba18798792550402706 (diff)
downloadredmine-ccb9d4ada9bdf2c24754f0dcf6608d8a3f7e895b.tar.gz
redmine-ccb9d4ada9bdf2c24754f0dcf6608d8a3f7e895b.zip
Rescue any EncodingError exceptions (#25861).
git-svn-id: http://svn.redmine.org/redmine/trunk@16572 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/imports_controller.rb2
-rw-r--r--test/fixtures/files/invalid-Shift_JIS.csv1
-rw-r--r--test/functional/imports_controller_test.rb11
3 files changed, 13 insertions, 1 deletions
diff --git a/app/controllers/imports_controller.rb b/app/controllers/imports_controller.rb
index fb87c9bc8..2ec918e6c 100644
--- a/app/controllers/imports_controller.rb
+++ b/app/controllers/imports_controller.rb
@@ -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
index 000000000..b75917177
--- /dev/null
+++ b/test/fixtures/files/invalid-Shift_JIS.csv
@@ -0,0 +1 @@
+Ȁ \ No newline at end of file
diff --git a/test/functional/imports_controller_test.rb b/test/functional/imports_controller_test.rb
index 3b271b0ce..28ce703f5 100644
--- a/test/functional/imports_controller_test.rb
+++ b/test/functional/imports_controller_test.rb
@@ -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"}