in lib/taste_tester/commands.rb [65:142]
def self.test
hosts = TasteTester::Config.servers
unless hosts
logger.warn('You must provide a hostname')
exit(1)
end
unless TasteTester::Config.yes
printf("Set #{TasteTester::Config.servers} to test mode? [y/N] ")
ans = STDIN.gets.chomp
exit(1) unless ans =~ /^[yY](es)?$/
end
if TasteTester::Config.linkonly && TasteTester::Config.really
logger.warn('Skipping upload at user request... potentially dangerous!')
else
if TasteTester::Config.linkonly
logger.warn('Ignoring --linkonly because --really not set')
end
upload
end
server = TasteTester::Server.new
unless TasteTester::Config.linkonly
if TasteTester::Config.no_repo
repo = nil
else
repo = BetweenMeals::Repo.get(
TasteTester::Config.repo_type,
TasteTester::Config.repo,
logger,
)
end
if repo && !repo.exists?
fail "Could not open repo from #{TasteTester::Config.repo}"
end
end
unless TasteTester::Config.skip_pre_test_hook ||
TasteTester::Config.linkonly
TasteTester::Hooks.pre_test(TasteTester::Config.dryrun, repo, hosts)
end
tested_hosts = []
hosts.each do |hostname|
host = TasteTester::Host.new(hostname, server)
begin
host.test
tested_hosts << hostname
rescue TasteTester::Exceptions::AlreadyTestingError => e
logger.error("User #{e.username} is already testing on #{hostname}")
rescue StandardError => e
TasteTester::Hooks.post_error(TasteTester::Config.dryrun, e,
__method__, hostname)
raise
end
end
unless TasteTester::Config.skip_post_test_hook ||
TasteTester::Config.linkonly
TasteTester::Hooks.post_test(TasteTester::Config.dryrun, repo,
tested_hosts)
end
if tested_hosts == hosts
exit(0)
end
if tested_hosts.empty?
exit(3)
end
exit(2)
end