From 61c262a9f1521f335e8acc6f03ae711204188e73 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Thu, 9 Oct 2014 19:11:16 +0000 Subject: [PATCH] Fail when `file_write' misses some arguments --- lib/producer/core/actions/file_writer.rb | 4 ++++ lib/producer/core/errors.rb | 1 + spec/producer/core/actions/file_writer_spec.rb | 8 ++++++++ 3 files changed, 13 insertions(+) diff --git a/lib/producer/core/actions/file_writer.rb b/lib/producer/core/actions/file_writer.rb index 82fbc3b..245d008 100644 --- a/lib/producer/core/actions/file_writer.rb +++ b/lib/producer/core/actions/file_writer.rb @@ -3,6 +3,10 @@ module Producer module Actions class FileWriter < Action def setup + if arguments.compact.size != 2 + fail ArgumentError, '`%s\' action requires 2 arguments' % name + end + @path, @content = arguments @options[:permissions] = @options.delete :mode if options.key? :mode @options[:owner] = @options.delete :user if options.key? :user diff --git a/lib/producer/core/errors.rb b/lib/producer/core/errors.rb index 329bc52..e97e867 100644 --- a/lib/producer/core/errors.rb +++ b/lib/producer/core/errors.rb @@ -2,6 +2,7 @@ module Producer module Core Error = Class.new(StandardError) RuntimeError = Class.new(RuntimeError) + ArgumentError = Class.new(Error) ConditionNotMetError = Class.new(Error) RemoteCommandExecutionError = Class.new(RuntimeError) RegistryKeyError = Class.new(RuntimeError) diff --git a/spec/producer/core/actions/file_writer_spec.rb b/spec/producer/core/actions/file_writer_spec.rb index d1eaa11..3b2ed0a 100644 --- a/spec/producer/core/actions/file_writer_spec.rb +++ b/spec/producer/core/actions/file_writer_spec.rb @@ -20,6 +20,14 @@ module Producer::Core it 'translates user option as owner' do expect(writer.options[:owner]).to eq 'root' end + + context 'when content is missing' do + let(:content) { nil } + + it 'raises ArgumentError' do + expect { writer }.to raise_error ArgumentError + end + end end describe '#apply' do