import py from importcontext import ImportContext def test_simple(): py.test.raises(ImportError, "import mod1") ctx = ImportContext() ctx.path.append(py.path.local().join('test_dir')) mod1 = ctx.import_("mod1") assert mod1.hello == 42 assert mod1.world == ":-)" py.test.raises(ImportError, "import mod1") py.test.raises(ImportError, "import mod2") def test_local_copies(): ctx1 = ImportContext() ctx1.path.append(py.path.local().join('test_dir')) ctx2 = ImportContext() ctx2.path.append(py.path.local().join('test_dir')) mod1_1 = ctx1.import_("mod1") mod1_2 = ctx2.import_("mod1") assert mod1_1 is not mod1_2 assert mod1_1 is ctx1.import_("mod1") assert mod1_2 is ctx2.import_("mod1") def test_fallback_to_global_import(): ctx = ImportContext() ctx.path.append(py.path.local().join('test_dir')) mod3 = ctx.import_("mod3") import traceback assert mod3.traceback is traceback def test_package(): ctx = ImportContext() ctx.path.append(py.path.local().join('test_dir')) submod = ctx.import_("pkg1.submod") assert submod.__name__.endswith("pkg1.submod") assert submod.submodvariable == 1 pkg1 = ctx.import_("pkg1") assert pkg1.__name__.endswith("pkg1") assert pkg1.pkgvariable == 1 assert pkg1.submod is submod assert submod is ctx.import_("pkg1.submod") def test_relative_absolute_imports(): ctx = ImportContext() ctx.path.append(py.path.local().join('test_dir')) submod2 = ctx.import_("pkg1.submod2") import traceback assert submod2.traceback is traceback assert submod2.submod.submodvariable == 1 assert submod2.pkg1.pkgvariable == 1 assert submod2.pkg1.submod is submod2.submod assert submod2.mod1.hello == 42 assert submod2.mod1.world == ":-)" assert submod2.submod is ctx.import_("pkg1.submod") assert submod2.pkg1 is ctx.import_("pkg1") assert submod2.mod1 is ctx.import_("mod1")