From 39b493e2e9326bfbdd842833f0ddb86f280b3df4 Mon Sep 17 00:00:00 2001 From: Jez Higgins Date: Mon, 9 Sep 2024 22:10:57 +0100 Subject: [PATCH] More test harnesses Builds sax, dom, utils, taggle, xpath, and xslt tests in both narrow and wide character modes. By default the test apps are off, but can be enabled using BUILD_ARABICA_TESTS=ON --- .bzrignore | 103 -------------------------- CMakeLists.txt | 144 ++++++++++++++++++++++++++++-------- tests/DOM/dom_conf_test.hpp | 6 -- tests/DOM/test_path.hpp.in | 3 - tests/XSLT/xslt_test.hpp | 8 +- 5 files changed, 116 insertions(+), 148 deletions(-) delete mode 100644 .bzrignore delete mode 100644 tests/DOM/test_path.hpp.in diff --git a/.bzrignore b/.bzrignore deleted file mode 100644 index 5487f0e7..00000000 --- a/.bzrignore +++ /dev/null @@ -1,103 +0,0 @@ -*.o -*~ -*.tar.gz -*.tar.bz2 -*.zip -*.ilk -*.pdb -*.exp -*.lib -*.bsc -*.exe -*.lo -*.la -*.ncb -*.suo -*.lnk -*.dll -*.log -*.trs -*.sdf -*.opensdf -*.DS_Store* - -lib -doc/html - -.libs -.deps -.dirstamp -arabica.pc - -include/SAX/ArabicaConfig.hpp -include/SAX/stamp-h1 -tests/XSLT/test_path.hpp - -*/Debug* -*/Release* - -# IDE files -vs9/mangle.sln -vs9/*.user -vs10/mangle.sln -*.vcxproj.filters -*.vcxproj.user - -.idea - -# Examples -examples/DOM/dom2pyx -examples/DOM/domwriter -examples/SAX/pyx -examples/SAX/simple_handler -examples/SAX/writer -examples/SAX/xmlbase -examples/Taggle/taggle -examples/Utils/transcode -examples/XPath/xgrep -examples/XSLT/mangle -fractal*.html -tests/SAX/filter_test* -tests/DOM/dom_test* -tests/XPath/xpath_test* -tests/Taggle/taggle_test -tests/Utils/utils_test* -tests/XSLT/xslt_test* -bin/mandelbrot-*.html - -# Autoconf -m4/lt~obsolete.m4 -m4/ltversion.m4 -m4/ltsugar.m4 -m4/ltoptions.m4 -m4/libtool.m4 -test-driver -libtool -ltmain.sh -config.log -config.status -config.cache -configure -compile -autom4te.cache -missing -Makefile -Makefile.in -aclocal.m4 - -# CMake -CMakeCache.txt -CMakeFiles -CMakeFiles/* -cmake_install.cmake - -build/* -cmake-build-debug/ - -# Misc -*.stackdump - -spec -gmon.out -ipch -test_path.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 4227bb67..d4dc7b4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,8 @@ option(BUILD_SHARED_LIBS "Build as shared libaries" OFF) option(BUILD_ARABICA_EXAMPLES "Build all arabica examples" ON) +option(BUILD_ARABICA_TESTS "Build tests" OFF) + # # Enable/Disable Boost # @@ -488,37 +490,121 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/SAX/ArabicaConfig.hpp # # tests -include(CTest) +if(BUILD_ARABICA_TESTS) + message(STATUS "Building tests with ${ARABICA_XML_BACKEND} compile flag") -set(CPP_UNIT_SOURCES - tests/CppUnit/TestRunner.hpp - tests/CppUnit/framework/CppUnitException.h - tests/CppUnit/framework/estring.h - tests/CppUnit/framework/Guards.h - tests/CppUnit/framework/Test.h - tests/CppUnit/framework/TestCaller.h - tests/CppUnit/framework/TestCase.h - tests/CppUnit/framework/TestFailure.h - tests/CppUnit/framework/TestResult.h - tests/CppUnit/framework/TestSuite.h - tests/CppUnit/textui/TextTestResult.h - tests/CppUnit/textui/TableTestResult.hpp - tests/CppUnit/textui/XmlTestResult.hpp - tests/CppUnit/framework/TestCase.cpp - tests/CppUnit/framework/TestFailure.cpp - tests/CppUnit/framework/TestResult.cpp - tests/CppUnit/framework/TestSuite.cpp - tests/CppUnit/TestRunner.cpp - tests/CppUnit/textui/TextTestResult.cpp - tests/CppUnit/textui/TableTestResult.cpp - tests/CppUnit/textui/XmlTestResult.cpp -) -add_library(cppunit STATIC - ${CPP_UNIT_SOURCES}) + include(CTest) -add_executable(test_sax_filter tests/SAX/filter_test.cpp) -target_link_libraries(test_sax_filter arabica cppunit) -add_test(sax_filter test_sax_filter) + set(CPP_UNIT_SOURCES + tests/CppUnit/TestRunner.hpp + tests/CppUnit/framework/CppUnitException.h + tests/CppUnit/framework/estring.h + tests/CppUnit/framework/Guards.h + tests/CppUnit/framework/Test.h + tests/CppUnit/framework/TestCaller.h + tests/CppUnit/framework/TestCase.h + tests/CppUnit/framework/TestFailure.h + tests/CppUnit/framework/TestResult.h + tests/CppUnit/framework/TestSuite.h + tests/CppUnit/textui/TextTestResult.h + tests/CppUnit/textui/TableTestResult.hpp + tests/CppUnit/textui/XmlTestResult.hpp + tests/CppUnit/framework/TestCase.cpp + tests/CppUnit/framework/TestFailure.cpp + tests/CppUnit/framework/TestResult.cpp + tests/CppUnit/framework/TestSuite.cpp + tests/CppUnit/TestRunner.cpp + tests/CppUnit/textui/TextTestResult.cpp + tests/CppUnit/textui/TableTestResult.cpp + tests/CppUnit/textui/XmlTestResult.cpp + ) + add_library(cppunit STATIC + ${CPP_UNIT_SOURCES}) + + add_executable(test_sax_filter tests/SAX/filter_test.cpp) + target_link_libraries(test_sax_filter arabica cppunit) + add_executable(test_sax_filter_wide tests/SAX/filter_test_wide.cpp) + target_link_libraries(test_sax_filter_wide arabica cppunit) + add_test(sax_filter test_sax_filter -v) + add_test(sax_filter_wide test_sax_filter_wide -v) + + set(DOM_TEST_SOURCES + tests/DOM/dom_test_suite.hpp + tests/DOM/dom_conf_test.hpp + tests/DOM/test_Attribute.hpp + tests/DOM/test_CDATA.hpp + tests/DOM/test_CharacterData.hpp + tests/DOM/test_DOMImplementation.hpp + tests/DOM/test_Document.hpp + tests/DOM/test_DocumentFragment.hpp + tests/DOM/test_DocumentType.hpp + tests/DOM/test_Element.hpp + tests/DOM/test_NamedNodeMap.hpp + tests/DOM/test_ProcessingInstruction.hpp + tests/DOM/test_Siblings.hpp + tests/DOM/test_Text.hpp + tests/DOM/test_SAX2DOM.hpp + tests/DOM/test_TreeWalker.hpp + tests/DOM/test_Stream.hpp + ) + add_executable(test_dom tests/DOM/main.cpp ${DOM_TEST_SOURCES}) + include_directories(test_dom tests/DOM) + target_link_libraries(test_dom arabica cppunit) + add_executable(test_dom_wide tests/DOM/main_wide.cpp ${DOM_TEST_SOURCES}) + include_directories(test_dom_wide tests/DOM) + target_link_libraries(test_dom_wide arabica cppunit) + add_test(dom test_dom -v) + add_test(dom_wide test_dom_wide -v) + + add_executable(test_taggle tests/Taggle/taggle_test.cpp tests/Taggle/test_Taggle.hpp) + target_link_libraries(test_taggle arabica cppunit) + add_test(taggle test_taggle -v) + + set(UTIL_TEST_SOURCES + tests/Utils/test_base64.hpp + tests/Utils/test_normalize_whitespace.hpp + tests/Utils/test_qname.hpp + tests/Utils/test_uri.hpp + tests/Utils/test_xml_strings.hpp + tests/Utils/util_test_suite.hpp + ) + add_executable(test_util tests/Utils/utils_test.cpp ${UTIL_TEST_SOURCES}) + target_link_libraries(test_util arabica cppunit) + add_executable(test_util_wide tests/Utils/utils_test_wide.cpp ${UTIL_TEST_SOURCES}) + target_link_libraries(test_util_wide arabica cppunit) + add_test(util test_util -v) + add_test(util_wide test_util_wide -v) + + set(XPATH_TEST_SOURCES + tests/XPath/arithmetic_test.hpp + tests/XPath/attr_value_test.hpp + tests/XPath/axis_enumerator_test.hpp + tests/XPath/execute_test.hpp + tests/XPath/expression_test.hpp + tests/XPath/logical_test.hpp + tests/XPath/match_test.hpp + tests/XPath/node_test_test.hpp + tests/XPath/parse_test.hpp + tests/XPath/relational_test.hpp + tests/XPath/step_test.hpp + tests/XPath/text_node_test.hpp + tests/XPath/value_test.hpp + tests/XPath/xpath_test_suite.hpp + ) + add_executable(test_xpath tests/XPath/main.cpp ${XPATH_TEST_SOURCES}) + target_link_libraries(test_xpath arabica cppunit) + add_executable(test_xpath_wide tests/XPath/main_wide.cpp ${XPATH_TEST_SOURCES}) + target_link_libraries(test_xpath_wide arabica cppunit) + add_test(xpath test_xpath -v) + add_test(xpath_wide test_xpath_wide -v) + + add_executable(test_xslt tests/XSLT/main.cpp tests/XSLT/xslt_test.hpp) + target_link_libraries(test_xslt arabica cppunit) + add_executable(test_xslt_wide tests/XSLT/main_wide.cpp tests/XSLT/xslt_test.hpp) + target_link_libraries(test_xslt_wide arabica cppunit) + add_test(xslt test_xslt -v) + add_test(xslt_wide test_xslt_wide -v) + endif() if(BUILD_ARABICA_EXAMPLES) diff --git a/tests/DOM/dom_conf_test.hpp b/tests/DOM/dom_conf_test.hpp index e5d3d232..37c74eef 100644 --- a/tests/DOM/dom_conf_test.hpp +++ b/tests/DOM/dom_conf_test.hpp @@ -7,13 +7,7 @@ #include - -#ifdef ARABICA_WINDOWS const std::string PATH_PREFIX="../tests/DOM/conformance/files/"; -#else -#include "test_path.hpp" -const std::string PATH_PREFIX=test_path; -#endif template class DOMTestCase : public TestCase diff --git a/tests/DOM/test_path.hpp.in b/tests/DOM/test_path.hpp.in deleted file mode 100644 index 84e79e57..00000000 --- a/tests/DOM/test_path.hpp.in +++ /dev/null @@ -1,3 +0,0 @@ - -const char* test_path = "@top_srcdir@/tests/DOM/conformance/files/"; - diff --git a/tests/XSLT/xslt_test.hpp b/tests/XSLT/xslt_test.hpp index ee8799f9..6422b802 100644 --- a/tests/XSLT/xslt_test.hpp +++ b/tests/XSLT/xslt_test.hpp @@ -48,15 +48,9 @@ private: TestSuite* suite(const std::string& path, const std::string& catalog_filename); }; -#ifdef ARABICA_WINDOWS const std::string PATH_PREFIX="../tests/XSLT/testsuite/TESTS/"; const std::string SEPERATOR = "/"; -#else -#include "test_path.hpp" -const std::string PATH_PREFIX=test_path; -const std::string SEPERATOR = "/"; -#endif - + template Arabica::DOM::Document buildDOM(const std::string& filename) {