Example #1
0
 def test_list_modified_incorrect(self):
     func = self.lua.eval("""
     function (arr)
        arr["foo"] = "bar"
        return arr
     end
     """)
     arr = python2lua(self.lua, [3, 4])
     arr2 = func(arr)
     with pytest.raises(ValueError):
         lua2python(self.lua, arr2)
Example #2
0
 def test_list_modified_incorrect(self):
     func = self.lua.eval("""
     function (arr)
        arr["foo"] = "bar"
        return arr
     end
     """)
     arr = python2lua(self.lua, [3, 4])
     arr2 = func(arr)
     with pytest.raises(ValueError):
         lua2python(self.lua, arr2)
Example #3
0
    def __call__(self, *args):
        args = lua2python(self.lua, args)
        args_text = json.dumps(args, ensure_ascii=False, encoding="utf8")[1:-1]
        func_text = json.dumps([self.source], ensure_ascii=False, encoding='utf8')[1:-1]
        wrapper_script = """
        (function(func_text){
            try{
                var func = eval("(" + func_text + ")");
                return {
                    result: func(%(args)s),
                    error: false,
                }
            }
            catch(e){
                return {
                    error: true,
                    error_repr: e.toString(),
                }
            }
        })(%(func_text)s)
        """ % {"func_text": func_text, "args": args_text}

        # print(wrapper_script)
        res = self.tab.runjs(wrapper_script)

        if not isinstance(res, dict):
            raise ScriptError("[lua] unknown error during JS function call: %r; %r" % (res, wrapper_script))

        if res["error"]:
            raise ScriptError("[lua] error during JS function call: %r" % (res.get("error_repr", "<unknown error>"),))

        return res.get("result")
Example #4
0
    def __call__(self, *args):
        args = lua2python(self.lua, args)
        args_text = json.dumps(args, ensure_ascii=False, encoding="utf8")[1:-1]
        func_text = json.dumps([self.source], ensure_ascii=False, encoding='utf8')[1:-1]
        wrapper_script = """
        (function(func_text){
            try{
                var func = eval("(" + func_text + ")");
                return {
                    result: func(%(args)s),
                    error: false,
                }
            }
            catch(e){
                return {
                    error: true,
                    error_repr: e.toString(),
                }
            }
        })(%(func_text)s)
        """ % {"func_text": func_text, "args": args_text}

        # print(wrapper_script)
        res = self.tab.runjs(wrapper_script)

        if not isinstance(res, dict):
            raise ScriptError("[lua] unknown error during JS function call: %r; %r" % (res, wrapper_script))

        if res["error"]:
            raise ScriptError("[lua] error during JS function call: %r" % (res.get("error_repr", "<unknown error>"),))

        return res.get("result")
Example #5
0
 def test_list_like_tables(self):
     # List-like tables are still returned as dicts;
     # only tables which were lists originally are lists.
     tbl = self.lua.eval("{5, 6}")
     self.assertEqual(
         lua2python(self.lua, tbl),
         {1: 5, 2: 6}
     )
Example #6
0
 def test_list_like_tables(self):
     # List-like tables are still returned as dicts;
     # only tables which were lists originally are lists.
     tbl = self.lua.eval("{5, 6}")
     self.assertEqual(
         lua2python(self.lua, tbl),
         {1: 5, 2: 6}
     )
Example #7
0
    def test_sparse_list(self):
        func1 = self.lua.eval("""
        function (arr)
            arr[5] = "foo"
            return arr
        end
        """)
        func2 = self.lua.eval("""
        function (arr)
            arr[100000] = "foo"
            return arr
        end
        """)
        arr = python2lua(self.lua, [1, 2])
        arr1 = lua2python(self.lua, func1(arr))
        self.assertEqual(arr1, [1, 2, None, None, "foo"])

        with pytest.raises(ValueError):
            arr2 = lua2python(self.lua, func2(arr))
