blob: b8273752e6707be8159631d8572ac72851993a65 [file] [log] [blame]
#!/usr/bin/python
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""This module tests the init module."""
import glob
import imp
import mox
import os
import sys
sys.path.insert(0, os.path.abspath('%s/../../..' % os.path.dirname(__file__)))
from chromite.lib import commandline
from chromite.lib import cros_build_lib_unittest
from chromite.lib import cros_test_lib
from chromite.lib import partial_mock
from chromite.cros import commands
class MockCommand(partial_mock.PartialMock):
"""Mock class for a generic cros command."""
ATTRS = ('Run',)
COMMAND = None
TARGET_CLASS = None
def __init__(self, args, base_args=None):
partial_mock.PartialMock.__init__(self)
self.args = args
self.rc_mock = cros_build_lib_unittest.RunCommandMock()
self.rc_mock.SetDefaultCmdResult()
parser = commandline.ArgumentParser(caching=True)
subparsers = parser.add_subparsers()
subparser = subparsers.add_parser(self.COMMAND)
self.TARGET_CLASS.AddParser(subparser)
args = base_args if base_args else []
args += [self.COMMAND] + self.args
options = parser.parse_args(args)
self.inst = options.cros_class(options)
def Run(self, inst):
with self.rc_mock:
self.backup['Run'](inst)
# pylint: disable=W0212
class CommandTest(cros_test_lib.MoxTestCase):
"""This test class tests that we can load modules correctly."""
def testFindModules(self):
"""Tests that we can return modules correctly when mocking out glob."""
self.mox.StubOutWithMock(glob, 'glob')
fake_command_file = 'cros_command_test.py'
filtered_file = 'cros_command_unittest.py'
mydir = 'mydir'
glob.glob(mox.StrContains(mydir)).AndReturn([fake_command_file,
filtered_file])
self.mox.ReplayAll()
self.assertEqual(commands._FindModules(mydir), [fake_command_file])
self.mox.VerifyAll()
def testLoadCommands(self):
"""Tests import commands correctly."""
self.mox.StubOutWithMock(commands, '_FindModules')
self.mox.StubOutWithMock(imp, 'load_module')
self.mox.StubOutWithMock(imp, 'find_module')
fake_command_file = 'cros_command_test.py'
fake_module = 'cros_command_test'
module_tuple = 'file', 'pathname', 'description'
commands._FindModules(mox.IgnoreArg()).AndReturn([fake_command_file])
imp.find_module(fake_module, mox.IgnoreArg()).AndReturn(module_tuple)
imp.load_module(fake_module, *module_tuple)
self.mox.ReplayAll()
commands._ImportCommands()
self.mox.VerifyAll()
if __name__ == '__main__':
cros_test_lib.main()