Defect #34326
closed
CSV import raises an exception if CSV header has empty columns
Added by Go MAEDA about 4 years ago.
Updated about 4 years ago.
Description
To reproduce the error, attempt to import issues from the attached csv file (issues.csv). In the CSV file, the second column of the header is blank.
You will see an error page after clicking the "Next" button on the import options page.
Started GET "/imports/ad8c66039d97b44886137856ade5f856/mapping" for 127.0.0.1 at 2020-11-27 14:51:09 +0900
Processing by ImportsController#mapping as HTML
Parameters: {"id"=>"ad8c66039d97b44886137856ade5f856"}
.
.
.
NoMethodError (undefined method `downcase' for nil:NilClass):
app/controllers/imports_controller.rb:177:in `map'
app/controllers/imports_controller.rb:177:in `auto_map_fields'
app/controllers/imports_controller.rb:70:in `mapping'
lib/redmine/sudo_mode.rb:61:in `sudo_mode'
Files
- Related to Feature #22913: Auto-select fields mapping in Importing added
I created a patch. No exception is raised if there are blank columns in the CSV header.
diff --git a/app/controllers/imports_controller.rb b/app/controllers/imports_controller.rb
index 9431ca098..a5248dc1e 100644
--- a/app/controllers/imports_controller.rb
+++ b/app/controllers/imports_controller.rb
@@ -173,7 +173,7 @@ class ImportsController < ApplicationController
return if @import.settings['encoding'].blank?
mappings = @import.settings['mapping'] ||= {}
- headers = @import.headers.map(&:downcase)
+ headers = @import.headers.map{|header| header.to_s.downcase}
# Core fields
import_type::AUTO_MAPPABLE_FIELDS.each do |field_nm, label_nm|
Yuichi HARADA wrote:
I created a patch. No exception is raised if there are blank columns in the CSV header.
[...]
Thank you for the patch. I think the test can be simplified by putting the blank column at the end.
Go MAEDA wrote:
Yuichi HARADA wrote:
I created a patch. No exception is raised if there are blank columns in the CSV header.
[...]
Thank you for the patch. I think the test can be simplified by putting the blank column at the end.
Thank you for your point. I think it's good because you can detect test failures without changing the test.
- Target version set to 4.2.0
Setting the target version to 4.2.0.
- Subject changed from CSV import raises an exception if CSV header has blank columns to CSV import raises an exception if CSV header has empty columns
- Assignee set to Go MAEDA
- Target version deleted (
4.2.0)
- Resolution set to Fixed
Committed the fix as a part of #22913. Thank you.
- Status changed from New to Closed
Also available in: Atom
PDF