import sys import os import logging import unittest from collector import modules log = logging.getLogger('datadog.test') default_target = 'DEFAULT' specified_target = 'SPECIFIED' has_been_mutated = False class TestModuleLoad(unittest.TestCase): def setUp(self): sys.modules[__name__].has_been_mutated = True if 'tests.target_module' in sys.modules: del sys.modules['tests.target_module'] def tearDown(self): sys.modules[__name__].has_been_mutated = False def test_cached_module(self): """Modules already in the cache should be reused""" self.assertTrue(modules.load('%s:has_been_mutated' % __name__)) def test_cache_population(self): """Python module cache should be populated""" self.assertTrue('tests.target_module' not in sys.modules) modules.load('tests.target_module') self.assertTrue('tests.target_module' in sys.modules) def test_modname_load_default(self): """When the specifier contains no module name, any provided default should be used""" self.assertEqual( modules.load( 'tests.target_module', 'default_target'), 'DEFAULT' ) def test_modname_load_specified(self): """When the specifier contains a module name, any provided default should be overridden""" self.assertEqual( modules.load( 'tests.target_module:specified_target', 'default_target'), 'SPECIFIED' ) def test_pathname_load_finds_package(self): """"Loading modules by absolute path should correctly set the name of the loaded module to include any package containing it.""" m = modules.load(os.getcwd() + '/tests/target_module.py') self.assertEqual(m.__name__, 'tests.target_module')