Exemple #1
0
                def test(self):
                    with open(input_file, 'r') as handle:
                        src = handle.read()
                    t = ast_utils.parse(src, py_ver)
                    annotator = annotate.get_ast_annotator(py_ver)(src)
                    annotator.visit(t)

                    def escape(s):
                        return '' if s is None else s.replace('\n', '\\n')

                    result = '\n'.join(
                        '{0:12} {1:20} \tprefix=|{2}|\tsuffix=|{3}|\tindent=|{4}|'
                        .format(
                            str((getattr(n, 'lineno', -1),
                                 getattr(n, 'col_offset', -1))),
                            type(n).__name__ + ' ' + _get_node_identifier(n),
                            escape(fmt.get(n, 'prefix')),
                            escape(fmt.get(n, 'suffix')),
                            escape(fmt.get(n, 'indent')))
                        for n in pasta.ast_walk(t, py_ver)) + '\n'

                    # If specified, write the golden data instead of checking it
                    if getattr(self, 'generate_goldens', False):
                        return

                    try:
                        with io.open(golden_file, 'r', encoding='UTF-8') as f:
                            golden = f.read()
                    except IOError:
                        self.fail('Missing golden data.')

                    self.assertMultiLineEqual(golden, result)
Exemple #2
0
      def test(self):
        with open(input_file, 'r') as handle:
          src = handle.read()
        t = ast_utils.parse(src)
        annotator = annotate.AstAnnotator(src)
        annotator.visit(t)

        def escape(s):
          return '' if s is None else s.replace('\n', '\\n')

        result = '\n'.join(
            "{0:12} {1:20} \tprefix=|{2}|\tsuffix=|{3}|".format(
                str((getattr(n, 'lineno', -1), getattr(n, 'col_offset', -1))),
                type(n).__name__ + ' ' + _get_node_identifier(n),
                escape(ast_utils.prop(n, 'prefix')),
                escape(ast_utils.prop(n, 'suffix')))
            for n in ast.walk(t)) + '\n'

        # If specified, write the golden data instead of checking it
        if getattr(self, 'generate_goldens', False):
          if not os.path.isdir(os.path.dirname(golden_file)):
            os.makedirs(os.path.dirname(golden_file))
          with open(golden_file, 'w') as f:
            f.write(result)
          print('Wrote: ' + golden_file)
          return

        try:
          with open(golden_file, 'r') as f:
            golden = f.read()
        except IOError:
          self.fail('Missing golden data.')

        self.assertMultiLineEqual(golden, result)
Exemple #3
0
 def test(self):
   with open(filepath, 'r') as handle:
     src = handle.read()
   t = ast_utils.parse(src)
   annotator = annotate.AstAnnotator(src)
   annotator.visit(t)
   self.assertMultiLineEqual(codegen.to_str(t), src)
   self.assertEqual([], annotator.tokens._parens, 'Unmatched parens')
Exemple #4
0
def parse(src):
  t = ast_utils.parse(src)
  annotator = annotate.AstAnnotator(src)
  annotator.visit(t)
  return t