1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-07-30 22:43:14 +03:00

added entities testing to the Thread test make the test reasonable fix the

* test/threads/*: added entities testing to the Thread test
* testThreads.c: make the test reasonable
* DOCBparser.c: fix the DTD public and system ID
* xmllint.c: added --sgml for SGML DocBook importing
* Makefile.am: added Docbtests target
Daniel
This commit is contained in:
Daniel Veillard
2001-10-22 09:46:13 +00:00
parent 0a702dcab3
commit 89cad536e3
13 changed files with 110 additions and 25 deletions

View File

@ -1,3 +1,11 @@
Mon Oct 22 11:32:36 CEST 2001 Daniel Veillard <daniel@veillard.com>
* test/threads/*: added entities testing to the Thread test
* testThreads.c: make the test reasonable
* DOCBparser.c: fix the DTD public and system ID
* xmllint.c: added --sgml for SGML DocBook importing
* Makefile.am: added Docbtests target
Fri Oct 19 11:47:13 CEST 2001 Daniel Veillard <daniel@veillard.com> Fri Oct 19 11:47:13 CEST 2001 Daniel Veillard <daniel@veillard.com>
* nanoftp.c: use only "anonymous@" string for anonymous passwds * nanoftp.c: use only "anonymous@" string for anonymous passwds

View File

@ -47,6 +47,15 @@
#include <libxml/uri.h> #include <libxml/uri.h>
#include <libxml/globals.h> #include <libxml/globals.h>
/*
* DocBook XML current versions
*/
#define XML_DOCBOOK_XML_PUBLIC (const xmlChar *) \
"-//OASIS//DTD DocBook XML V4.1.2//EN"
#define XML_DOCBOOK_XML_SYSTEM (const xmlChar *) \
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
/* /*
* Internal description of an SGML entity * Internal description of an SGML entity
*/ */
@ -3554,17 +3563,20 @@ docbParseDocTypeDecl(docbParserCtxtPtr ctxt) {
/* /*
* Create or update the document accordingly to the DOCTYPE * Create or update the document accordingly to the DOCTYPE
* But use the predefined PUBLIC and SYSTEM ID of DocBook XML
*/ */
if ((ctxt->sax != NULL) && (ctxt->sax->internalSubset != NULL) && if ((ctxt->sax != NULL) && (ctxt->sax->internalSubset != NULL) &&
(!ctxt->disableSAX)) (!ctxt->disableSAX))
ctxt->sax->internalSubset(ctxt->userData, name, ExternalID, URI); ctxt->sax->internalSubset(ctxt->userData, name,
XML_DOCBOOK_XML_PUBLIC,
XML_DOCBOOK_XML_SYSTEM);
/* if (RAW != '>') {
* Is there any internal subset declarations ? if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
* they are handled separately in docbParseInternalSubset() ctxt->sax->error(ctxt->userData,
*/ "docbParseDocTypeDecl : internal subset not handled\n");
if (RAW != '[') { } else {
return; NEXT;
} }
/* /*

View File

@ -1,8 +1,5 @@
## Process this file with automake to produce Makefile.in ## Process this file with automake to produce Makefile.in
# Dependancies are fucked in make distcheck could not find why :-(
AUTOMAKE_OPTIONS=no-dependencies
SUBDIRS = include . doc example SUBDIRS = include . doc example
INCLUDES = -I@srcdir@/include -I$(top_builddir)/include @THREAD_CFLAGS@ @Z_CFLAGS@ INCLUDES = -I@srcdir@/include -I$(top_builddir)/include @THREAD_CFLAGS@ @Z_CFLAGS@
@ -226,6 +223,26 @@ XMLtests : xmllint
rm result.$$name result2.$$name ; \ rm result.$$name result2.$$name ; \
fi ; fi ; done) fi ; fi ; done)
Docbtests : xmllint
@(echo > .memdump)
@echo "##"
@echo "## SGML DocBook regression tests"
@echo "##"
@(for i in $(srcdir)/test/DocBook/*.sgm ; do \
name=`basename $$i .sgm`; \
if [ ! -d $$i ] ; then \
if [ ! -f $(srcdir)/result/DocBook/$$name.xml ] ; then \
echo New test file $$name ; \
$(top_builddir)/xmllint --sgml $$i > $(srcdir)/result/DocBook/$$name.xml ; \
$(top_builddir)/xmllint --valid --noout $(srcdir)/result/DocBook/$$name.xml ; \
else \
echo Testing $$name ; \
$(top_builddir)/xmllint --sgml $$i > result.$$name ; \
diff $(srcdir)/result/DocBook/$$name.xml result.$$name ; \
$(top_builddir)/xmllint --valid --noout result.$$name ; \
rm result.$$name ; \
fi ; fi ; done)
XMLenttests : xmllint XMLenttests : xmllint
@(echo > .memdump) @(echo > .memdump)
@echo "##" @echo "##"

View File

@ -1 +1 @@
<!ELEMENT a EMPTY> <!ELEMENT a (#PCDATA)>

View File

@ -1,7 +1,7 @@
<!DOCTYPE abc SYSTEM "http://example.org/abc.dtd"> <!DOCTYPE abc SYSTEM "http://example.org/abc.dtd">
<abc> <abc>
<a/> <a>Let's use predefined entites &amp; &lt; &gt;</a>
<b/> <b>Let's use a DTD defined entity &bent;</b>
<c/> <c/>
</abc> </abc>

View File

@ -1,7 +1,7 @@
<!DOCTYPE acb SYSTEM "http://example.org/acb.dtd"> <!DOCTYPE acb SYSTEM "http://example.org/acb.dtd">
<acb> <acb>
<a/> <a>Let's use predefined entites &amp; &lt; &gt;</a>
<c/> <c/>
<b/> <b>Let's use a DTD defined entity &bent;</b>
</acb> </acb>

View File

@ -1 +1,2 @@
<!ELEMENT b EMPTY> <!ELEMENT b (#PCDATA)>
<!ENTITY bent "the b entity">

View File

@ -1,7 +1,7 @@
<!DOCTYPE bac SYSTEM "http://example.org/bac.dtd"> <!DOCTYPE bac SYSTEM "http://example.org/bac.dtd">
<bac> <bac>
<b/> <b>Let's use a DTD defined entity &bent;</b>
<a/> <a>Let's use predefined entites &amp; &lt; &gt;</a>
<c/> <c/>
</bac> </bac>

View File

@ -1,7 +1,7 @@
<!DOCTYPE bca SYSTEM "http://example.org/bca.dtd"> <!DOCTYPE bca SYSTEM "http://example.org/bca.dtd">
<bca> <bca>
<b/> <b>Let's use a DTD defined entity &bent;</b>
<c/> <c/>
<a/> <a>Let's use predefined entites &amp; &lt; &gt;</a>
</bca> </bca>

View File

@ -1,7 +1,7 @@
<!DOCTYPE cab SYSTEM "http://example.org/cab.dtd"> <!DOCTYPE cab SYSTEM "http://example.org/cab.dtd">
<cab> <cab>
<c/> <c/>
<a/> <a>Let's use predefined entites &amp; &lt; &gt;</a>
<b/> <b>Let's use a DTD defined entity &bent;</b>
</cab> </cab>

View File

@ -1,7 +1,7 @@
<!DOCTYPE cba SYSTEM "http://example.org/cba.dtd"> <!DOCTYPE cba SYSTEM "http://example.org/cba.dtd">
<cba> <cba>
<c/> <c/>
<b/> <b>Let's use a DTD defined entity &bent;</b>
<a/> <a>Let's use predefined entites &amp; &lt; &gt;</a>
</cba> </cba>

View File

@ -90,7 +90,7 @@ main()
int ret; int ret;
xmlInitParser(); xmlInitParser();
for (repeat = 0;repeat < 10000;repeat++) { for (repeat = 0;repeat < 500;repeat++) {
xmlLoadCatalog(catalog); xmlLoadCatalog(catalog);
for (i = 0; i < num_threads; i++) { for (i = 0; i < num_threads; i++) {

View File

@ -68,6 +68,9 @@
#ifdef LIBXML_CATALOG_ENABLED #ifdef LIBXML_CATALOG_ENABLED
#include <libxml/catalog.h> #include <libxml/catalog.h>
#endif #endif
#ifdef LIBXML_DOCB_ENABLED
#include <libxml/DOCBparser.h>
#endif
#include <libxml/globals.h> #include <libxml/globals.h>
#ifdef LIBXML_DEBUG_ENABLED #ifdef LIBXML_DEBUG_ENABLED
@ -86,6 +89,9 @@ static char * dtdvalid = NULL;
static int repeat = 0; static int repeat = 0;
static int insert = 0; static int insert = 0;
static int compress = 0; static int compress = 0;
#ifdef LIBXML_DOCB_ENABLED
static int sgml = 0;
#endif
static int html = 0; static int html = 0;
static int htmlout = 0; static int htmlout = 0;
static int push = 0; static int push = 0;
@ -412,6 +418,38 @@ static void parseAndPrintFile(char *filename) {
xmlDocSetRootElement(doc, n); xmlDocSetRootElement(doc, n);
} }
} }
#ifdef LIBXML_DOCB_ENABLED
/*
* build an SGML tree from a string;
*/
else if ((sgml) && (push)) {
FILE *f;
f = fopen(filename, "r");
if (f != NULL) {
int res, size = 3;
char chars[4096];
docbParserCtxtPtr ctxt;
/* if (repeat) */
size = 4096;
res = fread(chars, 1, 4, f);
if (res > 0) {
ctxt = docbCreatePushParserCtxt(NULL, NULL,
chars, res, filename, 0);
while ((res = fread(chars, 1, size, f)) > 0) {
docbParseChunk(ctxt, chars, res, 0);
}
docbParseChunk(ctxt, chars, 0, 1);
doc = ctxt->myDoc;
docbFreeParserCtxt(ctxt);
}
fclose(f);
}
} else if (sgml) {
doc = docbParseFile(filename, NULL);
}
#endif
#ifdef LIBXML_HTML_ENABLED #ifdef LIBXML_HTML_ENABLED
else if (html) { else if (html) {
doc = htmlParseFile(filename, NULL); doc = htmlParseFile(filename, NULL);
@ -789,6 +827,9 @@ static void usage(const char *name) {
printf("\t--repeat : repeat 100 times, for timing or profiling\n"); printf("\t--repeat : repeat 100 times, for timing or profiling\n");
printf("\t--insert : ad-hoc test for valid insertions\n"); printf("\t--insert : ad-hoc test for valid insertions\n");
printf("\t--compress : turn on gzip compression of output\n"); printf("\t--compress : turn on gzip compression of output\n");
#ifdef LIBXML_DOCB_ENABLED
printf("\t--sgml : use the DocBook SGML parser\n");
#endif
#ifdef LIBXML_HTML_ENABLED #ifdef LIBXML_HTML_ENABLED
printf("\t--html : use the HTML parser\n"); printf("\t--html : use the HTML parser\n");
#endif #endif
@ -856,6 +897,12 @@ main(int argc, char **argv) {
else if ((!strcmp(argv[i], "-htmlout")) || else if ((!strcmp(argv[i], "-htmlout")) ||
(!strcmp(argv[i], "--htmlout"))) (!strcmp(argv[i], "--htmlout")))
htmlout++; htmlout++;
#ifdef LIBXML_DOCB_ENABLED
else if ((!strcmp(argv[i], "-sgml")) ||
(!strcmp(argv[i], "--sgml"))) {
sgml++;
}
#endif
#ifdef LIBXML_HTML_ENABLED #ifdef LIBXML_HTML_ENABLED
else if ((!strcmp(argv[i], "-html")) || else if ((!strcmp(argv[i], "-html")) ||
(!strcmp(argv[i], "--html"))) { (!strcmp(argv[i], "--html"))) {