mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-24 13:33:01 +03:00
tests: Rework testapi.c
Only test NULL and 0 arguments which is the only useful test from my experience. Use ElementTree instead of libxml2's own Python bindings in gentest.py. Stop using the <cond> element in libxml2-api.xml. Look up modules required by symbols using separate code in xmlmod.py, preparing for the eventual removal of apibuild.py.
This commit is contained in:
@@ -18,11 +18,10 @@ The documentation and other generated files can be rebuilt by running
|
|||||||
|
|
||||||
make -C doc rebuild
|
make -C doc rebuild
|
||||||
|
|
||||||
This requires `xsltproc`, the DocBook stylesheets in your XML Catalog
|
Besides Python, this requires `xsltproc` and the DocBook stylesheets in
|
||||||
and the libxml2 Python bindings to be installed, so it's best done on a
|
your XML Catalog. On Debian/Ubuntu, try
|
||||||
Linux system. On Debian/Ubuntu, try
|
|
||||||
|
|
||||||
apt install xsltproc python3-libxml2 docbook-xsl docbook-xml
|
apt install xsltproc docbook-xsl docbook-xml
|
||||||
|
|
||||||
doc/apibuild.py generates doc/libxml2-api.xml which is used to generate
|
doc/apibuild.py generates doc/libxml2-api.xml which is used to generate
|
||||||
|
|
||||||
|
|||||||
1156
tools/gentest.py
Executable file → Normal file
1156
tools/gentest.py
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
141
tools/xmlmod.py
Normal file
141
tools/xmlmod.py
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
# Symbol to module mapping
|
||||||
|
#
|
||||||
|
# This relies on a few tables and some regexes.
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
moduleMap = {
|
||||||
|
'HTMLtree': 'HTML',
|
||||||
|
'HTMLparser': 'HTML',
|
||||||
|
'c14n': 'C14N',
|
||||||
|
'catalog': 'CATALOG',
|
||||||
|
'debugXML': 'DEBUG',
|
||||||
|
'nanohttp': 'HTTP',
|
||||||
|
'pattern': 'PATTERN',
|
||||||
|
'relaxng': 'RELAXNG',
|
||||||
|
'schemasInternals': 'SCHEMAS',
|
||||||
|
'schematron': 'SCHEMATRON',
|
||||||
|
'xinclude': 'XINCLUDE',
|
||||||
|
'xlink': 'XPTR',
|
||||||
|
'xmlautomata': 'REGEXP',
|
||||||
|
'xmlmodule': 'MODULES',
|
||||||
|
'xmlreader': 'READER',
|
||||||
|
'xmlregexp': 'REGEXP',
|
||||||
|
'xmlsave': 'OUTPUT',
|
||||||
|
'xmlschemas': 'SCHEMAS',
|
||||||
|
'xmlschemastypes': 'SCHEMAS',
|
||||||
|
'xmlwriter': 'WRITER',
|
||||||
|
'xpath': 'XPATH',
|
||||||
|
'xpathInternals': 'XPATH',
|
||||||
|
'xpointer': 'XPTR',
|
||||||
|
}
|
||||||
|
|
||||||
|
symbolMap1 = {
|
||||||
|
# not VALID
|
||||||
|
'xmlValidateNCName': '',
|
||||||
|
'xmlValidateNMToken': '',
|
||||||
|
'xmlValidateName': '',
|
||||||
|
'xmlValidateQName': '',
|
||||||
|
|
||||||
|
'htmlDefaultSAXHandlerInit': 'HTML',
|
||||||
|
'xmlSAX2InitHtmlDefaultSAXHandler': 'HTML',
|
||||||
|
|
||||||
|
'xmlRegisterHTTPPostCallbacks': 'HTTP',
|
||||||
|
|
||||||
|
'xmlAttrSerializeTxtContent': 'OUTPUT',
|
||||||
|
'xmlUTF8ToIsolat1': 'OUTPUT',
|
||||||
|
'xmlSprintfElementContent': 'OUTPUT',
|
||||||
|
|
||||||
|
'xmlCreatePushParserCtxt': 'PUSH',
|
||||||
|
'xmlParseChunk': 'PUSH',
|
||||||
|
|
||||||
|
'xmlParseBalancedChunkMemory': 'SAX1',
|
||||||
|
'xmlParseBalancedChunkMemoryRecover': 'SAX1',
|
||||||
|
'xmlParseDoc': 'SAX1',
|
||||||
|
'xmlParseEntity': 'SAX1',
|
||||||
|
'xmlParseExternalEntity': 'SAX1',
|
||||||
|
'xmlParseFile': 'SAX1',
|
||||||
|
'xmlParseMemory': 'SAX1',
|
||||||
|
'xmlSAXDefaultVersion': 'SAX1',
|
||||||
|
'xmlSetupParserForBuffer': 'SAX1',
|
||||||
|
|
||||||
|
'xmlCtxtGetValidCtxt': 'VALID',
|
||||||
|
'xmlFreeValidCtxt': 'VALID',
|
||||||
|
'xmlNewValidCtxt': 'VALID',
|
||||||
|
}
|
||||||
|
|
||||||
|
symbolMap2 = {
|
||||||
|
# not OUTPUT (should be fixed in xmlIO.h)
|
||||||
|
'xmlOutputBufferCreateFilenameDefault': '',
|
||||||
|
|
||||||
|
'xmlXPathDebugDumpCompExpr': 'DEBUG',
|
||||||
|
'xmlXPathDebugDumpObject': 'DEBUG',
|
||||||
|
'xmlSchemaDump': 'DEBUG',
|
||||||
|
|
||||||
|
'xmlACatalogDump': 'OUTPUT',
|
||||||
|
'xmlCatalogDump': 'OUTPUT',
|
||||||
|
'xmlIOHTTPOpenW': 'OUTPUT',
|
||||||
|
'xmlNanoHTTPSave': 'OUTPUT',
|
||||||
|
'xmlRegisterHTTPPostCallbacks': 'OUTPUT',
|
||||||
|
'xmlRelaxNGDump': 'OUTPUT',
|
||||||
|
'xmlRelaxNGDumpTree': 'OUTPUT',
|
||||||
|
|
||||||
|
'xmlTextReaderPreservePattern': 'PATTERN',
|
||||||
|
|
||||||
|
'htmlCreatePushParserCtxt': 'PUSH',
|
||||||
|
'htmlParseChunk': 'PUSH',
|
||||||
|
|
||||||
|
'xmlValidBuildContentModel': 'REGEXP',
|
||||||
|
'xmlValidatePopElement': 'REGEXP',
|
||||||
|
'xmlValidatePushCData': 'REGEXP',
|
||||||
|
'xmlValidatePushElement': 'REGEXP',
|
||||||
|
|
||||||
|
'xmlTextReaderRelaxNGSetSchema': 'RELAXNG',
|
||||||
|
'xmlTextReaderRelaxNGValidate': 'RELAXNG',
|
||||||
|
'xmlTextReaderRelaxNGValidateCtxt': 'RELAXNG',
|
||||||
|
|
||||||
|
'xmlTextReaderSchemaValidate': 'SCHEMAS',
|
||||||
|
'xmlTextReaderSchemaValidateCtxt': 'SCHEMAS',
|
||||||
|
'xmlTextReaderSetSchema': 'SCHEMAS',
|
||||||
|
|
||||||
|
'xmlTextReaderReadInnerXml': 'WRITER',
|
||||||
|
'xmlTextReaderReadOuterXml': 'WRITER',
|
||||||
|
}
|
||||||
|
|
||||||
|
outputRegex = '|'.join((
|
||||||
|
'^(html|xml(Buf)?)(Doc(Content|Format)?|Elem|Node)Dump',
|
||||||
|
'^(html|xml)Save(Format)?File',
|
||||||
|
'^xmlDump.*(Decl|Table)',
|
||||||
|
'^xml(Alloc)?OutputBuffer',
|
||||||
|
'^xml.*OutputCallbacks',
|
||||||
|
))
|
||||||
|
|
||||||
|
def findModules(filename, symbol):
|
||||||
|
module1 = symbolMap1.get(symbol)
|
||||||
|
|
||||||
|
if module1 is None:
|
||||||
|
module1 = moduleMap.get(filename)
|
||||||
|
|
||||||
|
if module1 is None:
|
||||||
|
if re.search('^xml(Ctxt)?Valid|Parse(DTD|Dtd)', symbol):
|
||||||
|
module1 = 'VALID'
|
||||||
|
elif re.search('^xml(Recover|SAX(User)?Parse)', symbol):
|
||||||
|
module1 = 'SAX1'
|
||||||
|
elif re.search('^xmlIOHTTP', symbol):
|
||||||
|
module1 = 'HTTP'
|
||||||
|
|
||||||
|
module2 = symbolMap2.get(symbol)
|
||||||
|
|
||||||
|
if module2 is None:
|
||||||
|
if re.search(outputRegex, symbol):
|
||||||
|
if module1 is None:
|
||||||
|
module1 = 'OUTPUT'
|
||||||
|
else:
|
||||||
|
module2 = 'OUTPUT'
|
||||||
|
|
||||||
|
if module1 is None:
|
||||||
|
module1 = ''
|
||||||
|
if module2 is None:
|
||||||
|
module2 = ''
|
||||||
|
|
||||||
|
return module1, module2
|
||||||
Reference in New Issue
Block a user