Example #1
0
    def testLongOptionCommand(self):
        c = castt.CrazyASTTransformer({'o': o})
        t = ayrton.parse("""foo (--long-option=True)""")

        node = c.visit_Call(t.body[0].value)

        self.assertEqual(node.args[0].keywords[0].arg, '--long-option')
        self.check_attrs(node)
Example #2
0
    def testFunctionKeywords(self):
        c = castt.CrazyASTTransformer({'dict': dict, 'o': o})
        t = ast.parse("""dict (a=51)""")

        node = c.visit_Call(t.body[0].value)

        self.assertEqual(len(node.args), 0, ast.dump(node))
        self.assertEqual(len(node.keywords), 1, ast.dump(node))
        self.check_attrs(node)
Example #3
0
    def testFunctionOArgs(self):
        # NOTE: I need to give the implementation for o();
        # otherwise it will also be converted to Command()
        c = castt.CrazyASTTransformer({'o': o})
        t = ast.parse("""dict (o (a=53))""")

        node = c.visit_Call(t.body[0].value)

        self.assertEqual(len(node.args), 1, ast.dump(node))
        self.assertEqual(len(node.keywords), 0, ast.dump(node))
        self.check_attrs(node)
Example #4
0
    def testWithCd(self):
        code = """with cd() as e: pass"""
        t = ast.parse(code)
        self.check_attrs(t.body[0])

        c = castt.CrazyASTTransformer({'o': o, 'cd': cd})
        t = ayrton.parse(code)
        self.check_attrs(t.body[0])

        node = c.visit_With(t.body[0])

        self.assertEqual(node.items[0].context_expr.func.id, 'cd')
        self.check_attrs(node)
Example #5
0
    def testDoubleKeywordCommand(self):
        c = castt.CrazyASTTransformer({'o': o})
        t = ayrton.parse("""foo (p= True, p=False)""")

        node = c.visit_Call(t.body[0].value)

        # Call(func=Call(func=Name(id='Command', ctx=Load()), args=[Str(s='foo')], keywords=[], starargs=None, kwargs=None),
        #      args=[Call(func=Name(id='o', ctx=Load()), args=[], keywords=[keyword(arg='p', value=Name(id='True', ctx=Load()))], starargs=None, kwargs=None),
        #            Call(func=Name(id='o', ctx=Load()), args=[], keywords=[keyword(arg='p', value=Name(id='False', ctx=Load()))], starargs=None, kwargs=None)],
        #      keywords=[], starargs=None, kwargs=None)
        # both arguments have the same name!
        self.assertEqual(
            node.args[0].keywords[0].arg, node.args[1].keywords[0].arg,
            "\n%s\n%s\n" % (ast.dump(node.args[0]), ast.dump(node.args[1])))
        self.check_attrs(node)
Example #6
0
 def setUp(self):
     self.c = castt.CrazyASTTransformer({})
Example #7
0
    def testMinusMinusFunction(self):
        c = castt.CrazyASTTransformer({'o': o, 'dict': dict})
        t = ayrton.parse("""dict (--p=True)""")

        self.assertRaises(SyntaxError, c.visit_Call, t.body[0].value)
Example #8
0
    def testDoubleKeywordFunction(self):
        c = castt.CrazyASTTransformer({'o': o, 'dict': dict})
        t = ayrton.parse("""dict (p=True, p=False)""")

        self.assertRaises(SyntaxError, c.visit_Call, t.body[0].value)