From 6b640ac5c0acda229aefb4f08ab63d40c2c88e19 Mon Sep 17 00:00:00 2001 From: Daniel Pepper Date: Sat, 9 Mar 2024 07:31:29 -0800 Subject: [PATCH] frozen options bug (#273) --- lib/smarter_csv/options_processing.rb | 7 ++++--- spec/smarter_csv/options_processing_spec.rb | 6 ++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/smarter_csv/options_processing.rb b/lib/smarter_csv/options_processing.rb index 6d14302f..926aa606 100644 --- a/lib/smarter_csv/options_processing.rb +++ b/lib/smarter_csv/options_processing.rb @@ -42,11 +42,12 @@ class << self def process_options(given_options = {}) puts "User provided options:\n#{pp(given_options)}\n" if given_options[:verbose] + @options = DEFAULT_OPTIONS.dup.merge!(given_options) + # fix invalid input - given_options[:invalid_byte_sequence] = '' if given_options[:invalid_byte_sequence].nil? + @options[:invalid_byte_sequence] ||= '' - @options = DEFAULT_OPTIONS.dup.merge!(given_options) - puts "Computed options:\n#{pp(@options)}\n" if given_options[:verbose] + puts "Computed options:\n#{pp(@options)}\n" if @options[:verbose] validate_options!(@options) @options diff --git a/spec/smarter_csv/options_processing_spec.rb b/spec/smarter_csv/options_processing_spec.rb index df738bf0..724af0c2 100644 --- a/spec/smarter_csv/options_processing_spec.rb +++ b/spec/smarter_csv/options_processing_spec.rb @@ -26,6 +26,12 @@ generated_options = SmarterCSV.process_options(invalid_byte_sequence: nil) expect(generated_options[:invalid_byte_sequence]).to eq '' end + + it 'works with frozen options hash' do + options = {chunk_size: 1}.freeze + generated_options = SmarterCSV.process_options(options) + expect(generated_options[:chunk_size]).to eq 1 + end end describe '#validate_options!' do