| #!/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()) |