#!/usr/bin/python
#
# Copyright 2007 Google Inc. Released under the GPL v2
"""This module defines the unittests for the Autotest class
"""
__author__ = """stutsman@google.com (Ryan Stutsman)"""
import os
import sys
import unittest
import common
from autotest_lib.server import utils
from autotest_lib.server import autotest
from autotest_lib.server import hosts
class AutotestTestCase(unittest.TestCase):
def setUp(self):
self.autotest = autotest.Autotest()
def tearDown(self):
pass
def testGetAutoDir(self):
class MockInstallHost:
def __init__(self):
self.commands = []
self.result = "autodir='/stuff/autotest'\n"
def run(self, command):
if command == "grep autodir= /etc/autotest.conf":
result = hosts.CmdResult()
result.stdout = self.result
return result
else:
self.commands.append(command)
host = MockInstallHost()
self.assertEqual('/stuff/autotest',
autotest.Autotest.get_installed_autodir(host))
host.result = "autodir=/stuff/autotest\n"
self.assertEqual('/stuff/autotest',
autotest.Autotest.get_installed_autodir(host))
host.result = 'autodir="/stuff/auto test"\n'
self.assertEqual('/stuff/auto test',
autotest.Autotest.get_installed_autodir(host))
def testInstallFromDir(self):
class MockInstallHost:
def __init__(self):
self.commands = []
def run(self, command):
if command == "grep autodir= /etc/autotest.conf":
result= hosts.CmdResult()
result.stdout = "autodir=/usr/local/autotest\n"
return result
else:
self.commands.append(command)
def send_file(self, src, dst):
self.commands.append("send_file: %s %s" % (src,
dst))
host = MockInstallHost()
tmpdir = utils.get_tmp_dir()
self.autotest.get(tmpdir)
self.autotest.install(host)
self.assertEqual(host.commands[0],
'mkdir -p /usr/local/autotest')
self.assertTrue(host.commands[1].startswith('send_file: /tmp/'))
self.assertTrue(host.commands[1].endswith(
'/ /usr/local/autotest'))
def testInstallFromSVN(self):
class MockInstallHost:
def __init__(self):
self.commands = []
def run(self, command):
if command == "grep autodir= /etc/autotest.conf":
result= hosts.CmdResult()
result.stdout = "autodir=/usr/local/autotest\n"
return result
else:
self.commands.append(command)
host = MockInstallHost()
self.autotest.install(host)
self.assertEqual(host.commands,
['svn checkout '
+ autotest.AUTOTEST_SVN + ' '
+ "/usr/local/autotest"])
def testFirstInstallFromSVNFails(self):
class MockFirstInstallFailsHost:
def __init__(self):
self.commands = []
def run(self, command):
if command == "grep autodir= /etc/autotest.conf":
result= hosts.CmdResult()
result.stdout = "autodir=/usr/local/autotest\n"
return result
else:
self.commands.append(command)
first = ('svn checkout ' +
autotest.AUTOTEST_SVN + ' ' +
"/usr/local/autotest")
if (command == first):
raise autotest.AutoservRunError(
"svn not found")
host = MockFirstInstallFailsHost()
self.autotest.install(host)
self.assertEqual(host.commands,
['svn checkout ' + autotest.AUTOTEST_SVN +
' ' + "/usr/local/autotest",
'svn checkout ' + autotest.AUTOTEST_HTTP +
' ' + "/usr/local/autotest"])
def suite():
return unittest.TestLoader().loadTestsFromTestCase(AutotestTestCase)
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(suite())