def annotation_main(args): parser = optparse.OptionParser('%prog [options] sources') group = optparse.OptionGroup(parser, "Tool modes, one is required") group.add_option("-e", "--extract", action="store_true", dest="extract", help="Extract annotations from the input files") parser.add_option_group(group) group = get_preprocessor_option_group(parser) group.add_option("-L", "--library-path", action="append", dest="library_paths", default=[], help="directories to search for libraries") group.add_option("", "--pkg", action="append", dest="packages", default=[], help="pkg-config packages to get cflags from") parser.add_option_group(group) options, args = parser.parse_args(args) if not options.extract: raise SystemExit("ERROR: Nothing to do") if options.packages: process_packages(options, options.packages) logger = message.MessageLogger.get(namespace=None) ss = create_source_scanner(options, args) if options.extract: parser = GtkDocCommentBlockParser() writer = GtkDocCommentBlockWriter(indent=False) blocks = parser.parse_comment_blocks(ss.get_comments()) with encode_stdout('utf-8'): print('/' + ('*' * 60) + '/') print('/* THIS FILE IS GENERATED DO NOT EDIT */') print('/' + ('*' * 60) + '/') print('') for block in sorted(blocks.values()): print(writer.write(block)) print('') print('') print('/' + ('*' * 60) + '/') print('/* THIS FILE IS GENERATED DO NOT EDIT */') print('/' + ('*' * 60) + '/') return 0
def annotation_main(args): parser = optparse.OptionParser("%prog [options] sources") group = optparse.OptionGroup(parser, "Tool modes, one is required") group.add_option( "-e", "--extract", action="store_true", dest="extract", help="Extract annotations from the input files" ) parser.add_option_group(group) group = get_preprocessor_option_group(parser) group.add_option( "-L", "--library-path", action="append", dest="library_paths", default=[], help="directories to search for libraries", ) group.add_option( "", "--pkg", action="append", dest="packages", default=[], help="pkg-config packages to get cflags from" ) parser.add_option_group(group) options, args = parser.parse_args(args) if not options.extract: raise SystemExit("ERROR: Nothing to do") if options.packages: process_packages(options, options.packages) logger = message.MessageLogger.get(namespace="") ss = create_source_scanner(options, args) if options.extract: ap = AnnotationParser() blocks = ap.parse(ss.get_comments()) print "/" + ("*" * 60) + "/" print "/* THIS FILE IS GENERATED DO NOT EDIT */" print "/" + ("*" * 60) + "/" print for block in sorted(blocks.values()): print block.to_gtk_doc() print print print "/" + ("*" * 60) + "/" print "/* THIS FILE IS GENERATED DO NOT EDIT */" print "/" + ("*" * 60) + "/" return 0
def check(args): filename = args[0] output = ChunkedIO() namespace = Namespace('Test', '1.0') logger = MessageLogger.get(namespace=namespace, output=output) logger.enable_warnings(True) transformer = Transformer(namespace) transformer.set_include_paths([ os.path.join(top_srcdir, 'gir'), top_builddir, os.path.join(top_builddir, 'gir'), ]) transformer.register_include(Include.from_string('GObject-2.0')) ss = SourceScanner() options = Options() exit_code = process_packages(options, ['gobject-2.0']) if exit_code: sys.exit(exit_code) ss.set_cpp_options(options.cpp_includes, options.cpp_defines, options.cpp_undefines) ss.parse_files([filename]) ss.parse_macros([filename]) transformer.parse(ss.get_symbols()) cbp = GtkDocCommentBlockParser() blocks = cbp.parse_comment_blocks(ss.get_comments()) main = MainTransformer(transformer, blocks) main.transform() final = IntrospectablePass(transformer, blocks) final.validate() emitted_warnings = [w[w.find(':') + 1:] for w in output.getvalue()] expected_warnings = _extract_expected(filename) sortkey = lambda x: int(x.split(':')[0]) expected_warnings.sort(key=sortkey) emitted_warnings.sort(key=sortkey) if len(expected_warnings) != len(emitted_warnings): raise SystemExit("ERROR in '%s': %d warnings were emitted, " "expected %d:\n%s" % (os.path.basename(filename), len(emitted_warnings), len(expected_warnings), _diff(expected_warnings, emitted_warnings))) for emitted_warning, expected_warning in zip(emitted_warnings, expected_warnings): if expected_warning != emitted_warning: raise SystemExit( "ERROR in '%s': expected warning does not match emitted " "warning:\n%s" % (filename, _diff([expected_warning], [emitted_warning])))
def check(args): filename = args[0] output = StringIO() namespace = Namespace("Test", "1.0") logger = MessageLogger.get(namespace=namespace, output=output) logger.enable_warnings(True) transformer = Transformer(namespace) transformer.set_include_paths( [os.path.join(top_srcdir, 'gir'), top_builddir]) transformer.register_include(Include.from_string("GObject-2.0")) ss = SourceScanner() options = Options() exit_code = process_packages(options, ['gobject-2.0']) if exit_code: sys.exit(exit_code) ss.set_cpp_options(options.cpp_includes, options.cpp_defines, options.cpp_undefines) ss.parse_files([filename]) ss.parse_macros([filename]) transformer.parse(ss.get_symbols()) ap = AnnotationParser() blocks = ap.parse(ss.get_comments()) main = MainTransformer(transformer, blocks) main.transform() final = IntrospectablePass(transformer, blocks) final.validate() raw = output.getvalue() if raw.endswith('\n'): raw = raw[:-1] warnings = raw.split('\n') failed_tests = 0 expected_warnings = _extract_expected(filename) if '' in warnings: warnings.remove('') if len(expected_warnings) != len(warnings): raise SystemExit( "ERROR in %r: expected %d warnings, but got %d:\n" "----\nexpected:\n%s\n----\ngot:\n%s\n----" % (os.path.basename(filename), len(expected_warnings), len(warnings), '\n'.join([w[1] for w in expected_warnings]), '\n'.join( [w.split(':', 2)[2][1:] for w in warnings]))) for warning, (sort_key, expected) in zip(warnings, expected_warnings): actual = warning.split(":", 1)[1] if _diff(expected, actual, filename): raise SystemExit("ERROR: tests %r failed" % (filename, ))
def check(args): filename = args[0] output = ChunkedIO() namespace = Namespace('Test', '1.0') logger = MessageLogger.get(namespace=namespace, output=output) logger.enable_warnings((WARNING, ERROR, FATAL)) transformer = Transformer(namespace) transformer.set_include_paths([os.path.join(top_srcdir, 'gir'), top_builddir]) transformer.register_include(Include.from_string('GObject-2.0')) ss = SourceScanner() options = Options() exit_code = process_packages(options, ['gobject-2.0']) if exit_code: sys.exit(exit_code) ss.set_cpp_options(options.cpp_includes, options.cpp_defines, options.cpp_undefines) ss.parse_files([filename]) ss.parse_macros([filename]) transformer.parse(ss.get_symbols()) cbp = GtkDocCommentBlockParser() blocks = cbp.parse_comment_blocks(ss.get_comments()) main = MainTransformer(transformer, blocks) main.transform() final = IntrospectablePass(transformer, blocks) final.validate() emitted_warnings = [w[w.find(':') + 1:] for w in output.getvalue()] expected_warnings = _extract_expected(filename) sortkey = lambda x: int(x.split(':')[0]) expected_warnings.sort(key=sortkey) emitted_warnings.sort(key=sortkey) if len(expected_warnings) != len(emitted_warnings): raise SystemExit("ERROR in '%s': %d warnings were emitted, " "expected %d:\n%s" % (os.path.basename(filename), len(emitted_warnings), len(expected_warnings), _diff(expected_warnings, emitted_warnings))) for emitted_warning, expected_warning in zip(emitted_warnings, expected_warnings): if expected_warning != emitted_warning: raise SystemExit("ERROR in '%s': expected warning does not match emitted " "warning:\n%s" % (filename, _diff([expected_warning], [emitted_warning])))