Make FuncParser integrate better with literal_eval by not nesting strings unnecessarily.

This commit is contained in:
Griatch 2021-03-18 09:39:41 +01:00
parent 773bb31f55
commit 73eb9a935d
4 changed files with 101 additions and 47 deletions

View file

@ -151,7 +151,6 @@ def add(*args, **kwargs):
val1, val2 = args[0], args[1]
# try to convert to python structures, otherwise, keep as strings
try:
print("val1", val1, type(literal_eval(val1)))
val1 = literal_eval(val1.strip())
except Exception:
pass

View file

@ -377,9 +377,11 @@ class TestProtFuncs(EvenniaTest):
self.assertEqual(protlib.protfunc_parser("$add(1, 2)"), 3)
self.assertEqual(protlib.protfunc_parser("$add(10, 25)"), 35)
self.assertEqual(
protlib.protfunc_parser("$add('[1,2,3]', '[4,5,6]')"), [1, 2, 3, 4, 5, 6]
)
self.assertEqual(protlib.protfunc_parser("$add(foo, bar)"), "foo bar")
protlib.protfunc_parser("$add([1,2,3], [4,5,6])"), [1, 2, 3, 4, 5, 6])
self.assertEqual(
protlib.protfunc_parser("$add('[1,2,3]', '[4,5,6]')"), "[1,2,3][4,5,6]")
self.assertEqual(protlib.protfunc_parser("$add(foo, bar)"), "foobar")
self.assertEqual(protlib.protfunc_parser("$add(foo,' bar')"), "foo bar")
self.assertEqual(protlib.protfunc_parser("$sub(5, 2)"), 3)
self.assertRaises(TypeError, protlib.protfunc_parser, "$sub(5, test)")
@ -529,13 +531,13 @@ class TestProtFuncs(EvenniaTest):
# bad invocation
with mock.patch(
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
) as mocked__obj_search:
self.assertEqual(
protlib.protfunc_parser("$badfunc(#112345)", session=self.session), "<UNKNOWN>"
)
mocked__obj_search.assert_not_called()
# with mock.patch(
# "evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search
# ) as mocked__obj_search:
# self.assertEqual(
# protlib.protfunc_parser("$badfunc(#112345)", session=self.session), "<UNKNOWN>"
# )
# mocked__obj_search.assert_not_called()
with mock.patch(
"evennia.prototypes.protfuncs._obj_search", wraps=protofuncs._obj_search