Exemplo n.º 1
0
 def add_comparison(self, modulename, label, node):
     base_call = ast.copy_location(self.get_recorder_call(), node)
     base_call.args = \
         [node,
          ast.Str(s=modulename, lineno=node.lineno, col_offset=node.col_offset),
          ast.Str(s=label, lineno=node.lineno, col_offset=node.col_offset)]
     ast.fix_missing_locations(base_call)
     return base_call
Exemplo n.º 2
0
 def add_BoolOp(self, modulename, label, node, pragmas, parent):
     # Now wrap the individual values in recorder calls
     base_call = self.get_recorder_call()
     base_call.args = \
         [ast.Str(s=modulename, lineno=node.lineno, col_offset=node.col_offset),
          ast.Str(s=label, lineno=node.lineno, col_offset=node.col_offset)]
     for i, value in enumerate(node.values):
         recorder_call = deepcopy(base_call)
         recorder_call.args.insert(0, node.values[i])
         recorder_call.args.append(
             ast.copy_location(ast.Num(n=i), node.values[i]))
         node.values[i] = ast.copy_location(recorder_call, node.values[i])
     ast.fix_missing_locations(node)
     return node
Exemplo n.º 3
0
 def test_construct_with_literal(self):
     recorder = ExecutionRecorder.get()
     node = ast.BoolOp(op=ast.Or(),
                       values=[ast.Name(id="foo"),
                               ast.Str(s='""')],
                       lineno=1,
                       col_offset=0)
     recorder.add_BoolOp('somemodule', '1.1', node, [], None)
Exemplo n.º 4
0
 def test_add_a_non_BoolOp(self):
     recorder = ExecutionRecorder.get()
     node = ast.BoolOp(op=4,
                       values=[ast.Name(id="foo"),
                               ast.Str(s='""')],
                       lineno=1,
                       col_offset=0)
     try:
         recorder.add_BoolOp('somemodule', node, [], None)
     except TypeError as exc:
         assert "BoolOp" in str(exc), exc
Exemplo n.º 5
0
    def test_serialize_Comparison(self):
        from instrumental.constructs import Comparison

        node = ast.Compare(left=ast.Name(id="a"),
                           ops=[ast.NotEq()],
                           comparators=[ast.Str(s="foobar")],
                           lineno=4)
        construct = Comparison('somemodule', '4.2', node, [])

        serializer = self._makeOne()
        actual = serializer.dump(construct)
        expected = "Comparison|somemodule|4.2|Compare'4'Name{a};NotEq;Str{Zm9vYmFy}||False:;True:"
        assert actual == expected, (actual, expected)
Exemplo n.º 6
0
 def get_statement_recorder_call(modulename, lineno):
     kall = ast.Call()
     kall.func = ast.Attribute(value=ast.Name(id="_xxx_recorder_xxx_",
                                              ctx=ast.Load()),
                               attr="record_statement",
                               ctx=ast.Load())
     kall.args = [
         ast.Str(s=modulename),
         ast.Num(n=lineno),
     ]
     kall.keywords = []
     kall_stmt = ast.Expr(value=kall)
     return kall_stmt