mirror of
https://github.com/GNOME/libxml2.git
synced 2025-05-09 05:11:41 +08:00
tests: Remove unneeded error formatting code
This commit is contained in:
parent
2a2fbe1e5b
commit
3874e5d0ea
266
testlimits.c
266
testlimits.c
@ -389,271 +389,9 @@ testExternalEntityLoader(const char *URL, const char *ID,
|
|||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Trapping the error messages at the generic level to grab the equivalent of
|
|
||||||
* stderr messages on CLI tools.
|
|
||||||
*/
|
|
||||||
static char testErrors[32769];
|
|
||||||
static int testErrorsSize = 0;
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
channel(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) {
|
testStructuredErrorHandler(void *ctx ATTRIBUTE_UNUSED,
|
||||||
va_list args;
|
const xmlError *err ATTRIBUTE_UNUSED) {
|
||||||
int res;
|
|
||||||
|
|
||||||
if (testErrorsSize >= 32768)
|
|
||||||
return;
|
|
||||||
va_start(args, msg);
|
|
||||||
res = vsnprintf(&testErrors[testErrorsSize],
|
|
||||||
32768 - testErrorsSize,
|
|
||||||
msg, args);
|
|
||||||
va_end(args);
|
|
||||||
if (testErrorsSize + res >= 32768) {
|
|
||||||
/* buffer is full */
|
|
||||||
testErrorsSize = 32768;
|
|
||||||
testErrors[testErrorsSize] = 0;
|
|
||||||
} else {
|
|
||||||
testErrorsSize += res;
|
|
||||||
}
|
|
||||||
testErrors[testErrorsSize] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* xmlParserPrintFileContext:
|
|
||||||
* @input: an xmlParserInputPtr input
|
|
||||||
*
|
|
||||||
* Displays current context within the input content for error tracking
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
xmlParserPrintFileContextInternal(xmlParserInputPtr input ,
|
|
||||||
xmlGenericErrorFunc chanl, void *data ) {
|
|
||||||
const xmlChar *cur, *base;
|
|
||||||
unsigned int n, col; /* GCC warns if signed, because compared with sizeof() */
|
|
||||||
xmlChar content[81]; /* space for 80 chars + line terminator */
|
|
||||||
xmlChar *ctnt;
|
|
||||||
|
|
||||||
if (input == NULL) return;
|
|
||||||
cur = input->cur;
|
|
||||||
base = input->base;
|
|
||||||
/* skip backwards over any end-of-lines */
|
|
||||||
while ((cur > base) && ((*(cur) == '\n') || (*(cur) == '\r'))) {
|
|
||||||
cur--;
|
|
||||||
}
|
|
||||||
n = 0;
|
|
||||||
/* search backwards for beginning-of-line (to max buff size) */
|
|
||||||
while ((n++ < (sizeof(content)-1)) && (cur > base) &&
|
|
||||||
(*(cur) != '\n') && (*(cur) != '\r'))
|
|
||||||
cur--;
|
|
||||||
if ((*(cur) == '\n') || (*(cur) == '\r')) cur++;
|
|
||||||
/* calculate the error position in terms of the current position */
|
|
||||||
col = input->cur - cur;
|
|
||||||
/* search forward for end-of-line (to max buff size) */
|
|
||||||
n = 0;
|
|
||||||
ctnt = content;
|
|
||||||
/* copy selected text to our buffer */
|
|
||||||
while ((*cur != 0) && (*(cur) != '\n') &&
|
|
||||||
(*(cur) != '\r') && (n < sizeof(content)-1)) {
|
|
||||||
*ctnt++ = *cur++;
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
*ctnt = 0;
|
|
||||||
/* print out the selected text */
|
|
||||||
chanl(data ,"%s\n", content);
|
|
||||||
/* create blank line with problem pointer */
|
|
||||||
n = 0;
|
|
||||||
ctnt = content;
|
|
||||||
/* (leave buffer space for pointer + line terminator) */
|
|
||||||
while ((n<col) && (n++ < sizeof(content)-2) && (*ctnt != 0)) {
|
|
||||||
if (*(ctnt) != '\t')
|
|
||||||
*(ctnt) = ' ';
|
|
||||||
ctnt++;
|
|
||||||
}
|
|
||||||
*ctnt++ = '^';
|
|
||||||
*ctnt = 0;
|
|
||||||
chanl(data ,"%s\n", content);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
testStructuredErrorHandler(void *ctx ATTRIBUTE_UNUSED, const xmlError *err) {
|
|
||||||
char *file = NULL;
|
|
||||||
int line = 0;
|
|
||||||
int code = -1;
|
|
||||||
int domain;
|
|
||||||
void *data = NULL;
|
|
||||||
const char *str;
|
|
||||||
const xmlChar *name = NULL;
|
|
||||||
xmlNodePtr node;
|
|
||||||
xmlErrorLevel level;
|
|
||||||
xmlParserInputPtr input = NULL;
|
|
||||||
xmlParserInputPtr cur = NULL;
|
|
||||||
xmlParserCtxtPtr ctxt = NULL;
|
|
||||||
|
|
||||||
if (err == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
file = err->file;
|
|
||||||
line = err->line;
|
|
||||||
code = err->code;
|
|
||||||
domain = err->domain;
|
|
||||||
level = err->level;
|
|
||||||
node = err->node;
|
|
||||||
if ((domain == XML_FROM_PARSER) || (domain == XML_FROM_HTML) ||
|
|
||||||
(domain == XML_FROM_DTD) || (domain == XML_FROM_NAMESPACE) ||
|
|
||||||
(domain == XML_FROM_IO) || (domain == XML_FROM_VALID)) {
|
|
||||||
ctxt = err->ctxt;
|
|
||||||
}
|
|
||||||
str = err->message;
|
|
||||||
|
|
||||||
if (code == XML_ERR_OK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if ((node != NULL) && (node->type == XML_ELEMENT_NODE))
|
|
||||||
name = node->name;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Maintain the compatibility with the legacy error handling
|
|
||||||
*/
|
|
||||||
if (ctxt != NULL) {
|
|
||||||
input = ctxt->input;
|
|
||||||
if ((input != NULL) && (input->filename == NULL) &&
|
|
||||||
(ctxt->inputNr > 1)) {
|
|
||||||
cur = input;
|
|
||||||
input = ctxt->inputTab[ctxt->inputNr - 2];
|
|
||||||
}
|
|
||||||
if (input != NULL) {
|
|
||||||
if (input->filename)
|
|
||||||
channel(data, "%s:%d: ", input->filename, input->line);
|
|
||||||
else if ((line != 0) && (domain == XML_FROM_PARSER))
|
|
||||||
channel(data, "Entity: line %d: ", input->line);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (file != NULL)
|
|
||||||
channel(data, "%s:%d: ", file, line);
|
|
||||||
else if ((line != 0) && (domain == XML_FROM_PARSER))
|
|
||||||
channel(data, "Entity: line %d: ", line);
|
|
||||||
}
|
|
||||||
if (name != NULL) {
|
|
||||||
channel(data, "element %s: ", name);
|
|
||||||
}
|
|
||||||
if (code == XML_ERR_OK)
|
|
||||||
return;
|
|
||||||
switch (domain) {
|
|
||||||
case XML_FROM_PARSER:
|
|
||||||
channel(data, "parser ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_NAMESPACE:
|
|
||||||
channel(data, "namespace ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_DTD:
|
|
||||||
case XML_FROM_VALID:
|
|
||||||
channel(data, "validity ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_HTML:
|
|
||||||
channel(data, "HTML parser ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_MEMORY:
|
|
||||||
channel(data, "memory ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_OUTPUT:
|
|
||||||
channel(data, "output ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_IO:
|
|
||||||
channel(data, "I/O ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_XINCLUDE:
|
|
||||||
channel(data, "XInclude ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_XPATH:
|
|
||||||
channel(data, "XPath ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_XPOINTER:
|
|
||||||
channel(data, "parser ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_REGEXP:
|
|
||||||
channel(data, "regexp ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_MODULE:
|
|
||||||
channel(data, "module ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_SCHEMASV:
|
|
||||||
channel(data, "Schemas validity ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_SCHEMASP:
|
|
||||||
channel(data, "Schemas parser ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_RELAXNGP:
|
|
||||||
channel(data, "Relax-NG parser ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_RELAXNGV:
|
|
||||||
channel(data, "Relax-NG validity ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_CATALOG:
|
|
||||||
channel(data, "Catalog ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_C14N:
|
|
||||||
channel(data, "C14N ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_XSLT:
|
|
||||||
channel(data, "XSLT ");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (code == XML_ERR_OK)
|
|
||||||
return;
|
|
||||||
switch (level) {
|
|
||||||
case XML_ERR_NONE:
|
|
||||||
channel(data, ": ");
|
|
||||||
break;
|
|
||||||
case XML_ERR_WARNING:
|
|
||||||
channel(data, "warning : ");
|
|
||||||
break;
|
|
||||||
case XML_ERR_ERROR:
|
|
||||||
channel(data, "error : ");
|
|
||||||
break;
|
|
||||||
case XML_ERR_FATAL:
|
|
||||||
channel(data, "error : ");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (code == XML_ERR_OK)
|
|
||||||
return;
|
|
||||||
if (str != NULL) {
|
|
||||||
int len;
|
|
||||||
len = xmlStrlen((const xmlChar *)str);
|
|
||||||
if ((len > 0) && (str[len - 1] != '\n'))
|
|
||||||
channel(data, "%s\n", str);
|
|
||||||
else
|
|
||||||
channel(data, "%s", str);
|
|
||||||
} else {
|
|
||||||
channel(data, "%s\n", "out of memory error");
|
|
||||||
}
|
|
||||||
if (code == XML_ERR_OK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (ctxt != NULL) {
|
|
||||||
xmlParserPrintFileContextInternal(input, channel, data);
|
|
||||||
if (cur != NULL) {
|
|
||||||
if (cur->filename)
|
|
||||||
channel(data, "%s:%d: \n", cur->filename, cur->line);
|
|
||||||
else if ((line != 0) && (domain == XML_FROM_PARSER))
|
|
||||||
channel(data, "Entity: line %d: \n", cur->line);
|
|
||||||
xmlParserPrintFileContextInternal(cur, channel, data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((domain == XML_FROM_XPATH) && (err->str1 != NULL) &&
|
|
||||||
(err->int1 < 100) &&
|
|
||||||
(err->int1 < xmlStrlen((const xmlChar *)err->str1))) {
|
|
||||||
xmlChar buf[150];
|
|
||||||
int i;
|
|
||||||
|
|
||||||
channel(data, "%s\n", err->str1);
|
|
||||||
for (i=0;i < err->int1;i++)
|
|
||||||
buf[i] = ' ';
|
|
||||||
buf[i++] = '^';
|
|
||||||
buf[i] = 0;
|
|
||||||
channel(data, "%s\n", buf);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
271
testrecurse.c
271
testrecurse.c
@ -359,271 +359,9 @@ testExternalEntityLoader(const char *URL, const char *ID,
|
|||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Trapping the error messages at the generic level to grab the equivalent of
|
|
||||||
* stderr messages on CLI tools.
|
|
||||||
*/
|
|
||||||
static char testErrors[32769];
|
|
||||||
static int testErrorsSize = 0;
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
channel(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) {
|
testStructuredErrorHandler(void *ctx ATTRIBUTE_UNUSED,
|
||||||
va_list args;
|
const xmlError *err ATTRIBUTE_UNUSED) {
|
||||||
int res;
|
|
||||||
|
|
||||||
if (testErrorsSize >= 32768)
|
|
||||||
return;
|
|
||||||
va_start(args, msg);
|
|
||||||
res = vsnprintf(&testErrors[testErrorsSize],
|
|
||||||
32768 - testErrorsSize,
|
|
||||||
msg, args);
|
|
||||||
va_end(args);
|
|
||||||
if (testErrorsSize + res >= 32768) {
|
|
||||||
/* buffer is full */
|
|
||||||
testErrorsSize = 32768;
|
|
||||||
testErrors[testErrorsSize] = 0;
|
|
||||||
} else {
|
|
||||||
testErrorsSize += res;
|
|
||||||
}
|
|
||||||
testErrors[testErrorsSize] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* xmlParserPrintFileContext:
|
|
||||||
* @input: an xmlParserInputPtr input
|
|
||||||
*
|
|
||||||
* Displays current context within the input content for error tracking
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
xmlParserPrintFileContextInternal(xmlParserInputPtr input ,
|
|
||||||
xmlGenericErrorFunc chanl, void *data ) {
|
|
||||||
const xmlChar *cur, *base;
|
|
||||||
unsigned int n, col; /* GCC warns if signed, because compared with sizeof() */
|
|
||||||
xmlChar content[81]; /* space for 80 chars + line terminator */
|
|
||||||
xmlChar *ctnt;
|
|
||||||
|
|
||||||
if (input == NULL) return;
|
|
||||||
cur = input->cur;
|
|
||||||
base = input->base;
|
|
||||||
/* skip backwards over any end-of-lines */
|
|
||||||
while ((cur > base) && ((*(cur) == '\n') || (*(cur) == '\r'))) {
|
|
||||||
cur--;
|
|
||||||
}
|
|
||||||
n = 0;
|
|
||||||
/* search backwards for beginning-of-line (to max buff size) */
|
|
||||||
while ((n++ < (sizeof(content)-1)) && (cur > base) &&
|
|
||||||
(*(cur) != '\n') && (*(cur) != '\r'))
|
|
||||||
cur--;
|
|
||||||
if ((*(cur) == '\n') || (*(cur) == '\r')) cur++;
|
|
||||||
/* calculate the error position in terms of the current position */
|
|
||||||
col = input->cur - cur;
|
|
||||||
/* search forward for end-of-line (to max buff size) */
|
|
||||||
n = 0;
|
|
||||||
ctnt = content;
|
|
||||||
/* copy selected text to our buffer */
|
|
||||||
while ((*cur != 0) && (*(cur) != '\n') &&
|
|
||||||
(*(cur) != '\r') && (n < sizeof(content)-1)) {
|
|
||||||
*ctnt++ = *cur++;
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
*ctnt = 0;
|
|
||||||
/* print out the selected text */
|
|
||||||
chanl(data ,"%s\n", content);
|
|
||||||
/* create blank line with problem pointer */
|
|
||||||
n = 0;
|
|
||||||
ctnt = content;
|
|
||||||
/* (leave buffer space for pointer + line terminator) */
|
|
||||||
while ((n<col) && (n++ < sizeof(content)-2) && (*ctnt != 0)) {
|
|
||||||
if (*(ctnt) != '\t')
|
|
||||||
*(ctnt) = ' ';
|
|
||||||
ctnt++;
|
|
||||||
}
|
|
||||||
*ctnt++ = '^';
|
|
||||||
*ctnt = 0;
|
|
||||||
chanl(data ,"%s\n", content);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
testStructuredErrorHandler(void *ctx ATTRIBUTE_UNUSED, const xmlError *err) {
|
|
||||||
char *file = NULL;
|
|
||||||
int line = 0;
|
|
||||||
int code = -1;
|
|
||||||
int domain;
|
|
||||||
void *data = NULL;
|
|
||||||
const char *str;
|
|
||||||
const xmlChar *name = NULL;
|
|
||||||
xmlNodePtr node;
|
|
||||||
xmlErrorLevel level;
|
|
||||||
xmlParserInputPtr input = NULL;
|
|
||||||
xmlParserInputPtr cur = NULL;
|
|
||||||
xmlParserCtxtPtr ctxt = NULL;
|
|
||||||
|
|
||||||
if (err == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
file = err->file;
|
|
||||||
line = err->line;
|
|
||||||
code = err->code;
|
|
||||||
domain = err->domain;
|
|
||||||
level = err->level;
|
|
||||||
node = err->node;
|
|
||||||
if ((domain == XML_FROM_PARSER) || (domain == XML_FROM_HTML) ||
|
|
||||||
(domain == XML_FROM_DTD) || (domain == XML_FROM_NAMESPACE) ||
|
|
||||||
(domain == XML_FROM_IO) || (domain == XML_FROM_VALID)) {
|
|
||||||
ctxt = err->ctxt;
|
|
||||||
}
|
|
||||||
str = err->message;
|
|
||||||
|
|
||||||
if (code == XML_ERR_OK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if ((node != NULL) && (node->type == XML_ELEMENT_NODE))
|
|
||||||
name = node->name;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Maintain the compatibility with the legacy error handling
|
|
||||||
*/
|
|
||||||
if (ctxt != NULL) {
|
|
||||||
input = ctxt->input;
|
|
||||||
if ((input != NULL) && (input->filename == NULL) &&
|
|
||||||
(ctxt->inputNr > 1)) {
|
|
||||||
cur = input;
|
|
||||||
input = ctxt->inputTab[ctxt->inputNr - 2];
|
|
||||||
}
|
|
||||||
if (input != NULL) {
|
|
||||||
if (input->filename)
|
|
||||||
channel(data, "%s:%d: ", input->filename, input->line);
|
|
||||||
else if ((line != 0) && (domain == XML_FROM_PARSER))
|
|
||||||
channel(data, "Entity: line %d: ", input->line);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (file != NULL)
|
|
||||||
channel(data, "%s:%d: ", file, line);
|
|
||||||
else if ((line != 0) && (domain == XML_FROM_PARSER))
|
|
||||||
channel(data, "Entity: line %d: ", line);
|
|
||||||
}
|
|
||||||
if (name != NULL) {
|
|
||||||
channel(data, "element %s: ", name);
|
|
||||||
}
|
|
||||||
if (code == XML_ERR_OK)
|
|
||||||
return;
|
|
||||||
switch (domain) {
|
|
||||||
case XML_FROM_PARSER:
|
|
||||||
channel(data, "parser ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_NAMESPACE:
|
|
||||||
channel(data, "namespace ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_DTD:
|
|
||||||
case XML_FROM_VALID:
|
|
||||||
channel(data, "validity ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_HTML:
|
|
||||||
channel(data, "HTML parser ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_MEMORY:
|
|
||||||
channel(data, "memory ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_OUTPUT:
|
|
||||||
channel(data, "output ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_IO:
|
|
||||||
channel(data, "I/O ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_XINCLUDE:
|
|
||||||
channel(data, "XInclude ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_XPATH:
|
|
||||||
channel(data, "XPath ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_XPOINTER:
|
|
||||||
channel(data, "parser ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_REGEXP:
|
|
||||||
channel(data, "regexp ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_MODULE:
|
|
||||||
channel(data, "module ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_SCHEMASV:
|
|
||||||
channel(data, "Schemas validity ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_SCHEMASP:
|
|
||||||
channel(data, "Schemas parser ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_RELAXNGP:
|
|
||||||
channel(data, "Relax-NG parser ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_RELAXNGV:
|
|
||||||
channel(data, "Relax-NG validity ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_CATALOG:
|
|
||||||
channel(data, "Catalog ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_C14N:
|
|
||||||
channel(data, "C14N ");
|
|
||||||
break;
|
|
||||||
case XML_FROM_XSLT:
|
|
||||||
channel(data, "XSLT ");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (code == XML_ERR_OK)
|
|
||||||
return;
|
|
||||||
switch (level) {
|
|
||||||
case XML_ERR_NONE:
|
|
||||||
channel(data, ": ");
|
|
||||||
break;
|
|
||||||
case XML_ERR_WARNING:
|
|
||||||
channel(data, "warning : ");
|
|
||||||
break;
|
|
||||||
case XML_ERR_ERROR:
|
|
||||||
channel(data, "error : ");
|
|
||||||
break;
|
|
||||||
case XML_ERR_FATAL:
|
|
||||||
channel(data, "error : ");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (code == XML_ERR_OK)
|
|
||||||
return;
|
|
||||||
if (str != NULL) {
|
|
||||||
int len;
|
|
||||||
len = xmlStrlen((const xmlChar *)str);
|
|
||||||
if ((len > 0) && (str[len - 1] != '\n'))
|
|
||||||
channel(data, "%s\n", str);
|
|
||||||
else
|
|
||||||
channel(data, "%s", str);
|
|
||||||
} else {
|
|
||||||
channel(data, "%s\n", "out of memory error");
|
|
||||||
}
|
|
||||||
if (code == XML_ERR_OK)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (ctxt != NULL) {
|
|
||||||
xmlParserPrintFileContextInternal(input, channel, data);
|
|
||||||
if (cur != NULL) {
|
|
||||||
if (cur->filename)
|
|
||||||
channel(data, "%s:%d: \n", cur->filename, cur->line);
|
|
||||||
else if ((line != 0) && (domain == XML_FROM_PARSER))
|
|
||||||
channel(data, "Entity: line %d: \n", cur->line);
|
|
||||||
xmlParserPrintFileContextInternal(cur, channel, data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((domain == XML_FROM_XPATH) && (err->str1 != NULL) &&
|
|
||||||
(err->int1 < 100) &&
|
|
||||||
(err->int1 < xmlStrlen((const xmlChar *)err->str1))) {
|
|
||||||
xmlChar buf[150];
|
|
||||||
int i;
|
|
||||||
|
|
||||||
channel(data, "%s\n", err->str1);
|
|
||||||
for (i=0;i < err->int1;i++)
|
|
||||||
buf[i] = ' ';
|
|
||||||
buf[i++] = '^';
|
|
||||||
buf[i] = 0;
|
|
||||||
channel(data, "%s\n", buf);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1104,8 +842,6 @@ launchTests(testDescPtr tst) {
|
|||||||
} else {
|
} else {
|
||||||
mem = xmlMemUsed();
|
mem = xmlMemUsed();
|
||||||
extraMemoryFromResolver = 0;
|
extraMemoryFromResolver = 0;
|
||||||
testErrorsSize = 0;
|
|
||||||
testErrors[0] = 0;
|
|
||||||
res = tst->func(globbuf.gl_pathv[i], result, error,
|
res = tst->func(globbuf.gl_pathv[i], result, error,
|
||||||
tst->options | XML_PARSE_COMPACT);
|
tst->options | XML_PARSE_COMPACT);
|
||||||
xmlResetLastError();
|
xmlResetLastError();
|
||||||
@ -1124,7 +860,6 @@ launchTests(testDescPtr tst) {
|
|||||||
err++;
|
err++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
testErrorsSize = 0;
|
|
||||||
}
|
}
|
||||||
if (result)
|
if (result)
|
||||||
free(result);
|
free(result);
|
||||||
@ -1133,8 +868,6 @@ launchTests(testDescPtr tst) {
|
|||||||
}
|
}
|
||||||
globfree(&globbuf);
|
globfree(&globbuf);
|
||||||
} else {
|
} else {
|
||||||
testErrorsSize = 0;
|
|
||||||
testErrors[0] = 0;
|
|
||||||
extraMemoryFromResolver = 0;
|
extraMemoryFromResolver = 0;
|
||||||
res = tst->func(NULL, NULL, NULL, tst->options);
|
res = tst->func(NULL, NULL, NULL, tst->options);
|
||||||
if (res != 0) {
|
if (res != 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user