begin require 'spec' rescue LoadError require 'rubygems' gem 'rspec' require 'spec' end $:.unshift(File.dirname(__FILE__) + '/../lib') require 'rocketstarter' def move_to_sandbox sandbox_path = test_dir unless FileTest::directory?(sandbox_path) puts 'This spec needs a sandbox directory at ' + sandbox_path puts 'If you want to countinue, please make it first!' return false end Dir::chdir(sandbox_path) if sandbox_path == Dir::pwd return true else return false end end def clean_up_sandbox `rm -rf ./gitproj` return false unless 0 == $? `rm -rf ./svnproj` return false unless 0 == $? `rm -rf ./setting` return false unless 0 == $? return true end def test_dir ENV["HOME"] + "/sandbox/rocketstarter" end def path_of_config_file test_dir + "/setting/rocketstarter" end def path_of_plugin_list_file test_dir + "/setting/pluginlist" end def path_of_program "/opt/local/bin/rocketstarter" end def setup_config_directory Dir.mkdir("setting") end def build_option_string(options) option_string = "" options.each_pair do |key, value| if "true" == value or "false" == value option_string << " --#{key}" else option_string << " --#{key}=#{value}" end end option_string end def setup_config_file(options = nil, how_many = 2) option_string = "" if options option_string = build_option_string(options) end commandline = "|#{path_of_program} --init --conf=#{path_of_config_file} --listpath=#{path_of_plugin_list_file} #{option_string}" open(commandline, "r+") do |rs| how_many.times do rs.puts "y" end # rs.puts "y" # ask to create for config # rs.puts "y" # ask to over write for config # rs.puts "y" # ask to create for plugin list # rs.puts "y" # ask to over write for plugin list end return true end =begin /Users/maimuzo/sandbox/rocketstarter/setting% rocketstarter --check current variables scmtype:svn skip_plugins:false emulate:false log_file:/Users/maimuzo/rocket_starter.log check:true scmuri: verbose:true pluginlist_path:/Users/maimuzo/.rocket_starter_pluginlist external:false scmpassword:mogemoge ignoredatabase:true logging:true createdb:true rapt:true skip_commit_for_plugins:false rocket_starter_conf_path:/Users/maimuzo/.rocket_starter project:--check database:mysql sudo:false skip_netbeans:false dbpassword: init:false =end def parse_setting parsed_param = {} result = `#{path_of_program} --check --conf=#{path_of_config_file}` return false unless 0 == $? result.each do |line| temp = line.scan(/^(.+):(.+)$/) parsed_param[temp[0][0]] = temp[0][1] if temp.size > 0 end parsed_param end class Hash def includes_hash?(target) result = target.reject do |key, value| !self[key].nil? and value == self[key] end result.empty? end end def create_repos_with(options) project_name = options.delete("project") option_string = build_option_string(options) result = `#{path_of_program} #{project_name} --conf=#{path_of_config_file} #{option_string}` return false unless 0 == $? result end def clean_up_at_svn_repository(secret) begin uri = secret["scmuri"] password = secret["scmpassword"] `svn delete #{uri}/trunk -m "clean up trunk for test" --password #{password}` raise "command error" unless 0 == $? `svn delete #{uri}/branches -m "clean up branches for test" --password #{password}` raise "command error" unless 0 == $? `svn delete #{uri}/tags -m "clean up tags for test" --password #{password}` raise "command error" unless 0 == $? rescue puts "This message was showed when the subversion repository is empty. In this case is no probrem." return false end end