コード例 #1
0
    async def test_CustomDict_returns_a_dictionary(self):
        class TestObj:
            def __init__(self, k, v):
                self.key = k
                self.value = v

        create_variable("variable", "varValue")
        create_env_var("envvar", "envarValue")
        create_mist_param("param", "paramValue")
        entries = [
            TestObj("number", MistObj({"value": 5})),
            TestObj("string", MistObj({"value": "strvalue"})),
            TestObj("mistVar",
                    MistObj({"value": VarReference(None, "variable", None)})),
            TestObj("mistEnvvar",
                    MistObj({"value": EnvVariable(None, "envvar")})),
            TestObj("mistParam",
                    MistObj({"value": ExtParameter(None, "param")}))
        ]

        cd = CustomDict(None, entries)
        d = await cd.getValue(get_mistStack())

        self.assertEqual(
            {
                "number": 5,
                "string": "strvalue",
                "mistVar": "varValue",
                "mistEnvvar": "envarValue",
                "mistParam": "paramValue"
            }, d)
コード例 #2
0
    async def test_ListDictReference_returns_stored_value(self):
        create_variable("myIndex", 0)
        create_variable("myList", ["value"])

        dl = ListDictReference(
            None, "myList",
            MistObj({"value": VarReference(None, "myIndex", None)}))
        v = await dl.getValue(get_mistStack())

        self.assertEqual("value", v)
コード例 #3
0
    async def test_ListDictReference_returns_stored_value(self):
        create_variable("myKey", "key")
        create_variable("myDict", {"key": "val"})

        dr = ListDictReference(
            None, "myDict",
            MistObj({"value": VarReference(None, "myKey", None)}))
        v = await dr.getValue(get_mistStack())

        self.assertEqual("val", v)
コード例 #4
0
ファイル: interpreter.py プロジェクト: seishinsha/mist
async def runFinalizers(stack):
    for f in finallyHooks:
        from mist.lang.classes import VarReference
        method = VarReference(None, f[0], [])
        await function_runner(method,
                              args=f[1],
                              stack=f[2],
                              commands=f[3],
                              sourceStream=None,
                              targetStream=None,
                              processArgs=False)
コード例 #5
0
    async def test_returns_function_return_value_when_given_a_function_with_args(
            self, mock_function_runner):
        result = "function_return_value"
        mock_function_runner.return_value = result

        ret = await get_key("myFunc(one, two, three)", [])

        self.assertEqual(result, ret)
        mock_function_runner.assert_called_once_with(
            VarReference(parent=None, id='myFunc', childs=[]), [], None, None,
            ["one", "two", "three"])
コード例 #6
0
    async def test_CustomList_returns_a_list(self):
        class TestObj:
            def __init__(self, k, v):
                self.key = k
                self.value = v

        create_variable("variable", "varValue")
        create_env_var("envvar", "envarValue")
        create_mist_param("param", "paramValue")
        elements = [
            MistObj({"value": 5}),
            MistObj({"value": "strvalue"}),
            MistObj({"value": VarReference(None, "variable", None)}),
            MistObj({"value": EnvVariable(None, "envvar")}),
            MistObj({"value": ExtParameter(None, "param")})
        ]

        cd = CustomList(None, elements)
        d = await cd.getValue(get_mistStack())

        self.assertEqual(
            [5, "strvalue", "varValue", "envarValue", "paramValue"], d)
コード例 #7
0
 if key[0] == '%':
     return params[key[1:]]
 if key[0] == '$':
     return environment[key[1:]]
 if key[0] == ':':
     return key
 if key[-1] == ']':  # List or dictionary reference
     if grs := LDREF_MATCHER.fullmatch(key):
         return await resolve_list_dict_reference(grs.group(1),
                                                  grs.group(2), stack)
     else:
         raise MistException(f"Invalid reference {key}")
 if key[-1] == ')':
     function = key.split('(')[0].strip().split(".")
     from mist.lang.classes import VarReference
     method = VarReference(None, function[0], function[1:])
     args = [
         i.strip() for i in re.sub(' +', ' ',
                                   key.split('(', 1)[1]).rsplit(')', 1)
         [0].strip().split(',')
     ]
     if '=' in args[0]:
         namedArgs = [
             NamedArg(
                 i.split('=', 1)[0].strip(),
                 i.split('=', 1)[1].strip()) for i in args
         ]
         return await function_runner(method, stack, None, None, None,
                                      namedArgs)
     return await function_runner(method, stack, None, None,
                                  [] if args[0] == '' else args)