| import unittest |
| |
| import os, shutil, sys |
| |
| from modulegraph import modulegraph |
| |
| class ImpliesTestCase(unittest.TestCase): |
| if not hasattr(unittest.TestCase, 'assertIsInstance'): |
| def assertIsInstance(self, object, types, message=None): |
| self.assertTrue(isinstance(object, types), |
| message or '%r is not an instance of %r'%(object, types)) |
| |
| def testBasicImplies(self): |
| root = os.path.join( |
| os.path.dirname(os.path.abspath(__file__)), |
| 'testpkg-relimport') |
| |
| # First check that 'syslog' isn't accidently in the graph: |
| mg = modulegraph.ModuleGraph(path=[root]+sys.path) |
| mg.run_script(os.path.join(root, 'script.py')) |
| node = mg.findNode('mod') |
| self.assertIsInstance(node, modulegraph.SourceModule) |
| |
| node = mg.findNode('syslog') |
| self.assertEqual(node, None) |
| |
| # Now check that adding an implied dependency actually adds |
| # 'syslog' to the graph: |
| mg = modulegraph.ModuleGraph(path=[root]+sys.path, implies={ |
| 'mod': ['syslog']}) |
| self.assertEqual(node, None) |
| mg.run_script(os.path.join(root, 'script.py')) |
| node = mg.findNode('mod') |
| self.assertIsInstance(node, modulegraph.SourceModule) |
| |
| node = mg.findNode('syslog') |
| self.assertIsInstance(node, modulegraph.Extension) |
| |
| # Check that the edges are correct: |
| self.assertTrue(mg.findNode('mod') in mg.get_edges(node)[1]) |
| self.assertTrue(node in mg.get_edges(mg.findNode('mod'))[0]) |
| |
| def testPackagedImplies(self): |
| root = os.path.join( |
| os.path.dirname(os.path.abspath(__file__)), |
| 'testpkg-relimport') |
| |
| # First check that 'syslog' isn't accidently in the graph: |
| mg = modulegraph.ModuleGraph(path=[root]+sys.path) |
| mg.run_script(os.path.join(root, 'script.py')) |
| node = mg.findNode('mod') |
| self.assertIsInstance(node, modulegraph.SourceModule) |
| |
| node = mg.findNode('syslog') |
| self.assertEqual(node, None) |
| |
| |
| # Now check that adding an implied dependency actually adds |
| # 'syslog' to the graph: |
| mg = modulegraph.ModuleGraph(path=[root]+sys.path, implies={ |
| 'pkg.relative': ['syslog']}) |
| node = mg.findNode('syslog') |
| self.assertEqual(node, None) |
| |
| mg.run_script(os.path.join(root, 'script.py')) |
| node = mg.findNode('pkg.relative') |
| self.assertIsInstance(node, modulegraph.SourceModule) |
| |
| node = mg.findNode('syslog') |
| self.assertIsInstance(node, modulegraph.Extension) |
| |
| # Check that the edges are correct: |
| self.assertTrue(mg.findNode('pkg.relative') in mg.get_edges(node)[1]) |
| self.assertTrue(node in mg.get_edges(mg.findNode('pkg.relative'))[0]) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |