1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- # -*- 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()
|