def _postprocess_include(self): """Postprocess --include options.""" # set up included easyblocks, module naming schemes and toolchains/toolchain components if self.options.include_easyblocks: include_easyblocks(self.tmpdir, self.options.include_easyblocks) if self.options.include_module_naming_schemes: include_module_naming_schemes(self.tmpdir, self.options.include_module_naming_schemes) if self.options.include_toolchains: include_toolchains(self.tmpdir, self.options.include_toolchains)
def test_include_mns(self): """Test include_module_naming_schemes().""" testdir = os.path.dirname(os.path.abspath(__file__)) test_mns = os.path.join(testdir, 'sandbox', 'easybuild', 'module_naming_scheme') my_mns = os.path.join(self.test_prefix, 'my_mns') mkdir(my_mns) # include __init__.py file that should be ignored, and shouldn't cause trouble (bug #1697) write_file(os.path.join(my_mns, '__init__.py'), "# dummy init, should not get included") my_mns_txt = '\n'.join([ "from easybuild.tools.module_naming_scheme import ModuleNamingScheme", "class MyMNS(ModuleNamingScheme):", " pass", ]) write_file(os.path.join(my_mns, 'my_mns.py'), my_mns_txt) # include custom MNS included_mns_path = include_module_naming_schemes(self.test_prefix, [os.path.join(my_mns, '*.py')]) expected_paths = ['__init__.py', 'tools/__init__.py', 'tools/module_naming_scheme/__init__.py', 'tools/module_naming_scheme/my_mns.py'] for filepath in expected_paths: fullpath = os.path.join(included_mns_path, 'easybuild', filepath) self.assertTrue(os.path.exists(fullpath), "%s exists" % fullpath) # path to included MNSs should be prepended to Python search path self.assertEqual(sys.path[0], included_mns_path) # importing custom MNS should work import easybuild.tools.module_naming_scheme.my_mns my_mns_pyc_path = easybuild.tools.module_naming_scheme.my_mns.__file__ my_mns_real_py_path = os.path.realpath(os.path.join(os.path.dirname(my_mns_pyc_path), 'my_mns.py')) self.assertTrue(os.path.samefile(up(my_mns_real_py_path, 1), my_mns))