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)))
Exemplo n.º 2
0
    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")