def test_serialize_modules(self): codebase = Codebase._FromModule(dummy_test_module) sc = codebase.serializationContext self.assertIn('.modules.pytz', sc.nameToObject) pytz = dummy_test_module.pytz self.assertIs(pytz, sc.deserialize(sc.serialize(pytz)))
def test_instantiated_codebase(self): codebase = Codebase.Instantiate({ 'test_module/__init__.py': '', 'test_module/inner.py': 'f = lambda: 10', }) self.assertEqual(codebase.getClassByName('test_module.inner.f')(), 10) codebase2 = Codebase._FromModule(codebase.getModuleByName("test_module")) self.assertEqual(codebase2.getClassByName('test_module.inner.f')(), 10) self.assertEqual(codebase.filesToContents, codebase2.filesToContents)
def test_serialize_lambdas_with_references_in_list_comprehensions(self): codebase = Codebase._FromModule(dummy_test_module) sc = codebase.serializationContext # note that it matters that the 'module_level_testfun' is at the module level, # because that induces a freevar in a list-comprehension code object def f(): return [module_level_testfun() for _ in range(1)][0] self.assertEqual(f(), "testfunction") self.assertEqual(sc.deserialize(sc.serialize(f))(), "testfunction")