467
467
self.addCleanup(sys.path.remove, base_path)
469
469
original_import = __import__
470
def instrumented_import(mod, scope1, scope2, fromlist):
471
self.actions.append(('import', mod, fromlist))
472
return original_import(mod, scope1, scope2, fromlist)
470
def instrumented_import(mod, scope1, scope2, fromlist, level):
471
self.actions.append(('import', mod, fromlist, level))
472
return original_import(mod, scope1, scope2, fromlist, level)
474
474
__builtins__['__import__'] = original_import
475
475
self.addCleanup(cleanup)
545
545
"""Test that a real import of these modules works"""
546
546
sub_mod_path = '.'.join([self.root_name, self.sub_name,
547
547
self.submoda_name])
548
root = __import__(sub_mod_path, globals(), locals(), [])
548
root = __import__(sub_mod_path, globals(), locals(), [], 0)
549
549
self.assertEqual(1, root.var1)
550
550
self.assertEqual(3, getattr(root, self.sub_name).var3)
551
551
self.assertEqual(4, getattr(getattr(root, self.sub_name),
552
552
self.submoda_name).var4)
554
554
mod_path = '.'.join([self.root_name, self.mod_name])
555
root = __import__(mod_path, globals(), locals(), [])
555
root = __import__(mod_path, globals(), locals(), [], 0)
556
556
self.assertEqual(2, getattr(root, self.mod_name).var2)
558
self.assertEqual([('import', sub_mod_path, []),
559
('import', mod_path, []),
558
self.assertEqual([('import', sub_mod_path, [], 0),
559
('import', mod_path, [], 0),
585
585
self.assertEqual([('__getattribute__', 'var1'),
586
586
('_import', 'root1'),
587
('import', self.root_name, []),
587
('import', self.root_name, [], 0),
590
590
def test_import_mod(self):
610
610
self.assertEqual([('__getattribute__', 'var2'),
611
611
('_import', 'mod1'),
612
('import', mod_path, []),
612
('import', mod_path, [], 0),
615
615
def test_import_mod_from_root(self):
634
634
self.assertEqual([('__getattribute__', 'var2'),
635
635
('_import', 'mod2'),
636
('import', self.root_name, [self.mod_name]),
636
('import', self.root_name, [self.mod_name], 0),
639
639
def test_import_root_and_mod(self):
665
665
mod_path = self.root_name + '.' + self.mod_name
666
666
self.assertEqual([('__getattribute__', 'var1'),
667
667
('_import', 'root3'),
668
('import', self.root_name, []),
668
('import', self.root_name, [], 0),
669
669
('__getattribute__', 'var2'),
670
670
('_import', 'mod3'),
671
('import', mod_path, []),
671
('import', mod_path, [], 0),
674
674
def test_import_root_and_root_mod(self):
707
707
mod_path = self.root_name + '.' + self.mod_name
708
708
self.assertEqual([('__getattribute__', 'mod4'),
709
709
('_import', 'root4'),
710
('import', self.root_name, []),
710
('import', self.root_name, [], 0),
711
711
('__getattribute__', 'var2'),
712
712
('_import', 'mod4'),
713
('import', mod_path, []),
713
('import', mod_path, [], 0),
716
716
def test_import_root_sub_submod(self):
771
771
self.assertEqual([('__getattribute__', 'mod5'),
772
772
('_import', 'root5'),
773
('import', self.root_name, []),
773
('import', self.root_name, [], 0),
774
774
('__getattribute__', 'submoda5'),
775
775
('_import', 'sub5'),
776
('import', sub_path, []),
776
('import', sub_path, [], 0),
777
777
('__getattribute__', 'var2'),
778
778
('_import', 'mod5'),
779
('import', mod_path, []),
779
('import', mod_path, [], 0),
780
780
('__getattribute__', 'var4'),
781
781
('_import', 'submoda5'),
782
('import', submoda_path, []),
782
('import', submoda_path, [], 0),
783
783
('__getattribute__', 'var5'),
784
784
('_import', 'submodb5'),
785
('import', submodb_path, []),
785
('import', submodb_path, [], 0),
1078
1078
self.assertEqual([('__getattribute__', 'var1'),
1079
1079
('_import', 'root6'),
1080
('import', self.root_name, []),
1080
('import', self.root_name, [], 0),
1081
1081
], self.actions)
1083
1083
def test_import_deep(self):
1113
1113
self.assertEqual([('__getattribute__', 'var4'),
1114
1114
('_import', 'submoda7'),
1115
('import', submoda_path, []),
1115
('import', submoda_path, [], 0),
1116
1116
], self.actions)
1118
1118
def test_lazy_import(self):
1137
1137
self.assertEqual([('__getattribute__', 'var1'),
1138
1138
('_import', 'root8'),
1139
('import', self.root_name, []),
1139
('import', self.root_name, [], 0),
1140
1140
], self.actions)