• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1from .. import abc
2from .. import util
3
4machinery = util.import_importlib('importlib.machinery')
5
6import unittest
7import warnings
8
9
10class FindSpecTests(abc.FinderTests):
11
12    """Test finding frozen modules."""
13
14    def find(self, name, path=None):
15        finder = self.machinery.FrozenImporter
16        return finder.find_spec(name, path)
17
18    def test_module(self):
19        name = '__hello__'
20        spec = self.find(name)
21        self.assertEqual(spec.origin, 'frozen')
22
23    def test_package(self):
24        spec = self.find('__phello__')
25        self.assertIsNotNone(spec)
26
27    def test_module_in_package(self):
28        spec = self.find('__phello__.spam', ['__phello__'])
29        self.assertIsNotNone(spec)
30
31    # No frozen package within another package to test with.
32    test_package_in_package = None
33
34    # No easy way to test.
35    test_package_over_module = None
36
37    def test_failure(self):
38        spec = self.find('<not real>')
39        self.assertIsNone(spec)
40
41
42(Frozen_FindSpecTests,
43 Source_FindSpecTests
44 ) = util.test_both(FindSpecTests, machinery=machinery)
45
46
47class FinderTests(abc.FinderTests):
48
49    """Test finding frozen modules."""
50
51    def find(self, name, path=None):
52        finder = self.machinery.FrozenImporter
53        with warnings.catch_warnings():
54            warnings.simplefilter("ignore", DeprecationWarning)
55            return finder.find_module(name, path)
56
57    def test_module(self):
58        name = '__hello__'
59        loader = self.find(name)
60        self.assertTrue(hasattr(loader, 'load_module'))
61
62    def test_package(self):
63        loader = self.find('__phello__')
64        self.assertTrue(hasattr(loader, 'load_module'))
65
66    def test_module_in_package(self):
67        loader = self.find('__phello__.spam', ['__phello__'])
68        self.assertTrue(hasattr(loader, 'load_module'))
69
70    # No frozen package within another package to test with.
71    test_package_in_package = None
72
73    # No easy way to test.
74    test_package_over_module = None
75
76    def test_failure(self):
77        loader = self.find('<not real>')
78        self.assertIsNone(loader)
79
80
81(Frozen_FinderTests,
82 Source_FinderTests
83 ) = util.test_both(FinderTests, machinery=machinery)
84
85
86if __name__ == '__main__':
87    unittest.main()
88