diff --git a/features/cli/usage.feature b/features/cli/usage.feature index 4c8fea5..0ae2b34 100644 --- a/features/cli/usage.feature +++ b/features/cli/usage.feature @@ -5,5 +5,5 @@ Feature: CLI usage Then the exit status must be 64 And the output must contain exactly: """ - Usage: producer host recipe_file + Usage: producer recipe_file """ diff --git a/features/steps/recipe_steps.rb b/features/steps/recipe_steps.rb index 5ade95c..016d314 100644 --- a/features/steps/recipe_steps.rb +++ b/features/steps/recipe_steps.rb @@ -3,5 +3,5 @@ Given(/^a recipe with:$/) do |recipe_body| end When(/^I execute the recipe$/) do - run_simple('producer localhost recipe.rb', false) + run_simple('producer recipe.rb', false) end diff --git a/lib/producer/core/cli.rb b/lib/producer/core/cli.rb index 5af31e2..a3e9f6c 100644 --- a/lib/producer/core/cli.rb +++ b/lib/producer/core/cli.rb @@ -3,7 +3,7 @@ module Producer class CLI attr_reader :arguments - USAGE = "Usage: #{File.basename $0} host recipe_file" + USAGE = "Usage: #{File.basename $0} recipe_file" def initialize(arguments, stdout = $stdout) @stdout = stdout @@ -16,11 +16,11 @@ module Producer end def check_arguments! - print_usage_and_exit(64) unless @arguments.length == 2 + print_usage_and_exit(64) unless @arguments.length == 1 end def evaluate_recipe_file - recipe = Recipe.from_file(@arguments[1]) + recipe = Recipe.from_file(@arguments.first) env = Env.new(recipe) begin recipe.evaluate env diff --git a/spec/producer/core/cli_spec.rb b/spec/producer/core/cli_spec.rb index bebc0c1..46a3505 100644 --- a/spec/producer/core/cli_spec.rb +++ b/spec/producer/core/cli_spec.rb @@ -4,8 +4,9 @@ module Producer::Core describe CLI do include FixturesHelpers - let(:arguments) { ['host', fixture_path_for('recipes/empty.rb')] } - subject(:cli) { CLI.new(arguments) } + let(:recipe_file) { fixture_path_for('recipes/empty.rb') } + let(:arguments) { [recipe_file] } + subject(:cli) { CLI.new(arguments) } describe '#initialize' do it 'assigns the arguments' do @@ -26,8 +27,14 @@ module Producer::Core end describe '#check_arguments!' do - context 'when an argument is missing' do - let(:arguments) { %w{host} } + context 'when recipe argument is provided' do + it 'does not raise any error' do + expect { cli.check_arguments! }.to_not raise_error + end + end + + context 'when recipe argument is missing' do + let(:arguments) { [] } let(:stdout) { StringIO.new } subject(:cli) { CLI.new(arguments, stdout) } @@ -50,7 +57,7 @@ module Producer::Core describe '#evaluate_recipe_file' do it 'builds a recipe' do expect(Recipe) - .to receive(:from_file).with(arguments[1]).and_call_original + .to receive(:from_file).with(recipe_file).and_call_original cli.evaluate_recipe_file end @@ -71,9 +78,9 @@ module Producer::Core end context 'error during recipe evaluation' do - let(:arguments) { ['host', fixture_path_for('recipes/invalid.rb')] } - let(:stdout) { StringIO.new } - subject(:cli) { CLI.new(arguments, stdout) } + let(:recipe_file) { fixture_path_for('recipes/invalid.rb') } + let(:stdout) { StringIO.new } + subject(:cli) { CLI.new(arguments, stdout) } it 'exits with a return status of 70' do expect { cli.evaluate_recipe_file } @@ -89,7 +96,7 @@ module Producer::Core end expect(stdout.string).to match(/ \A - #{arguments[1]}:4: + #{recipe_file}:4: .+ invalid\srecipe\skeyword\s`invalid_keyword' /x)