diff --git a/lib/itamae/runner.rb b/lib/itamae/runner.rb index b7f36e10..5393bfc7 100644 --- a/lib/itamae/runner.rb +++ b/lib/itamae/runner.rb @@ -5,6 +5,10 @@ module Itamae class Runner class << self def run(recipe_files, backend_type, options) + unless recipe_files.is_a? Array + raise ArgumentError, 'recipe_files must be an Array' + end + Itamae.logger.info "Starting Itamae... #{options[:dry_run] ? '(dry-run)' : ''}" backend = Backend.create(backend_type, options) diff --git a/spec/unit/lib/itamae/runner_spec.rb b/spec/unit/lib/itamae/runner_spec.rb index 99d51a7b..cdc62eb4 100644 --- a/spec/unit/lib/itamae/runner_spec.rb +++ b/spec/unit/lib/itamae/runner_spec.rb @@ -27,6 +27,14 @@ module Itamae end described_class.run(recipes, :local, {}) end + + it "raises error for invalid recipes argument type" do + [nil, "recipe.rb"].each do |recipe| + expect do + described_class.run(recipe, :local, {}) + end.to raise_error(ArgumentError, 'recipe_files must be an Array') + end + end end describe "#initialize" do