features/steps/cli.rb in newgem-1.0.3 vs features/steps/cli.rb in newgem-1.0.4

- old
+ new

@@ -1,41 +1,24 @@ -Given %r{^a safe folder} do - FileUtils.rm_rf @tmp_root = File.dirname(__FILE__) + "/../../tmp" - FileUtils.mkdir_p @tmp_root - @newgem_lib_path = File.expand_path(File.dirname(__FILE__) + '/../../lib') -end - -Given /^this project is active project folder/ do +Given %r{^an existing newgem scaffold \[called '(.*)'\]} do |project_name| Given "a safe folder" - @active_project_folder = File.expand_path(File.dirname(__FILE__) + "/../..") -end - -Given /^env variable \$([\w_]+) set to '(.*)'/ do |env_var, value| - ENV[env_var] = value -end - -def force_local_newgem_priority(project_name = @project_name) - rakefile = File.read(File.join(project_name, 'Rakefile')) - File.open(File.join(project_name, 'Rakefile'), "w+") do |f| - f << "$:.unshift('#{@newgem_lib_path}')\n" - f << rakefile + newgem = File.expand_path(File.dirname(__FILE__) + "/../../bin/newgem") + setup_active_project_folder project_name + FileUtils.chdir @tmp_root do + @stdout = "newgem.out" + system "ruby #{newgem} #{project_name} > #{@stdout}" + force_local_lib_override end end -def setup_active_project_folder project_name - @active_project_folder = File.join(@tmp_root, project_name) - @project_name = project_name -end - -Given %r{^an existing newgem scaffold \[called '(.*)'\]} do |project_name| +Given %r{^an existing newgem scaffold using options '(.*)' \[called '(.*)'\]} do |arguments, project_name| Given "a safe folder" newgem = File.expand_path(File.dirname(__FILE__) + "/../../bin/newgem") setup_active_project_folder project_name FileUtils.chdir @tmp_root do @stdout = "newgem.out" - system "ruby #{newgem} #{project_name} > #{@stdout}" - force_local_newgem_priority + system "ruby #{newgem} #{arguments} #{project_name} > #{@stdout}" + force_local_lib_override end end Given /^project website configuration for safe folder on local machine$/ do @remote_folder = File.expand_path(File.join(@tmp_root, 'website')) @@ -47,156 +30,43 @@ config_path = File.join('config', 'website.yml') File.open(config_path, "w") { |io| io << config_yml } end end -Given /^'(.*)' folder is deleted/ do |folder| - FileUtils.chdir @active_project_folder do - FileUtils.rm_rf folder - end -end - When %r{^newgem is executed for project '(.*)' with no options$} do |project_name| newgem = File.expand_path(File.dirname(__FILE__) + "/../../bin/newgem") setup_active_project_folder project_name FileUtils.chdir @tmp_root do @stdout = "newgem.out" system "ruby #{newgem} #{project_name} > #{@stdout}" - force_local_newgem_priority + force_local_lib_override end end When %r{^newgem is executed for project '(.*)' with options '(.*)'$} do |project_name, arguments| newgem = File.expand_path(File.dirname(__FILE__) + "/../../bin/newgem") setup_active_project_folder project_name FileUtils.chdir @tmp_root do @stdout = "newgem.out" system "ruby #{newgem} #{arguments} #{project_name} > #{@stdout}" - force_local_newgem_priority + force_local_lib_override end end -When %r{^'(.*)' generator is invoked with arguments '(.*)'$} do |generator, arguments| - FileUtils.chdir(@active_project_folder) do - if Object.const_defined?("APP_ROOT") - APP_ROOT.replace(FileUtils.pwd) - else - APP_ROOT = FileUtils.pwd - end - run_generator(generator, arguments.split(' '), SOURCES) - end -end - -When /^run executable '(.*)' with arguments '(.*)'$/ do |executable, arguments| - @stdout = File.expand_path(File.join(@tmp_root, "executable.out")) - FileUtils.chdir(@active_project_folder) do - system "ruby #{executable} #{arguments} > #{@stdout}" - end -end - When /^run unit tests for test file '(.*)'$/ do |test_file| @stdout = File.expand_path(File.join(@tmp_root, "tests.out")) FileUtils.chdir(@active_project_folder) do system "ruby #{test_file} > #{@stdout}" end end -When /^task 'rake (.*)' is invoked$/ do |task| - @stdout = File.expand_path(File.join(@tmp_root, "tests.out")) - FileUtils.chdir(@active_project_folder) do - system "rake #{task} --trace > #{@stdout} 2> #{@stdout}" - end -end - -Then %r{^folder '(.*)' is created} do |folder| - FileUtils.chdir @active_project_folder do - File.exists?(folder).should be_true - end -end - Then %r{^remote folder '(.*)' is created} do |folder| FileUtils.chdir @remote_folder do File.exists?(folder).should be_true end end -Then %r{^file '(.*)' (is|is not) created} do |file, is| - FileUtils.chdir @active_project_folder do - File.exists?(file).should(is == 'is' ? be_true : be_false) - end -end - Then %r{^remote file '(.*)' (is|is not) created} do |file, is| FileUtils.chdir @remote_folder do File.exists?(file).should(is == 'is' ? be_true : be_false) end end - -Then /^file matching '(.*)' is created$/ do |pattern| - FileUtils.chdir @active_project_folder do - Dir[pattern].should_not be_empty - end -end - -Then %r{^output same as contents of '(.*)'$} do |file| - expected_output = File.read(File.join(File.dirname(__FILE__) + "/../expected_outputs", file)) - actual_output = File.read(File.dirname(__FILE__) + "/../../tmp/#{@stdout}") - actual_output.should == expected_output -end - -Then %r{^(does|does not) invoke generator '(.*)'$} do |does_invoke, generator| - actual_output = File.read(File.dirname(__FILE__) + "/../../tmp/#{@stdout}") - does_invoke == "does" ? - actual_output.should(match(/dependency\s+#{generator}/)) : - actual_output.should_not(match(/dependency\s+#{generator}/)) -end - -Then /^help options '(.*)' and '(.*)' are displayed$/ do |opt1, opt2| - actual_output = File.read(@stdout) - actual_output.should match(/#{opt1}/) - actual_output.should match(/#{opt2}/) -end - -Then /^output (does|does not) match \/(.*)\/$/ do |does, regex| - actual_output = File.read(@stdout) - (does == 'does') ? - actual_output.should(match(/#{regex}/)) : - actual_output.should_not(match(/#{regex}/)) -end - -Then /^all (\d+) tests pass$/ do |expected_test_count| - expected = %r{^#{expected_test_count} tests, \d+ assertions, 0 failures, 0 errors} - actual_output = File.read(@stdout) - actual_output.should match(expected) -end - -Then /^yaml file '(.*)' contains (\{.*\})/ do |file, yaml| - FileUtils.chdir @active_project_folder do - yaml = eval yaml - YAML.load(File.read(file)).should == yaml - end -end - -Then /^gem spec key '(.*)' contains \/(.*)\/$/ do |key, regex| - FileUtils.chdir @active_project_folder do - gem_file = Dir["pkg/*.gem"].first - gem_spec = Gem::Specification.from_yaml(`gem spec #{gem_file}`) - spec_value = gem_spec.send(key.to_sym) - spec_value.to_s.should match(/#{regex}/) - end -end - -Then /^Rakefile can display tasks successfully$/ do - @rake_stdout = File.expand_path(File.join(@tmp_root, "rakefile.out")) - FileUtils.chdir(@active_project_folder) do - system "rake -T > #{@rake_stdout} 2> #{@rake_stdout}" - end - actual_output = File.read(@rake_stdout) - actual_output.should match(/^rake\s+\w+\s+#\s.*/) -end - -Then /^task 'rake (.*)' is executed successfully$/ do |task| - @stdout.should_not be_nil - actual_output = File.read(@stdout) - actual_output.should_not match(/^Don't know how to build task '#{task}'/) - actual_output.should_not match(/Error/i) -end \ No newline at end of file