aboutsummaryrefslogtreecommitdiff
path: root/libxml2-2.9.10/xstc
diff options
context:
space:
mode:
Diffstat (limited to 'libxml2-2.9.10/xstc')
-rw-r--r--libxml2-2.9.10/xstc/Makefile.am132
-rw-r--r--libxml2-2.9.10/xstc/Makefile.in689
-rwxr-xr-xlibxml2-2.9.10/xstc/xstc-to-python.xsl114
-rwxr-xr-xlibxml2-2.9.10/xstc/xstc.py693
4 files changed, 1628 insertions, 0 deletions
diff --git a/libxml2-2.9.10/xstc/Makefile.am b/libxml2-2.9.10/xstc/Makefile.am
new file mode 100644
index 0000000..5ef1819
--- /dev/null
+++ b/libxml2-2.9.10/xstc/Makefile.am
@@ -0,0 +1,132 @@
+#
+# Definition for the tests from W3C
+#
+PYSCRIPTS=nist-test.py ms-test.py sun-test.py
+TESTDIR=Tests
+TESTDIRS=$(TESTDIR)/msxsdtest $(TESTDIR)/suntest $(TESTDIR)/Datatypes
+TARBALL=xsts-2002-01-16.tar.gz
+TARBALL_2=xsts-2004-01-14.tar.gz
+TSNAME=xmlschema2002-01-16
+TSNAME_2=xmlschema2004-01-14
+TARBALLURL=http://www.w3.org/XML/2004/xml-schema-test-suite/$(TSNAME)/$(TARBALL)
+TARBALLURL_2=http://www.w3.org/XML/2004/xml-schema-test-suite/$(TSNAME_2)/$(TARBALL_2)
+MSTESTDEF=MSXMLSchema1-0-20020116.testSet
+SUNTESTDEF=SunXMLSchema1-0-20020116.testSet
+NISTTESTDEF=NISTXMLSchema1-0-20020116.testSet
+NISTTESTDEF_2=NISTXMLSchemaDatatypes.testSet
+
+#
+# The local data and scripts
+#
+EXTRA_DIST=xstc.py xstc-to-python.xsl
+#
+# Nothing is done by make, only make tests and
+# only if Python and Schemas are enabled.
+#
+all:
+
+#
+# Rule to load the test description and extract the informations
+#
+$(TESTDIRS) Tests/Metadata/$(NISTTESTDEF_2) Tests/Metadata/$(MSTTESTDEF) Tests/Metadata/$(SUNTESTDEF):
+ -@(if [ ! -d Tests ] ; then \
+ mkdir Tests ; \
+ fi)
+ -@(if [ ! -f $(TARBALL_2) ] ; then \
+ if [ -f $(srcdir)/$(TARBALL_2) ] ; then \
+ $(LN_S) $(srcdir)/$(TARBALL_2) $(TARBALL_2) ; else \
+ echo "Missing the test suite description (2004-01-14), trying to fetch it" ;\
+ if [ -x "$(WGET)" ] ; then \
+ $(WGET) $(TARBALLURL_2) ; \
+ else echo "Dont' know how to fetch $(TARBALLURL_2)" ; fi ; fi ; fi)
+ -@(if [ -f $(TARBALL_2) ] ; then \
+ echo -n "extracting test data (NIST)..." ; \
+ $(TAR) -xzf $(TARBALL_2) --wildcards '*/Datatypes' '*/Metadata/$(NISTTESTDEF_2)' ; \
+ echo "done" ; \
+ fi)
+ -@(if [ ! -f $(TARBALL) ] ; then \
+ if [ -f $(srcdir)/$(TARBALL) ] ; then \
+ $(LN_S) $(srcdir)/$(TARBALL) $(TARBALL) ; else \
+ echo "Missing the test suite description (2002-01-16), trying to fetch it" ;\
+ if [ -x "$(WGET)" ] ; then \
+ $(WGET) $(TARBALLURL) ; \
+ else echo "Dont' know how to fetch $(TARBALLURL)" ; fi ; fi ; fi)
+ -@(if [ -f $(TARBALL) ] ; then \
+ echo -n "extracting test data (Sun, Microsoft)..." ; \
+ $(TAR) -C Tests -xzf $(TARBALL) --wildcards '*/suntest' '*/msxsdtest' '*/$(MSTESTDEF)' '*/$(SUNTESTDEF)' ; \
+ if [ -d Tests/suntest ] ; then rm -r Tests/suntest ; fi ; \
+ if [ -d Tests/msxsdtest ] ; then rm -r Tests/msxsdtest ; fi ; \
+ mv Tests/xmlschema2002-01-16/* Tests ; \
+ mv Tests/*.testSet Tests/Metadata ; \
+ rm -r Tests/xmlschema2002-01-16 ; \
+ echo "done" ; \
+ fi)
+
+#
+# The python tests are generated via XSLT
+#
+nist-test.py: Tests/Metadata/$(NISTTESTDEF_2) xstc-to-python.xsl
+ -@(if [ -x $(XSLTPROC) ] ; then \
+ echo "Rebuilding script (NIST)" $@ ; \
+ $(XSLTPROC) --nonet --stringparam vendor NIST-2 \
+ $(srcdir)/xstc-to-python.xsl \
+ $(srcdir)/Tests/Metadata/$(NISTTESTDEF_2) > $@ ; \
+ chmod +x $@ ; fi )
+
+ms-test.py: Tests/Metadata/$(MSTTESTDEF) xstc-to-python.xsl
+ -@(if [ -x $(XSLTPROC) ] ; then \
+ echo "Rebuilding script (Microsoft)" $@ ; \
+ $(XSLTPROC) --nonet --stringparam vendor MS \
+ $(srcdir)/xstc-to-python.xsl \
+ $(srcdir)/Tests/Metadata/$(MSTESTDEF) > $@ ; \
+ chmod +x $@ ; fi )
+
+sun-test.py: Tests/Metadata/$(SUNTESTDEF) xstc-to-python.xsl
+ -@(if [ -x $(XSLTPROC) ] ; then \
+ echo "Rebuilding script (Sun)" $@ ; \
+ $(XSLTPROC) --nonet --stringparam vendor SUN \
+ $(srcdir)/xstc-to-python.xsl \
+ $(srcdir)/Tests/Metadata/$(SUNTESTDEF) > $@ ; \
+ chmod +x $@ ; fi )
+
+#
+# The actual test run if present. PYTHONPATH is updated to make sure
+# we run the version from the loacl build and not preinstalled bindings
+#
+pytests: $(PYSCRIPTS) $(TESTDIRS)
+ -@(if [ -x nist-test.py -a -d $(TESTDIR)/Datatypes ] ; then \
+ echo "## Running XML Schema tests (NIST)"; \
+ PYTHONPATH="../python:../python/.libs:..:../.libs:$$PYTHONPATH" ;\
+ export PYTHONPATH; \
+ LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ; \
+ export LD_LIBRARY_PATH; \
+ $(CHECKER) $(PYTHON) nist-test.py -s -b $(srcdir) ; fi)
+ -@(if [ -x sun-test.py -a -d $(TESTDIR)/suntest ] ; then \
+ echo "## Running Schema tests (Sun)"; \
+ PYTHONPATH="../python:../python/.libs:..:../.libs:$$PYTHONPATH" ;\
+ export PYTHONPATH; \
+ LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ; \
+ export LD_LIBRARY_PATH; \
+ $(CHECKER) $(PYTHON) sun-test.py -s -b $(srcdir) ; fi)
+ -@(if [ -x ms-test.py -a -d $(TESTDIR)/msxsdtest ] ; then \
+ echo "## Running Schema tests (Microsoft)"; \
+ PYTHONPATH="../python:../python/.libs:..:../.libs:$$PYTHONPATH" ;\
+ export PYTHONPATH; \
+ LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ; \
+ export LD_LIBRARY_PATH; \
+ $(CHECKER) $(PYTHON) ms-test.py -s -b $(srcdir) ; fi)
+
+tests:
+ -@(if [ -x $(PYTHON) ] ; then \
+ $(MAKE) pytests ; fi);
+
+#
+# Heavy, works well only on RHEL3
+#
+valgrind:
+ -@(if [ -x $(PYTHON) ] ; then \
+ echo '## Running the regression tests under Valgrind' ; \
+ $(MAKE) CHECKER='valgrind -q' pytests ; fi);
+
+CLEANFILES=$(PYSCRIPTS) test.log
+
diff --git a/libxml2-2.9.10/xstc/Makefile.in b/libxml2-2.9.10/xstc/Makefile.in
new file mode 100644
index 0000000..06e0c95
--- /dev/null
+++ b/libxml2-2.9.10/xstc/Makefile.in
@@ -0,0 +1,689 @@
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = xstc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BASE_THREAD_LIBS = @BASE_THREAD_LIBS@
+C14N_OBJ = @C14N_OBJ@
+CATALOG_OBJ = @CATALOG_OBJ@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+CYGWIN_EXTRA_LDFLAGS = @CYGWIN_EXTRA_LDFLAGS@
+CYGWIN_EXTRA_PYTHON_LIBADD = @CYGWIN_EXTRA_PYTHON_LIBADD@
+DEBUG_OBJ = @DEBUG_OBJ@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOCB_OBJ = @DOCB_OBJ@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_CFLAGS = @EXTRA_CFLAGS@
+FGREP = @FGREP@
+FTP_OBJ = @FTP_OBJ@
+GREP = @GREP@
+HAVE_ISINF = @HAVE_ISINF@
+HAVE_ISNAN = @HAVE_ISNAN@
+HTML_DIR = @HTML_DIR@
+HTML_OBJ = @HTML_OBJ@
+HTTP_OBJ = @HTTP_OBJ@
+ICONV_LIBS = @ICONV_LIBS@
+ICU_CFLAGS = @ICU_CFLAGS@
+ICU_LIBS = @ICU_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBXML_MAJOR_VERSION = @LIBXML_MAJOR_VERSION@
+LIBXML_MICRO_VERSION = @LIBXML_MICRO_VERSION@
+LIBXML_MINOR_VERSION = @LIBXML_MINOR_VERSION@
+LIBXML_VERSION = @LIBXML_VERSION@
+LIBXML_VERSION_EXTRA = @LIBXML_VERSION_EXTRA@
+LIBXML_VERSION_INFO = @LIBXML_VERSION_INFO@
+LIBXML_VERSION_NUMBER = @LIBXML_VERSION_NUMBER@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+LZMA_CFLAGS = @LZMA_CFLAGS@
+LZMA_LIBS = @LZMA_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MODULE_EXTENSION = @MODULE_EXTENSION@
+MODULE_PLATFORM_LIBS = @MODULE_PLATFORM_LIBS@
+MV = @MV@
+M_LIBS = @M_LIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PYTHON = @PYTHON@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_SITE_PACKAGES = @PYTHON_SITE_PACKAGES@
+PYTHON_SUBDIR = @PYTHON_SUBDIR@
+PYTHON_TESTS = @PYTHON_TESTS@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+RDL_LIBS = @RDL_LIBS@
+READER_TEST = @READER_TEST@
+RELDATE = @RELDATE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STATIC_BINARIES = @STATIC_BINARIES@
+STRIP = @STRIP@
+TAR = @TAR@
+TEST_C14N = @TEST_C14N@
+TEST_CATALOG = @TEST_CATALOG@
+TEST_DEBUG = @TEST_DEBUG@
+TEST_HTML = @TEST_HTML@
+TEST_MODULES = @TEST_MODULES@
+TEST_PATTERN = @TEST_PATTERN@
+TEST_PHTML = @TEST_PHTML@
+TEST_PUSH = @TEST_PUSH@
+TEST_REGEXPS = @TEST_REGEXPS@
+TEST_SAX = @TEST_SAX@
+TEST_SCHEMAS = @TEST_SCHEMAS@
+TEST_SCHEMATRON = @TEST_SCHEMATRON@
+TEST_THREADS = @TEST_THREADS@
+TEST_VALID = @TEST_VALID@
+TEST_VTIME = @TEST_VTIME@
+TEST_XINCLUDE = @TEST_XINCLUDE@
+TEST_XPATH = @TEST_XPATH@
+TEST_XPTR = @TEST_XPTR@
+THREAD_CFLAGS = @THREAD_CFLAGS@
+THREAD_LIBS = @THREAD_LIBS@
+VERSION = @VERSION@
+VERSION_SCRIPT_FLAGS = @VERSION_SCRIPT_FLAGS@
+WGET = @WGET@
+WIN32_EXTRA_LDFLAGS = @WIN32_EXTRA_LDFLAGS@
+WIN32_EXTRA_LIBADD = @WIN32_EXTRA_LIBADD@
+WIN32_EXTRA_PYTHON_LIBADD = @WIN32_EXTRA_PYTHON_LIBADD@
+WITH_C14N = @WITH_C14N@
+WITH_CATALOG = @WITH_CATALOG@
+WITH_DEBUG = @WITH_DEBUG@
+WITH_DOCB = @WITH_DOCB@
+WITH_FTP = @WITH_FTP@
+WITH_HTML = @WITH_HTML@
+WITH_HTTP = @WITH_HTTP@
+WITH_ICONV = @WITH_ICONV@
+WITH_ICU = @WITH_ICU@
+WITH_ISO8859X = @WITH_ISO8859X@
+WITH_LEGACY = @WITH_LEGACY@
+WITH_LZMA = @WITH_LZMA@
+WITH_MEM_DEBUG = @WITH_MEM_DEBUG@
+WITH_MODULES = @WITH_MODULES@
+WITH_OUTPUT = @WITH_OUTPUT@
+WITH_PATTERN = @WITH_PATTERN@
+WITH_PUSH = @WITH_PUSH@
+WITH_READER = @WITH_READER@
+WITH_REGEXPS = @WITH_REGEXPS@
+WITH_RUN_DEBUG = @WITH_RUN_DEBUG@
+WITH_SAX1 = @WITH_SAX1@
+WITH_SCHEMAS = @WITH_SCHEMAS@
+WITH_SCHEMATRON = @WITH_SCHEMATRON@
+WITH_THREADS = @WITH_THREADS@
+WITH_THREAD_ALLOC = @WITH_THREAD_ALLOC@
+WITH_TREE = @WITH_TREE@
+WITH_TRIO = @WITH_TRIO@
+WITH_VALID = @WITH_VALID@
+WITH_WRITER = @WITH_WRITER@
+WITH_XINCLUDE = @WITH_XINCLUDE@
+WITH_XPATH = @WITH_XPATH@
+WITH_XPTR = @WITH_XPTR@
+WITH_ZLIB = @WITH_ZLIB@
+XINCLUDE_OBJ = @XINCLUDE_OBJ@
+XMLLINT = @XMLLINT@
+XML_CFLAGS = @XML_CFLAGS@
+XML_INCLUDEDIR = @XML_INCLUDEDIR@
+XML_LIBDIR = @XML_LIBDIR@
+XML_LIBS = @XML_LIBS@
+XML_LIBTOOLLIBS = @XML_LIBTOOLLIBS@
+XML_PRIVATE_LIBS = @XML_PRIVATE_LIBS@
+XPATH_OBJ = @XPATH_OBJ@
+XPTR_OBJ = @XPTR_OBJ@
+XSLTPROC = @XSLTPROC@
+Z_CFLAGS = @Z_CFLAGS@
+Z_LIBS = @Z_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+#
+# Definition for the tests from W3C
+#
+PYSCRIPTS = nist-test.py ms-test.py sun-test.py
+TESTDIR = Tests
+TESTDIRS = $(TESTDIR)/msxsdtest $(TESTDIR)/suntest $(TESTDIR)/Datatypes
+TARBALL = xsts-2002-01-16.tar.gz
+TARBALL_2 = xsts-2004-01-14.tar.gz
+TSNAME = xmlschema2002-01-16
+TSNAME_2 = xmlschema2004-01-14
+TARBALLURL = http://www.w3.org/XML/2004/xml-schema-test-suite/$(TSNAME)/$(TARBALL)
+TARBALLURL_2 = http://www.w3.org/XML/2004/xml-schema-test-suite/$(TSNAME_2)/$(TARBALL_2)
+MSTESTDEF = MSXMLSchema1-0-20020116.testSet
+SUNTESTDEF = SunXMLSchema1-0-20020116.testSet
+NISTTESTDEF = NISTXMLSchema1-0-20020116.testSet
+NISTTESTDEF_2 = NISTXMLSchemaDatatypes.testSet
+
+#
+# The local data and scripts
+#
+EXTRA_DIST = xstc.py xstc-to-python.xsl
+CLEANFILES = $(PYSCRIPTS) test.log
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu xstc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu xstc/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
+
+#
+# Nothing is done by make, only make tests and
+# only if Python and Schemas are enabled.
+#
+all:
+
+#
+# Rule to load the test description and extract the informations
+#
+$(TESTDIRS) Tests/Metadata/$(NISTTESTDEF_2) Tests/Metadata/$(MSTTESTDEF) Tests/Metadata/$(SUNTESTDEF):
+ -@(if [ ! -d Tests ] ; then \
+ mkdir Tests ; \
+ fi)
+ -@(if [ ! -f $(TARBALL_2) ] ; then \
+ if [ -f $(srcdir)/$(TARBALL_2) ] ; then \
+ $(LN_S) $(srcdir)/$(TARBALL_2) $(TARBALL_2) ; else \
+ echo "Missing the test suite description (2004-01-14), trying to fetch it" ;\
+ if [ -x "$(WGET)" ] ; then \
+ $(WGET) $(TARBALLURL_2) ; \
+ else echo "Dont' know how to fetch $(TARBALLURL_2)" ; fi ; fi ; fi)
+ -@(if [ -f $(TARBALL_2) ] ; then \
+ echo -n "extracting test data (NIST)..." ; \
+ $(TAR) -xzf $(TARBALL_2) --wildcards '*/Datatypes' '*/Metadata/$(NISTTESTDEF_2)' ; \
+ echo "done" ; \
+ fi)
+ -@(if [ ! -f $(TARBALL) ] ; then \
+ if [ -f $(srcdir)/$(TARBALL) ] ; then \
+ $(LN_S) $(srcdir)/$(TARBALL) $(TARBALL) ; else \
+ echo "Missing the test suite description (2002-01-16), trying to fetch it" ;\
+ if [ -x "$(WGET)" ] ; then \
+ $(WGET) $(TARBALLURL) ; \
+ else echo "Dont' know how to fetch $(TARBALLURL)" ; fi ; fi ; fi)
+ -@(if [ -f $(TARBALL) ] ; then \
+ echo -n "extracting test data (Sun, Microsoft)..." ; \
+ $(TAR) -C Tests -xzf $(TARBALL) --wildcards '*/suntest' '*/msxsdtest' '*/$(MSTESTDEF)' '*/$(SUNTESTDEF)' ; \
+ if [ -d Tests/suntest ] ; then rm -r Tests/suntest ; fi ; \
+ if [ -d Tests/msxsdtest ] ; then rm -r Tests/msxsdtest ; fi ; \
+ mv Tests/xmlschema2002-01-16/* Tests ; \
+ mv Tests/*.testSet Tests/Metadata ; \
+ rm -r Tests/xmlschema2002-01-16 ; \
+ echo "done" ; \
+ fi)
+
+#
+# The python tests are generated via XSLT
+#
+nist-test.py: Tests/Metadata/$(NISTTESTDEF_2) xstc-to-python.xsl
+ -@(if [ -x $(XSLTPROC) ] ; then \
+ echo "Rebuilding script (NIST)" $@ ; \
+ $(XSLTPROC) --nonet --stringparam vendor NIST-2 \
+ $(srcdir)/xstc-to-python.xsl \
+ $(srcdir)/Tests/Metadata/$(NISTTESTDEF_2) > $@ ; \
+ chmod +x $@ ; fi )
+
+ms-test.py: Tests/Metadata/$(MSTTESTDEF) xstc-to-python.xsl
+ -@(if [ -x $(XSLTPROC) ] ; then \
+ echo "Rebuilding script (Microsoft)" $@ ; \
+ $(XSLTPROC) --nonet --stringparam vendor MS \
+ $(srcdir)/xstc-to-python.xsl \
+ $(srcdir)/Tests/Metadata/$(MSTESTDEF) > $@ ; \
+ chmod +x $@ ; fi )
+
+sun-test.py: Tests/Metadata/$(SUNTESTDEF) xstc-to-python.xsl
+ -@(if [ -x $(XSLTPROC) ] ; then \
+ echo "Rebuilding script (Sun)" $@ ; \
+ $(XSLTPROC) --nonet --stringparam vendor SUN \
+ $(srcdir)/xstc-to-python.xsl \
+ $(srcdir)/Tests/Metadata/$(SUNTESTDEF) > $@ ; \
+ chmod +x $@ ; fi )
+
+#
+# The actual test run if present. PYTHONPATH is updated to make sure
+# we run the version from the loacl build and not preinstalled bindings
+#
+pytests: $(PYSCRIPTS) $(TESTDIRS)
+ -@(if [ -x nist-test.py -a -d $(TESTDIR)/Datatypes ] ; then \
+ echo "## Running XML Schema tests (NIST)"; \
+ PYTHONPATH="../python:../python/.libs:..:../.libs:$$PYTHONPATH" ;\
+ export PYTHONPATH; \
+ LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ; \
+ export LD_LIBRARY_PATH; \
+ $(CHECKER) $(PYTHON) nist-test.py -s -b $(srcdir) ; fi)
+ -@(if [ -x sun-test.py -a -d $(TESTDIR)/suntest ] ; then \
+ echo "## Running Schema tests (Sun)"; \
+ PYTHONPATH="../python:../python/.libs:..:../.libs:$$PYTHONPATH" ;\
+ export PYTHONPATH; \
+ LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ; \
+ export LD_LIBRARY_PATH; \
+ $(CHECKER) $(PYTHON) sun-test.py -s -b $(srcdir) ; fi)
+ -@(if [ -x ms-test.py -a -d $(TESTDIR)/msxsdtest ] ; then \
+ echo "## Running Schema tests (Microsoft)"; \
+ PYTHONPATH="../python:../python/.libs:..:../.libs:$$PYTHONPATH" ;\
+ export PYTHONPATH; \
+ LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ; \
+ export LD_LIBRARY_PATH; \
+ $(CHECKER) $(PYTHON) ms-test.py -s -b $(srcdir) ; fi)
+
+tests:
+ -@(if [ -x $(PYTHON) ] ; then \
+ $(MAKE) pytests ; fi);
+
+#
+# Heavy, works well only on RHEL3
+#
+valgrind:
+ -@(if [ -x $(PYTHON) ] ; then \
+ echo '## Running the regression tests under Valgrind' ; \
+ $(MAKE) CHECKER='valgrind -q' pytests ; fi);
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libxml2-2.9.10/xstc/xstc-to-python.xsl b/libxml2-2.9.10/xstc/xstc-to-python.xsl
new file mode 100755
index 0000000..78d55cd
--- /dev/null
+++ b/libxml2-2.9.10/xstc/xstc-to-python.xsl
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ts="TestSuite" version="1.0"
+ xmlns:xl="http://www.w3.org/1999/xlink">
+ <xsl:param name="vendor" select="'NIST'"/>
+ <xsl:output method="text"/>
+
+ <xsl:template match="/">
+ <xsl:text>#!/usr/bin/python -u
+# -*- coding: UTF-8 -*-
+#
+# This file is generated from the W3C test suite description file.
+#
+
+import xstc
+from xstc import XSTCTestRunner, XSTCTestGroup, XSTCSchemaTest, XSTCInstanceTest
+
+xstc.vendor = "</xsl:text><xsl:value-of select="$vendor"/><xsl:text>"
+
+r = XSTCTestRunner()
+
+# Group definitions.
+
+</xsl:text>
+
+ <xsl:apply-templates select="ts:testSet/ts:testGroup" mode="group-def"/>
+<xsl:text>
+
+# Test definitions.
+
+</xsl:text>
+ <xsl:apply-templates select="ts:testSet/ts:testGroup" mode="test-def"/>
+ <xsl:text>
+
+r.run()
+
+</xsl:text>
+
+ </xsl:template>
+
+ <!-- groupName, descr -->
+ <xsl:template match="ts:testGroup" mode="group-def">
+ <xsl:text>r.addGroup(XSTCTestGroup("</xsl:text>
+ <!-- group -->
+ <xsl:value-of select="@name"/><xsl:text>", "</xsl:text>
+ <!-- main schema -->
+ <xsl:value-of select="ts:schemaTest[1]/ts:schemaDocument/@xl:href"/><xsl:text>", """</xsl:text>
+ <!-- group-description -->
+ <xsl:call-template name="str">
+ <xsl:with-param name="str" select="ts:annotation/ts:documentation/text()"/>
+ </xsl:call-template>
+ <xsl:text>"""))
+</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="str">
+ <xsl:param name="str"/>
+ <xsl:choose>
+ <xsl:when test="contains($str, '&quot;')">
+ <xsl:call-template name="str">
+ <xsl:with-param name="str" select="substring-before($str, '&quot;')"/>
+ </xsl:call-template>
+ <xsl:text>'</xsl:text>
+ <xsl:call-template name="str">
+ <xsl:with-param name="str" select="substring-after($str, '&quot;')"/>
+ </xsl:call-template>
+
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$str"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="ts:testGroup" mode="test-def">
+ <xsl:param name="group" select="@name"/>
+ <xsl:for-each select="ts:schemaTest">
+ <!-- groupName, isSchema, Name, Accepted, File, Val, Descr -->
+ <xsl:text>r.addTest(XSTCSchemaTest("</xsl:text>
+ <!-- group -->
+ <xsl:value-of select="$group"/><xsl:text>", "</xsl:text>
+ <!-- test-name -->
+ <xsl:value-of select="@name"/><xsl:text>", </xsl:text>
+ <!-- accepted -->
+ <xsl:value-of select="number(ts:current/@status = 'accepted')"/><xsl:text>, "</xsl:text>
+ <!-- filename -->
+ <xsl:value-of select="ts:schemaDocument/@xl:href"/><xsl:text>", </xsl:text>
+ <!-- validity -->
+ <xsl:value-of select="number(ts:expected/@validity = 'valid')"/><xsl:text>, "</xsl:text>
+ <!-- test-description -->
+ <xsl:value-of select="ts:annotation/ts:documentation/text()"/><xsl:text>"))
+</xsl:text>
+ </xsl:for-each>
+ <xsl:for-each select="ts:instanceTest">
+ <!-- groupName, isSchema, Name, Accepted, File, Val, Descr -->
+ <xsl:text>r.addTest(XSTCInstanceTest("</xsl:text>
+ <!-- group -->
+ <xsl:value-of select="$group"/><xsl:text>", "</xsl:text>
+ <!-- test-name -->
+ <xsl:value-of select="@name"/><xsl:text>", </xsl:text>
+ <!-- accepted -->
+ <xsl:value-of select="number(ts:current/@status = 'accepted')"/><xsl:text>, "</xsl:text>
+ <!-- filename -->
+ <xsl:value-of select="ts:instanceDocument/@xl:href"/><xsl:text>", </xsl:text>
+ <!-- validity -->
+ <xsl:value-of select="number(ts:expected/@validity = 'valid')"/><xsl:text>, "</xsl:text>
+ <!-- test-description -->
+ <xsl:value-of select="ts:annotation/ts:documentation/text()"/><xsl:text>"))
+</xsl:text>
+ </xsl:for-each>
+ </xsl:template>
+
+</xsl:stylesheet> \ No newline at end of file
diff --git a/libxml2-2.9.10/xstc/xstc.py b/libxml2-2.9.10/xstc/xstc.py
new file mode 100755
index 0000000..ca011bb
--- /dev/null
+++ b/libxml2-2.9.10/xstc/xstc.py
@@ -0,0 +1,693 @@
+#!/usr/bin/env python
+
+#
+# This is the MS subset of the W3C test suite for XML Schemas.
+# This file is generated from the MS W3c test suite description file.
+#
+
+import sys, os
+import exceptions, optparse
+import libxml2
+
+opa = optparse.OptionParser()
+
+opa.add_option("-b", "--base", action="store", type="string", dest="baseDir",
+ default="",
+ help="""The base directory; i.e. the parent folder of the
+ "nisttest", "suntest" and "msxsdtest" directories.""")
+
+opa.add_option("-o", "--out", action="store", type="string", dest="logFile",
+ default="test.log",
+ help="The filepath of the log file to be created")
+
+opa.add_option("--log", action="store_true", dest="enableLog",
+ default=False,
+ help="Create the log file")
+
+opa.add_option("--no-test-out", action="store_true", dest="disableTestStdOut",
+ default=False,
+ help="Don't output test results")
+
+opa.add_option("-s", "--silent", action="store_true", dest="silent", default=False,
+ help="Disables display of all tests")
+
+opa.add_option("-v", "--verbose", action="store_true", dest="verbose",
+ default=False,
+ help="Displays all tests (only if --silent is not set)")
+
+opa.add_option("-x", "--max", type="int", dest="maxTestCount",
+ default="-1",
+ help="The maximum number of tests to be run")
+
+opa.add_option("-t", "--test", type="string", dest="singleTest",
+ default=None,
+ help="Runs the specified test only")
+
+opa.add_option("--tsw", "--test-starts-with", type="string", dest="testStartsWith",
+ default=None,
+ help="Runs the specified test(s), starting with the given string")
+
+opa.add_option("--rieo", "--report-internal-errors-only", action="store_true",
+ dest="reportInternalErrOnly", default=False,
+ help="Display erroneous tests of type 'internal' only")
+
+opa.add_option("--rueo", "--report-unimplemented-errors-only", action="store_true",
+ dest="reportUnimplErrOnly", default=False,
+ help="Display erroneous tests of type 'unimplemented' only")
+
+opa.add_option("--rmleo", "--report-mem-leak-errors-only", action="store_true",
+ dest="reportMemLeakErrOnly", default=False,
+ help="Display erroneous tests of type 'memory leak' only")
+
+opa.add_option("-c", "--combines", type="string", dest="combines",
+ default=None,
+ help="Combines to be run (all if omitted)")
+
+opa.add_option("--csw", "--csw", type="string", dest="combineStartsWith",
+ default=None,
+ help="Combines to be run (all if omitted)")
+
+opa.add_option("--rc", "--report-combines", action="store_true",
+ dest="reportCombines", default=False,
+ help="Display combine reports")
+
+opa.add_option("--rec", "--report-err-combines", action="store_true",
+ dest="reportErrCombines", default=False,
+ help="Display erroneous combine reports only")
+
+opa.add_option("--debug", action="store_true",
+ dest="debugEnabled", default=False,
+ help="Displays debug messages")
+
+opa.add_option("--info", action="store_true",
+ dest="info", default=False,
+ help="Displays info on the suite only. Does not run any test.")
+opa.add_option("--sax", action="store_true",
+ dest="validationSAX", default=False,
+ help="Use SAX2-driven validation.")
+opa.add_option("--tn", action="store_true",
+ dest="displayTestName", default=False,
+ help="Display the test name in every case.")
+
+(options, args) = opa.parse_args()
+
+if options.combines is not None:
+ options.combines = options.combines.split()
+
+################################################
+# The vars below are not intended to be changed.
+#
+
+msgSchemaNotValidButShould = "The schema should be valid."
+msgSchemaValidButShouldNot = "The schema should be invalid."
+msgInstanceNotValidButShould = "The instance should be valid."
+msgInstanceValidButShouldNot = "The instance should be invalid."
+vendorNIST = "NIST"
+vendorNIST_2 = "NIST-2"
+vendorSUN = "SUN"
+vendorMS = "MS"
+
+###################
+# Helper functions.
+#
+vendor = None
+
+def handleError(test, msg):
+ global options
+ if not options.silent:
+ test.addLibLog("'%s' LIB: %s" % (test.name, msg))
+ if msg.find("Unimplemented") > -1:
+ test.failUnimplemented()
+ elif msg.find("Internal") > -1:
+ test.failInternal()
+
+
+def fixFileNames(fileName):
+ if (fileName is None) or (fileName == ""):
+ return ""
+ dirs = fileName.split("/")
+ if dirs[1] != "Tests":
+ fileName = os.path.join(".", "Tests")
+ for dir in dirs[1:]:
+ fileName = os.path.join(fileName, dir)
+ return fileName
+
+class XSTCTestGroup:
+ def __init__(self, name, schemaFileName, descr):
+ global vendor, vendorNIST_2
+ self.name = name
+ self.descr = descr
+ self.mainSchema = True
+ self.schemaFileName = fixFileNames(schemaFileName)
+ self.schemaParsed = False
+ self.schemaTried = False
+
+ def setSchema(self, schemaFileName, parsed):
+ if not self.mainSchema:
+ return
+ self.mainSchema = False
+ self.schemaParsed = parsed
+ self.schemaTried = True
+
+class XSTCTestCase:
+
+ # <!-- groupName, Name, Accepted, File, Val, Descr
+ def __init__(self, isSchema, groupName, name, accepted, file, val, descr):
+ global options
+ #
+ # Constructor.
+ #
+ self.testRunner = None
+ self.isSchema = isSchema
+ self.groupName = groupName
+ self.name = name
+ self.accepted = accepted
+ self.fileName = fixFileNames(file)
+ self.val = val
+ self.descr = descr
+ self.failed = False
+ self.combineName = None
+
+ self.log = []
+ self.libLog = []
+ self.initialMemUsed = 0
+ self.memLeak = 0
+ self.excepted = False
+ self.bad = False
+ self.unimplemented = False
+ self.internalErr = False
+ self.noSchemaErr = False
+ self.failed = False
+ #
+ # Init the log.
+ #
+ if not options.silent:
+ if self.descr is not None:
+ self.log.append("'%s' descr: %s\n" % (self.name, self.descr))
+ self.log.append("'%s' exp validity: %d\n" % (self.name, self.val))
+
+ def initTest(self, runner):
+ global vendorNIST, vendorSUN, vendorMS, vendorNIST_2, options, vendor
+ #
+ # Get the test-group.
+ #
+ self.runner = runner
+ self.group = runner.getGroup(self.groupName)
+ if vendor == vendorMS or vendor == vendorSUN:
+ #
+ # Use the last given directory for the combine name.
+ #
+ dirs = self.fileName.split("/")
+ self.combineName = dirs[len(dirs) -2]
+ elif vendor == vendorNIST:
+ #
+ # NIST files are named in the following form:
+ # "NISTSchema-short-pattern-1.xsd"
+ #
+ tokens = self.name.split("-")
+ self.combineName = tokens[1]
+ elif vendor == vendorNIST_2:
+ #
+ # Group-names have the form: "atomic-normalizedString-length-1"
+ #
+ tokens = self.groupName.split("-")
+ self.combineName = "%s-%s" % (tokens[0], tokens[1])
+ else:
+ self.combineName = "unkown"
+ raise Exception("Could not compute the combine name of a test.")
+ if (not options.silent) and (self.group.descr is not None):
+ self.log.append("'%s' group-descr: %s\n" % (self.name, self.group.descr))
+
+
+ def addLibLog(self, msg):
+ """This one is intended to be used by the error handler
+ function"""
+ global options
+ if not options.silent:
+ self.libLog.append(msg)
+
+ def fail(self, msg):
+ global options
+ self.failed = True
+ if not options.silent:
+ self.log.append("'%s' ( FAILED: %s\n" % (self.name, msg))
+
+ def failNoSchema(self):
+ global options
+ self.failed = True
+ self.noSchemaErr = True
+ if not options.silent:
+ self.log.append("'%s' X NO-SCHEMA\n" % (self.name))
+
+ def failInternal(self):
+ global options
+ self.failed = True
+ self.internalErr = True
+ if not options.silent:
+ self.log.append("'%s' * INTERNAL\n" % self.name)
+
+ def failUnimplemented(self):
+ global options
+ self.failed = True
+ self.unimplemented = True
+ if not options.silent:
+ self.log.append("'%s' ? UNIMPLEMENTED\n" % self.name)
+
+ def failCritical(self, msg):
+ global options
+ self.failed = True
+ self.bad = True
+ if not options.silent:
+ self.log.append("'%s' ! BAD: %s\n" % (self.name, msg))
+
+ def failExcept(self, e):
+ global options
+ self.failed = True
+ self.excepted = True
+ if not options.silent:
+ self.log.append("'%s' # EXCEPTION: %s\n" % (self.name, e.__str__()))
+
+ def setUp(self):
+ #
+ # Set up Libxml2.
+ #
+ self.initialMemUsed = libxml2.debugMemory(1)
+ libxml2.initParser()
+ libxml2.lineNumbersDefault(1)
+ libxml2.registerErrorHandler(handleError, self)
+
+ def tearDown(self):
+ libxml2.schemaCleanupTypes()
+ libxml2.cleanupParser()
+ self.memLeak = libxml2.debugMemory(1) - self.initialMemUsed
+
+ def isIOError(self, file, docType):
+ err = None
+ try:
+ err = libxml2.lastError()
+ except:
+ # Suppress exceptions.
+ pass
+ if (err is None):
+ return False
+ if err.domain() == libxml2.XML_FROM_IO:
+ self.failCritical("failed to access the %s resource '%s'\n" % (docType, file))
+
+ def debugMsg(self, msg):
+ global options
+ if options.debugEnabled:
+ sys.stdout.write("'%s' DEBUG: %s\n" % (self.name, msg))
+
+ def finalize(self):
+ global options
+ """Adds additional info to the log."""
+ #
+ # Add libxml2 messages.
+ #
+ if not options.silent:
+ self.log.extend(self.libLog)
+ #
+ # Add memory leaks.
+ #
+ if self.memLeak != 0:
+ self.log.append("%s + memory leak: %d bytes\n" % (self.name, self.memLeak))
+
+ def run(self):
+ """Runs a test."""
+ global options
+
+ ##filePath = os.path.join(options.baseDir, self.fileName)
+ # filePath = "%s/%s/%s/%s" % (options.baseDir, self.test_Folder, self.schema_Folder, self.schema_File)
+ if options.displayTestName:
+ sys.stdout.write("'%s'\n" % self.name)
+ try:
+ self.validate()
+ except (Exception, libxml2.parserError, libxml2.treeError), e:
+ self.failExcept(e)
+
+def parseSchema(fileName):
+ schema = None
+ ctxt = libxml2.schemaNewParserCtxt(fileName)
+ try:
+ try:
+ schema = ctxt.schemaParse()
+ except:
+ pass
+ finally:
+ del ctxt
+ return schema
+
+
+class XSTCSchemaTest(XSTCTestCase):
+
+ def __init__(self, groupName, name, accepted, file, val, descr):
+ XSTCTestCase.__init__(self, 1, groupName, name, accepted, file, val, descr)
+
+ def validate(self):
+ global msgSchemaNotValidButShould, msgSchemaValidButShouldNot
+ schema = None
+ filePath = self.fileName
+ # os.path.join(options.baseDir, self.fileName)
+ valid = 0
+ try:
+ #
+ # Parse the schema.
+ #
+ self.debugMsg("loading schema: %s" % filePath)
+ schema = parseSchema(filePath)
+ self.debugMsg("after loading schema")
+ if schema is None:
+ self.debugMsg("schema is None")
+ self.debugMsg("checking for IO errors...")
+ if self.isIOError(file, "schema"):
+ return
+ self.debugMsg("checking schema result")
+ if (schema is None and self.val) or (schema is not None and self.val == 0):
+ self.debugMsg("schema result is BAD")
+ if (schema == None):
+ self.fail(msgSchemaNotValidButShould)
+ else:
+ self.fail(msgSchemaValidButShouldNot)
+ else:
+ self.debugMsg("schema result is OK")
+ finally:
+ self.group.setSchema(self.fileName, schema is not None)
+ del schema
+
+class XSTCInstanceTest(XSTCTestCase):
+
+ def __init__(self, groupName, name, accepted, file, val, descr):
+ XSTCTestCase.__init__(self, 0, groupName, name, accepted, file, val, descr)
+
+ def validate(self):
+ instance = None
+ schema = None
+ filePath = self.fileName
+ # os.path.join(options.baseDir, self.fileName)
+
+ if not self.group.schemaParsed and self.group.schemaTried:
+ self.failNoSchema()
+ return
+
+ self.debugMsg("loading instance: %s" % filePath)
+ parserCtxt = libxml2.newParserCtxt()
+ if (parserCtxt is None):
+ # TODO: Is this one necessary, or will an exception
+ # be already raised?
+ raise Exception("Could not create the instance parser context.")
+ if not options.validationSAX:
+ try:
+ try:
+ instance = parserCtxt.ctxtReadFile(filePath, None, libxml2.XML_PARSE_NOWARNING)
+ except:
+ # Suppress exceptions.
+ pass
+ finally:
+ del parserCtxt
+ self.debugMsg("after loading instance")
+ if instance is None:
+ self.debugMsg("instance is None")
+ self.failCritical("Failed to parse the instance for unknown reasons.")
+ return
+ try:
+ #
+ # Validate the instance.
+ #
+ self.debugMsg("loading schema: %s" % self.group.schemaFileName)
+ schema = parseSchema(self.group.schemaFileName)
+ try:
+ validationCtxt = schema.schemaNewValidCtxt()
+ #validationCtxt = libxml2.schemaNewValidCtxt(None)
+ if (validationCtxt is None):
+ self.failCritical("Could not create the validation context.")
+ return
+ try:
+ self.debugMsg("validating instance")
+ if options.validationSAX:
+ instance_Err = validationCtxt.schemaValidateFile(filePath, 0)
+ else:
+ instance_Err = validationCtxt.schemaValidateDoc(instance)
+ self.debugMsg("after instance validation")
+ self.debugMsg("instance-err: %d" % instance_Err)
+ if (instance_Err != 0 and self.val == 1) or (instance_Err == 0 and self.val == 0):
+ self.debugMsg("instance result is BAD")
+ if (instance_Err != 0):
+ self.fail(msgInstanceNotValidButShould)
+ else:
+ self.fail(msgInstanceValidButShouldNot)
+
+ else:
+ self.debugMsg("instance result is OK")
+ finally:
+ del validationCtxt
+ finally:
+ del schema
+ finally:
+ if instance is not None:
+ instance.freeDoc()
+
+
+####################
+# Test runner class.
+#
+
+class XSTCTestRunner:
+
+ CNT_TOTAL = 0
+ CNT_RAN = 1
+ CNT_SUCCEEDED = 2
+ CNT_FAILED = 3
+ CNT_UNIMPLEMENTED = 4
+ CNT_INTERNAL = 5
+ CNT_BAD = 6
+ CNT_EXCEPTED = 7
+ CNT_MEMLEAK = 8
+ CNT_NOSCHEMA = 9
+ CNT_NOTACCEPTED = 10
+ CNT_SCHEMA_TEST = 11
+
+ def __init__(self):
+ self.logFile = None
+ self.counters = self.createCounters()
+ self.testList = []
+ self.combinesRan = {}
+ self.groups = {}
+ self.curGroup = None
+
+ def createCounters(self):
+ counters = {self.CNT_TOTAL:0, self.CNT_RAN:0, self.CNT_SUCCEEDED:0,
+ self.CNT_FAILED:0, self.CNT_UNIMPLEMENTED:0, self.CNT_INTERNAL:0, self.CNT_BAD:0,
+ self.CNT_EXCEPTED:0, self.CNT_MEMLEAK:0, self.CNT_NOSCHEMA:0, self.CNT_NOTACCEPTED:0,
+ self.CNT_SCHEMA_TEST:0}
+
+ return counters
+
+ def addTest(self, test):
+ self.testList.append(test)
+ test.initTest(self)
+
+ def getGroup(self, groupName):
+ return self.groups[groupName]
+
+ def addGroup(self, group):
+ self.groups[group.name] = group
+
+ def updateCounters(self, test, counters):
+ if test.memLeak != 0:
+ counters[self.CNT_MEMLEAK] += 1
+ if not test.failed:
+ counters[self.CNT_SUCCEEDED] +=1
+ if test.failed:
+ counters[self.CNT_FAILED] += 1
+ if test.bad:
+ counters[self.CNT_BAD] += 1
+ if test.unimplemented:
+ counters[self.CNT_UNIMPLEMENTED] += 1
+ if test.internalErr:
+ counters[self.CNT_INTERNAL] += 1
+ if test.noSchemaErr:
+ counters[self.CNT_NOSCHEMA] += 1
+ if test.excepted:
+ counters[self.CNT_EXCEPTED] += 1
+ if not test.accepted:
+ counters[self.CNT_NOTACCEPTED] += 1
+ if test.isSchema:
+ counters[self.CNT_SCHEMA_TEST] += 1
+ return counters
+
+ def displayResults(self, out, all, combName, counters):
+ out.write("\n")
+ if all:
+ if options.combines is not None:
+ out.write("combine(s): %s\n" % str(options.combines))
+ elif combName is not None:
+ out.write("combine : %s\n" % combName)
+ out.write(" total : %d\n" % counters[self.CNT_TOTAL])
+ if all or options.combines is not None:
+ out.write(" ran : %d\n" % counters[self.CNT_RAN])
+ out.write(" (schemata) : %d\n" % counters[self.CNT_SCHEMA_TEST])
+ # out.write(" succeeded : %d\n" % counters[self.CNT_SUCCEEDED])
+ out.write(" not accepted : %d\n" % counters[self.CNT_NOTACCEPTED])
+ if counters[self.CNT_FAILED] > 0:
+ out.write(" failed : %d\n" % counters[self.CNT_FAILED])
+ out.write(" -> internal : %d\n" % counters[self.CNT_INTERNAL])
+ out.write(" -> unimpl. : %d\n" % counters[self.CNT_UNIMPLEMENTED])
+ out.write(" -> skip-invalid-schema : %d\n" % counters[self.CNT_NOSCHEMA])
+ out.write(" -> bad : %d\n" % counters[self.CNT_BAD])
+ out.write(" -> exceptions : %d\n" % counters[self.CNT_EXCEPTED])
+ out.write(" memory leaks : %d\n" % counters[self.CNT_MEMLEAK])
+
+ def displayShortResults(self, out, all, combName, counters):
+ out.write("Ran %d of %d tests (%d schemata):" % (counters[self.CNT_RAN],
+ counters[self.CNT_TOTAL], counters[self.CNT_SCHEMA_TEST]))
+ # out.write(" succeeded : %d\n" % counters[self.CNT_SUCCEEDED])
+ if counters[self.CNT_NOTACCEPTED] > 0:
+ out.write(" %d not accepted" % (counters[self.CNT_NOTACCEPTED]))
+ if counters[self.CNT_FAILED] > 0 or counters[self.CNT_MEMLEAK] > 0:
+ if counters[self.CNT_FAILED] > 0:
+ out.write(" %d failed" % (counters[self.CNT_FAILED]))
+ out.write(" (")
+ if counters[self.CNT_INTERNAL] > 0:
+ out.write(" %d internal" % (counters[self.CNT_INTERNAL]))
+ if counters[self.CNT_UNIMPLEMENTED] > 0:
+ out.write(" %d unimplemented" % (counters[self.CNT_UNIMPLEMENTED]))
+ if counters[self.CNT_NOSCHEMA] > 0:
+ out.write(" %d skip-invalid-schema" % (counters[self.CNT_NOSCHEMA]))
+ if counters[self.CNT_BAD] > 0:
+ out.write(" %d bad" % (counters[self.CNT_BAD]))
+ if counters[self.CNT_EXCEPTED] > 0:
+ out.write(" %d exception" % (counters[self.CNT_EXCEPTED]))
+ out.write(" )")
+ if counters[self.CNT_MEMLEAK] > 0:
+ out.write(" %d leaks" % (counters[self.CNT_MEMLEAK]))
+ out.write("\n")
+ else:
+ out.write(" all passed\n")
+
+ def reportCombine(self, combName):
+ global options
+
+ counters = self.createCounters()
+ #
+ # Compute evaluation counters.
+ #
+ for test in self.combinesRan[combName]:
+ counters[self.CNT_TOTAL] += 1
+ counters[self.CNT_RAN] += 1
+ counters = self.updateCounters(test, counters)
+ if options.reportErrCombines and (counters[self.CNT_FAILED] == 0) and (counters[self.CNT_MEMLEAK] == 0):
+ pass
+ else:
+ if options.enableLog:
+ self.displayResults(self.logFile, False, combName, counters)
+ self.displayResults(sys.stdout, False, combName, counters)
+
+ def displayTestLog(self, test):
+ sys.stdout.writelines(test.log)
+ sys.stdout.write("~~~~~~~~~~\n")
+
+ def reportTest(self, test):
+ global options
+
+ error = test.failed or test.memLeak != 0
+ #
+ # Only erroneous tests will be written to the log,
+ # except @verbose is switched on.
+ #
+ if options.enableLog and (options.verbose or error):
+ self.logFile.writelines(test.log)
+ self.logFile.write("~~~~~~~~~~\n")
+ #
+ # if not @silent, only erroneous tests will be
+ # written to stdout, except @verbose is switched on.
+ #
+ if not options.silent:
+ if options.reportInternalErrOnly and test.internalErr:
+ self.displayTestLog(test)
+ if options.reportMemLeakErrOnly and test.memLeak != 0:
+ self.displayTestLog(test)
+ if options.reportUnimplErrOnly and test.unimplemented:
+ self.displayTestLog(test)
+ if (options.verbose or error) and (not options.reportInternalErrOnly) and (not options.reportMemLeakErrOnly) and (not options.reportUnimplErrOnly):
+ self.displayTestLog(test)
+
+
+ def addToCombines(self, test):
+ found = False
+ if self.combinesRan.has_key(test.combineName):
+ self.combinesRan[test.combineName].append(test)
+ else:
+ self.combinesRan[test.combineName] = [test]
+
+ def run(self):
+
+ global options
+
+ if options.info:
+ for test in self.testList:
+ self.addToCombines(test)
+ sys.stdout.write("Combines: %d\n" % len(self.combinesRan))
+ sys.stdout.write("%s\n" % self.combinesRan.keys())
+ return
+
+ if options.enableLog:
+ self.logFile = open(options.logFile, "w")
+ try:
+ for test in self.testList:
+ self.counters[self.CNT_TOTAL] += 1
+ #
+ # Filter tests.
+ #
+ if options.singleTest is not None and options.singleTest != "":
+ if (test.name != options.singleTest):
+ continue
+ elif options.combines is not None:
+ if not options.combines.__contains__(test.combineName):
+ continue
+ elif options.testStartsWith is not None:
+ if not test.name.startswith(options.testStartsWith):
+ continue
+ elif options.combineStartsWith is not None:
+ if not test.combineName.startswith(options.combineStartsWith):
+ continue
+
+ if options.maxTestCount != -1 and self.counters[self.CNT_RAN] >= options.maxTestCount:
+ break
+ self.counters[self.CNT_RAN] += 1
+ #
+ # Run the thing, dammit.
+ #
+ try:
+ test.setUp()
+ try:
+ test.run()
+ finally:
+ test.tearDown()
+ finally:
+ #
+ # Evaluate.
+ #
+ test.finalize()
+ self.reportTest(test)
+ if options.reportCombines or options.reportErrCombines:
+ self.addToCombines(test)
+ self.counters = self.updateCounters(test, self.counters)
+ finally:
+ if options.reportCombines or options.reportErrCombines:
+ #
+ # Build a report for every single combine.
+ #
+ # TODO: How to sort a dict?
+ #
+ self.combinesRan.keys().sort(None)
+ for key in self.combinesRan.keys():
+ self.reportCombine(key)
+
+ #
+ # Display the final report.
+ #
+ if options.silent:
+ self.displayShortResults(sys.stdout, True, None, self.counters)
+ else:
+ sys.stdout.write("===========================\n")
+ self.displayResults(sys.stdout, True, None, self.counters)