summaryrefslogtreecommitdiff
path: root/tests/scanner
Commit message (Collapse)AuthorAgeFilesLines
* regress: Fix regress_test_torture_signature_2() to actually call the callbackMartin Pitt2014-01-141-0/+1
| | | | This provides a test case for https://bugzilla.gnome.org/show_bug.cgi?id=722104
* scanner: Replace GInitiallyUnowned field sharing with generic solutionSimon Feltman2014-01-041-4/+4
| | | | | | | | | | | | Remove GInitiallyUnowned special case in gdumpparser where fields are copied from GObject. Add generic solution where anytime we have multiple typedef structs, the fields become shared: typedef struct _Foo Foo; typedef struct _Foo Bar; struct _Foo {...}; https://bugzilla.gnome.org/show_bug.cgi?id=581525
* scanner: Fix parsing for various typedef struct orderingsSimon Feltman2014-01-042-4/+0
| | | | | | | | | Add structs parsed from C's "tag namespace" into their own cache for lookup by typdef parsing. This fixes issues where a typedef declared after a struct would not have a correct name. This also cleans up the need for special casing struct tags prefixed with an underscore. https://bugzilla.gnome.org/show_bug.cgi?id=581525
* tests: Update GI to use parallel test harnessSimon Feltman2014-01-042-4/+4
| | | | | | | | There was some dependence on the serial test harness in the recent tests that were added. Update GI to use the parallel test harness to avoid incompatibilities. https://bugzilla.gnome.org/show_bug.cgi?id=721477
* tests: Add transformer tests for callback typedefsSimon Feltman2014-01-021-0/+16
| | | | | | Add a basic transformer unittest for callback typedefs. https://bugzilla.gnome.org/show_bug.cgi?id=581525
* tests: Add nested union unittestsSimon Feltman2014-01-021-0/+85
| | | | | | | Add a sub-set of tests found in struct testing as only basic validation is needed due to the shared code paths. https://bugzilla.gnome.org/show_bug.cgi?id=581525
* tests: Add nested struct tests for transformerSimon Feltman2014-01-021-0/+107
| | | | | | Add tests for nested structs as they pass through the transformer. https://bugzilla.gnome.org/show_bug.cgi?id=581525
* tests: Add transformer typedef struct testsSimon Feltman2014-01-022-1/+243
| | | | | | | | | Add tests for various combinations of struct tags and typedefs. This includes tests for orderings of a typedef prior to struct definition, reversed, all in one, and multiple typdefs. The currently failing tests have been marked as "expectedFailure" so the test suite doesn't bail out. https://bugzilla.gnome.org/show_bug.cgi?id=581525
* scanner: Fix get_symbols/comments to maintain the scanner listsSimon Feltman2014-01-022-1/+46
| | | | | | | | | | | | Use g_slist_copy prior to returning the lists run through g_slist_reverse. This preserves the source scanners internally held lists where previously they would only point to a single element after a call, leaking memory and breaking subsequent calls. Note the functions as (transfer container) and use g_slist_free after calls in the Python bindings. Add new unittest file: test_sourcescanner.py for isolated unittesting of the SourceScanner. https://bugzilla.gnome.org/show_bug.cgi?id=581525
* tests: Add tests for various struct typedef combinationsSimon Feltman2014-01-024-0/+258
| | | | | | | | | Add functional blackbox tests typedefs.[h|c] for various struct typedef orderings. Use XFAIL_TESTS with the new Typedefs-1.0.gir target. This allows for a differing expected gir that does not cause the suite to fail but rather a goal to work towards. https://bugzilla.gnome.org/show_bug.cgi?id=581525
* tests: Use Python unittest module parameterization for annotationparserSimon Feltman2013-12-292-58/+70
| | | | | | | | | | | | | | Add Python unittest module parameterization support to gi-tester through the use of a "TESTARGS" variable. Use the Automake test harness along with gi-tester for running the Python annotationparser tests. Add tests/scanner/annotationparser/Makefile.am and localize testing rules and EXTRA_DIST setup to this file. Specific Python tests can now be run as follows: cd tests/scanner/annotationparser make check TESTS=test_patterns.py TESTARGS=TestTagValueStability https://bugzilla.gnome.org/show_bug.cgi?id=720713
* tests: Refactor test_parser and test_patterns to use unittest.TestSuiteSimon Feltman2013-12-292-50/+119
| | | | | | | | | | | | | Update both test_parser.py and test_patterns.py to dynamically generate TestCase sub-classes rather than modify a statically defined one. Use unittest.TestSuite to queue up the generated test cases via the "load_tests" hook. Use underscores instead of periods as a seperator for dynamically generated test cases and methods to match Python identifiers. Beyond general cleanup, these changes will help the ability to specify Python tests individually. https://bugzilla.gnome.org/show_bug.cgi?id=720713
* tests: Use EXTRA_LTLIBRARIES instead of check_LTLIBRARIESSimon Feltman2013-12-291-3/+7
| | | | | | | | Update tests/Makefile.am and tests/scanner/Makefile.am to use EXTRA_LTLIBRARIES which minimizes the building of libraries to only dependencies of specific tests when using: make check TESTS="..." https://bugzilla.gnome.org/show_bug.cgi?id=720713
* tests: Use Automake test harness for scanner diff testsSimon Feltman2013-12-292-20/+30
| | | | | | | | | | | | | | | | | | | Add gi-tester script for dispatching various scanner diff tests based on their target suffix. Hook the dispatcher script into the Automake test harness which is passed the diff test target name. Remove usage of check-local which is always run regardless of whether or not the TESTS variable is set from the command line. This allows for both the ability to use the harnesses XFAIL_TESTS variable for expected failures as well as testing of targets individually, for example: cd tests/scanner make check TESTS=GtkFrob-1.0.gir make check TESTS=Regress-1.0-Python Add Headeronly-1.0-expected.gir for validating the results of the header only gir creation test. https://bugzilla.gnome.org/show_bug.cgi?id=720713
* scanner: Support boolean constantsFlorian Müllner2013-11-292-0/+4
| | | | | | | | Aliasing TRUE or FALSE is not very common, but done occasionally for extra clarity. Namely G_SOURCE_REMOVE / G_SOURCE_CONTINUE are self-explanatory, unlike the "raw" booleans. https://bugzilla.gnome.org/show_bug.cgi?id=719566
* scanner: Don't barf on anonymous unionsColin Walters2013-10-308-0/+182
| | | | | | | | I'd like to be able to use this inside GTK+. See: https://bugzilla.gnome.org/show_bug.cgi?id=711153 https://bugzilla.gnome.org/show_bug.cgi?id=711157
* giscanner: Test fixups for field annotations and documentationStef Walter2013-10-283-0/+51
| | | | Related to: https://bugzilla.gnome.org/show_bug.cgi?id=710561
* giscanner: Include field documentationStef Walter2013-10-281-0/+3
| | | | | | Structure field documentation was not being included in the gir file. https://bugzilla.gnome.org/show_bug.cgi?id=710562
* giscanner: Correctly consume field annotations on structsStef Walter2013-10-283-0/+54
| | | | | | | | A hidden exception was being thrown (which we now log), due to fields being treated as function parameters. Fixed to make field array annotations be transformed and written out to the gir correctly. https://bugzilla.gnome.org/show_bug.cgi?id=710561
* giscanner: Respect __GI_SCANNER__ when scanning for macrosStef Walter2013-10-212-0/+22
| | | | | | | | | When scanning for macros respect ifdefs of __GI_SCANNER__ in the various header files. Only #ifdef and #ifndef are supported. If __GI_SCANNER__ appears in plain #if statements, a warning is printed. https://bugzilla.gnome.org/show_bug.cgi?id=698367
* tests: interesting annotationparser test caseDieter Verfaillie2013-10-091-0/+167
| | | | | | | | | GTK-Doc has trouble parsing multiline parameter description fields if the first word of a continuation line is "returns". We're already doing the right thing but make sure we continue to do so in the future https://bugzilla.gnome.org/show_bug.cgi?id=708445
* tests: prevent warnings with some make implementationsDieter Verfaillie2013-10-091-8/+4
| | | | | | some make implementations don't like empty $(AM_V_GEN) rule commands, see http://lists.gnu.org/archive/html/bug-coreutils/2009-04/msg00251.html for more info.
* giscanner: write '<varargs/>' instead of '<varargs></varargs>'Dieter Verfaillie2013-10-082-8/+4
|
* giscanner: fix c0e748e1cdf8cf0803266f94c3c5ad154df504a8Dieter Verfaillie2013-10-081-0/+2
| | | | | | | | | | | When encountering /**/ in the source, parse_gtk_doc_comment() would be executed (due to the /** part starting a GTK-Doc comment block) and would happily consume the / and everything up until the next comment block was closed or EOF, thus consuming a whole block of C code... Encoutered in the wild here: https://git.gnome.org/browse/clutter-gst/tree/clutter-gst/clutter-gst-player.c?id=03f0d8f48bd7f60e582e6185cb73a07038e8d55d#n1926
* giscanner: complain about text before the ' * 'Dieter Verfaillie2013-10-082-11/+14
| | | | | | Makes our GTK-Doc comment block rewriting tool halt on such issues, requireing user intervention instead of writing back even more bogus data.
* giscanner: write virtual method instance parameter docs to .gir fileDieter Verfaillie2013-10-089-4/+133
|
* docs: document some annotationparser.py hacking hintsDieter Verfaillie2013-10-081-11/+11
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=688897
* tests: sync with GTK-Doc test suite @ 1846fc7e904f6f56b74c366d205d6bb946eac17eDieter Verfaillie2013-10-084-9/+132
|
* giscanner: don't generate synthetic names for '...' parameterDieter Verfaillie2013-10-082-3/+3
| | | | tests/warn/unkown-parameter.h:41 still passes with this...
* giscanner: refactor GTK-Doc comment block serializationDieter Verfaillie2013-10-0855-92/+2338
|
* giscanner: add missing testsDieter Verfaillie2013-10-0821-9/+2298
|
* giscanner: make some warnings errorsDieter Verfaillie2013-10-087-12/+12
| | | | | | | GTK-Doc comment block fixer tool will refuse to rewrite source files that generated errors (indicating a source->parse tree->source would result in information being lost), but will happily continue on warnings (which do not result in information being lost).
* giscanner: honor line and paragraph breaks in description fieldsDieter Verfaillie2013-10-0824-33/+155
| | | | | | | | | GTK-Doc parameter description fields are allowed to span multiple lines, tag description fields are allowed to span multiple lines and paragraphs. A tool fixing/rewriting GTK-Doc comment blocks in source files would need to have description fields parsed and stored (almost) exactly as they appear in the source file.
* giscanner: improve state trackingDieter Verfaillie2013-10-084-67/+10
|
* giscanner: store indentation before the '*' of each lineDieter Verfaillie2013-10-081-0/+19
|
* giscanner: fix description field storage in .gir filesDieter Verfaillie2013-10-082-7/+16
| | | | | | | | | | | | | | | | | | GTK-Doc description fields for tags can contain multiple lines and even multiple paragraphs. Whitespace cannot be preserved in XML attributes, so we move the "deprecated" description text into a "<doc-deprecated />" element right next to where we already have the "<doc />" element. Keep the "deprecated" attribute around for backwards compatibility though, but set its value to "1" (analogous to the "writable", "contruct", etc attributes) if the annotated symbol is marked as deprecated. While at it, add <doc-version /> and <doc-stability /> which was not yet available in the .gir files... This takes care of the "Since:", "Stability:" and "Deprecated:" GTK-Doc tags. Nothing needs to be done for the "Returns:" tag as as we already write a "<doc />" child element on "<return-value />".
* giscanner: store code before and after comment blockDieter Verfaillie2013-10-082-58/+220
| | | | | | so we can later use them to re-write source files containing broken GTK-Doc comment blocks where /** is preceded by and/or */ is followed by code...
* giscanner: refactor annotation validationDieter Verfaillie2013-10-081-0/+32
| | | | | | | | - annotations on the identifier (formerly g-i specific tags) have never been validated before, so fix this - removes duplicate validation code from GtkDocTag and GtkDocParameter - remove repeated validation code doing the same thing as annotationparser from maintransformer...
* giscanner: give parameters their own storage classDieter Verfaillie2013-10-081-2/+2
|
* giscanner: deprecate GObject-Introspection GTK-Doc tagsDieter Verfaillie2013-10-0813-109/+952
| | | | | | | | | | | | | | | | | | | | | After discussing a different issue with the GTK-Doc maintainers, we learned that our g-i specific top level tags should never have existed in the first place. The prefered notation for annotations that apply to the identifier should be written on the identifier line, for example like what we already do with (skip). As a result, this patch deprecates g-i specific top level tags and implements them as annotations on the identifier instead but still keeps support for malformed comment blocks using g-i specific top level tags. This means that all annotated code "out there" will continue to work just fine with this version of g-i, but when a developer decides to fix deprecation warnings in his/her comment blocks, the dependency on g-i needs to be raised to a version that contains at least this patch. #676133 https://bugzilla.gnome.org/show_bug.cgi?id=676133
* giscanner: flesh out annotation parsing and storageDieter Verfaillie2013-10-0812-184/+564
| | | | | | | | | | - remove annotations regex, restore proper parens parsing - drop weird DocOption() storage class and use lists/dicts as appropriate - make GtkDocAnnotations a simple OrderedDict subclass instead of a weird hybrid dict/list storage class - Deprecate Attribute: tag, replace with (attributes) annotation on the identifier
* giscanner: extract tag valuesDieter Verfaillie2013-10-0821-41/+120
|
* giscanner: remove unused GtkDocCommentBlock.valueDieter Verfaillie2013-10-081-2/+2
|
* giscanner: fix GTK-Doc section parsingDieter Verfaillie2013-10-081-12/+6
|
* giscanner: fix GTK-Doc identifier parsingDieter Verfaillie2013-10-081-3/+16
| | | | | | No need to track what type of identifier we've found as we don't use that information later on. Continue searching for an identifier if it's not found on the first line like gtkdoc-mkdb does.
* giscanner: rename DocBlock to GtkDocCommentBlockDieter Verfaillie2013-10-081-2/+2
| | | | | and move it downwards after DocTag, DocOptions etc for easier reading
* giscanner: restore support for 'Return:' and 'Returns value:' tagsDieter Verfaillie2013-10-081-0/+102
| | | | | Accepted by old version of annotationparser.py and actually encountered in the wild. Internaly normalize to 'Returns:'.
* giscanner: only warn about missing delimiter when necessaryDieter Verfaillie2013-10-082-21/+0
| | | | | | | | Turns out gtkdoc-mkdb has always accepted identifier parts with and without a delimiter after the identifier_name field, so it is safe to only require it when annotations are present or in other words, when there are actually multiple fields to be seperated...
* giscanner: give message.ERROR a purposeDieter Verfaillie2013-10-081-2/+2
| | | | | | | | | | | | | | | | | | | It's not yet being used but will be in the future by annotationparser.py to signal the difference between message.WARNING: something is wrong but the comment block can still be parsed and serialized back into a comment block without information being lost message.ERROR: something is wrong and the comment block can *not* be parsed and serialized back into a comment block without information being lost Different tools can then act accordingly. Nothing will change for g-ir-scanner but this will be important for the GTK-Doc comment block rewriting tool to prevent extremely broken input leading to even more broken output...
* giscanner: complete vararg parameter parsingDieter Verfaillie2013-10-082-0/+237
| | | | | | | | | | Normalize deprecated @Varargs [1] and named __VA_ARGS__ [2] notations in as single location, add tests. Remove special casing in maintransformer as it is no longer a special case (tests/warn/unknown-parameter.h passes). [1] https://git.gnome.org/browse/gtk-doc/commit/gtkdoc-mkdb.in?id=4c9d4db0e264d403b301dad9be1c290134846d03 [1] https://git.gnome.org/browse/gtk-doc/commit/gtkdoc-mkdb.in?id=55c78181d6ae1606bdf7885e9caed70a484127ec