123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- # -*- coding: utf-8 -*-
- """
- Authors: pietro
- Copyright: (C) 2015 pietro
- This program is free software under the GNU General Public
- License (>=v2). Read the file COPYING that comes with GRASS
- for details.
- Created on Wed Jul 15 11:34:32 2015
- """
- from __future__ import absolute_import
- import sys
- import fnmatch
- from grass.gunittest.case import TestCase
- from grass.gunittest.main import test
- def check(*patterns):
- """Return a set of the imported libraries that soddisfies several patterns.
- """
- result = []
- imports = sorted(sys.modules.keys())
- for pattern in patterns:
- result.extend(fnmatch.filter(imports, pattern))
- return set(result)
- class TestImportIsolation(TestCase):
- patterns = ['grass.lib*']
- def test_import_isolation(self):
- """Check that modules classes are not using ctypes"""
- isolate = set()
- self.assertEqual(isolate, check(*self.patterns),
- msg="Test isolation before any import.")
- # same import done in __init__ file
- from grass.pygrass.modules.interface import Module, ParallelModuleQueue
- from grass.pygrass.modules import shortcuts
- self.assertEqual(isolate, check(*self.patterns),
- msg="Test isolation after import Module.")
- # test the other way round
- from grass.pygrass.vector import VectorTopo
- self.assertNotEqual(isolate, check(*self.patterns),
- msg=("Test the isolation is broken, therefore "
- "the defined patterns are correct"))
- if __name__ == '__main__':
- test()
|