Example #8
0
    def test_sparse_list(self):
        func1 = self.lua.eval("""
        function (arr)
            arr[5] = "foo"
            return arr
        end
        """)
        func2 = self.lua.eval("""
        function (arr)
            arr[100000] = "foo"
            return arr
        end
        """)
        arr = python2lua(self.lua, [1, 2])
        arr1 = lua2python(self.lua, func1(arr))
        self.assertEqual(arr1, [1, 2, None, None, "foo"])

        with pytest.raises(ValueError):
            arr2 = lua2python(self.lua, func2(arr))
Example #9
0
 def test_list_modified_correct(self):
     func = self.lua.eval("""
     function (arr)
        table.insert(arr, "bar")
        return arr
     end
     """)
     arr = python2lua(self.lua, [3, 4])
     arr2 = func(arr)
     self.assertEqual(lua2python(self.lua, arr2), [3, 4, "bar"])
Example #10
0
 def test_list_modified_correct(self):
     func = self.lua.eval("""
     function (arr)
        table.insert(arr, "bar")
        return arr
     end
     """)
     arr = python2lua(self.lua, [3, 4])
     arr2 = func(arr)
     self.assertEqual(lua2python(self.lua, arr2), [3, 4, "bar"])
Example #11
0
 def test_lua_table_in_python_container(self):
     dct = {
         "foo": "foo",
         "bar": self.lua.table_from({"egg": "spam"}),
         "baz": [self.lua.table_from({"foo": "bar"})],
     }
     value = lua2python(self.lua, dct)
     self.assertEqual(value, {
         "foo": "foo",
         "bar": {"egg": "spam"},
         "baz": [{"foo": "bar"}],
     })
Example #12
0
 def test_lua_table_in_python_container(self):
     dct = {
         "foo": "foo",
         "bar": self.lua.table_from({"egg": "spam"}),
         "baz": [self.lua.table_from({"foo": "bar"})],
     }
     value = lua2python(self.lua, dct)
     self.assertEqual(value, {
         "foo": "foo",
         "bar": {"egg": "spam"},
         "baz": [{"foo": "bar"}],
     })
Example #13
0
 def assertSurvivesConversion(self, obj, encoding='utf8'):
     lua_obj = python2lua(self.lua, obj, encoding=encoding)
     py_obj = lua2python(self.lua, lua_obj, encoding=encoding)
     self.assertEqual(obj, py_obj)
     self.assertEqual(obj.__class__, py_obj.__class__)
Example #14
0
 def lua2python(self, *args, **kwargs):
     kwargs.setdefault("binary", True)
     kwargs.setdefault("strict", True)
     return lua2python(self._lua, *args, **kwargs)
Example #15
0
 def lua2python(self, obj, **kwargs):
     kwargs.setdefault("binary", True)
     kwargs.setdefault("strict", True)
     return lua2python(self.lua, obj, **kwargs)
Example #16
0
 def assertSurvivesConversion(self, obj):
     lua_obj = python2lua(self.lua, obj)
     py_obj = lua2python(self.lua, lua_obj)
     self.assertEqual(obj, py_obj)
Example #17
0
 def assertSurvivesConversion(self, obj):
     lua_obj = python2lua(self.lua, obj)
     py_obj = lua2python(self.lua, lua_obj)
     self.assertEqual(obj, py_obj)
Example #18
0
 def lua2python(self, *args, **kwargs):
     kwargs.setdefault("encoding", 'utf8')
     kwargs.setdefault("strict", True)
     return lua2python(self._lua, *args, **kwargs)
Example #19
0
 def lua2python(self, *args, **kwargs):
     kwargs.setdefault("encoding", 'utf8')
     kwargs.setdefault("strict", True)
     return lua2python(self._lua, *args, **kwargs)
Example #20
0
 def assertSurvivesConversion(self, obj, encoding='utf8'):
     lua_obj = python2lua(self.lua, obj, encoding=encoding)
     py_obj = lua2python(self.lua, lua_obj, encoding=encoding)
     self.assertEqual(obj, py_obj)
     self.assertEqual(obj.__class__, py_obj.__class__)
Example #21
0
 def lua2python(self, obj):
     return lua2python(self.lua, obj, binary=True, strict=True)