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