spec/cukedep/cli/cmd-line_spec.rb in cukedep-0.1.11 vs spec/cukedep/cli/cmd-line_spec.rb in cukedep-0.2.00

- old
+ new

@@ -1,88 +1,88 @@ -# File: cmd-line_spec.rb - -require 'stringio' -require 'English' -require_relative '../../spec_helper' - -# Load the class under testing -require_relative '../../../lib/cukedep/cli/cmd-line' - -module Cukedep # Open module to get rid of long qualified names -describe CLI::CmdLine do - context 'Creation & initialization:' do - subject { CLI::CmdLine.new } - - it 'should be created without argument' do - expect { CLI::CmdLine.new }.not_to raise_error - end - end # context - - context 'Provided services:' do - def capture_output() - @output = $DEFAULT_OUTPUT - ostream = StringIO.new('rw') - $DEFAULT_OUTPUT = ostream - end - - def release_output() - $DEFAULT_OUTPUT = @output - end - - - it 'should accept an empty command-line' do - expect { subject.parse!([]) }.not_to raise_error - expect(subject.options).to be_empty - end - - it 'should accept the dry-run option' do - expect { subject.parse!(['--dry-run']) }.not_to raise_error - expect(subject.options).to eq(dryrun: true) - end - - it 'should accept the setup option' do - expect { subject.parse!(['--setup']) }.not_to raise_error - expect(subject.options).to eq(setup: true) - end - - it 'should validate the project option argument' do - # Case 1: missing project dir argument - cmd_opts = ['--project'] - err_type = StandardError - err_msg = <<-MSG_END -No argument provided with command line option: --project -To see the command-line syntax, do: -cukedep --help -MSG_END - expect { subject.parse!(cmd_opts) }.to raise_error(err_type) - - # Case 2: non existing project dir - cmd_opts = ['--project', 'nowhere'] - err_msg = "Cannot find the directory 'nowhere'." - expect { subject.parse!(cmd_opts) }.to raise_error(err_type, err_msg) - - # Case 3: project dir exists - # cmd_opts = ['--project', '../../../sample'] - # expect { subject.parse!(cmd_opts) }.not_to raise_error - # expect(subject.options).to eq({ :project => '../../../sample' }) - end - - it 'should handle the version option' do - capture_output - cmd_opts = ['--version'] - expect { subject.parse!(cmd_opts) }.to raise_error(SystemExit) - expect($DEFAULT_OUTPUT.string).to eq(Cukedep::Version + "\n") - release_output - end - - it 'should handle the help option' do - capture_output - cmd_opts = ['--help'] - expect { subject.parse!(cmd_opts) }.to raise_error(SystemExit) - expect($DEFAULT_OUTPUT.string).to eq(subject.parser.to_s) - release_output - end - end # context -end # describe -end # module - -# End of file +# File: cmd-line_spec.rb + +require 'stringio' +require 'English' +require_relative '../../spec_helper' + +# Load the class under testing +require_relative '../../../lib/cukedep/cli/cmd-line' + +module Cukedep # Open module to get rid of long qualified names +describe CLI::CmdLine do + context 'Creation & initialization:' do + subject { CLI::CmdLine.new } + + it 'should be created without argument' do + expect { CLI::CmdLine.new }.not_to raise_error + end + end # context + + context 'Provided services:' do + def capture_output + @output = $DEFAULT_OUTPUT + ostream = StringIO.new('rw') + $DEFAULT_OUTPUT = ostream + end + + def release_output + $DEFAULT_OUTPUT = @output + end + + + it 'should accept an empty command-line' do + expect { subject.parse!([]) }.not_to raise_error + expect(subject.options).to be_empty + end + + it 'should accept the dry-run option' do + expect { subject.parse!(['--dry-run']) }.not_to raise_error + expect(subject.options).to eq(dryrun: true) + end + + it 'should accept the setup option' do + expect { subject.parse!(['--setup']) }.not_to raise_error + expect(subject.options).to eq(setup: true) + end + + it 'should validate the project option argument' do + # Case 1: missing project dir argument + cmd_opts = ['--project'] + err_type = StandardError + err_msg = <<-MSG_END +No argument provided with command line option: --project +To see the command-line syntax, do: +cukedep --help +MSG_END + expect { subject.parse!(cmd_opts) }.to raise_error(err_type) + + # Case 2: non existing project dir + cmd_opts = ['--project', 'nowhere'] + err_msg = "Cannot find the directory 'nowhere'." + expect { subject.parse!(cmd_opts) }.to raise_error(err_type, err_msg) + + # Case 3: project dir exists + # cmd_opts = ['--project', '../../../sample'] + # expect { subject.parse!(cmd_opts) }.not_to raise_error + # expect(subject.options).to eq({ :project => '../../../sample' }) + end + + it 'should handle the version option' do + capture_output + cmd_opts = ['--version'] + expect { subject.parse!(cmd_opts) }.to raise_error(SystemExit) + expect($DEFAULT_OUTPUT.string).to eq(Cukedep::Version + "\n") + release_output + end + + it 'should handle the help option' do + capture_output + cmd_opts = ['--help'] + expect { subject.parse!(cmd_opts) }.to raise_error(SystemExit) + expect($DEFAULT_OUTPUT.string).to eq(subject.parser.to_s) + release_output + end + end # context +end # describe +end # module + +# End of file