react-native-nitro-xlsx 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NitroXlsx.podspec +26 -27
- package/Package.swift +31 -10
- package/README.md +1 -1
- package/android/CMakeLists.txt +20 -27
- package/package.json +2 -2
- package/scripts/run-cpp-tests.sh +1 -1
- package/thirdparty/OpenXLSX/.clang-format +118 -0
- package/thirdparty/OpenXLSX/.clang-tidy +28 -0
- package/thirdparty/OpenXLSX/.gitignore +130 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
- package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
- package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
- package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
- package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
- package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
- package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
- package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
- package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
- package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
- package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
- package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
- package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
- package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
- package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
- package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
- package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
- package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
- package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
- package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
- package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
- package/thirdparty/OpenXLSX/LICENSE.md +29 -0
- package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
- package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
- package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
- package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
- package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
- package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
- package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
- package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
- package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
- package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
- package/thirdparty/OpenXLSX/README.md +1279 -0
- package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
- package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
- package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
- package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
- package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
- package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
- package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
- package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
- package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
- package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
- package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
- package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
- package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
- package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
- package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
- package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
- package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
- package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
- package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
- package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
- package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
- package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
- package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
- package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
- package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
- package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
- package/thirdparty/OpenXLSX/vcpkg.json +24 -0
- package/thirdparty/README.md +42 -0
- package/thirdparty/miniz/.clang-format +47 -0
- package/thirdparty/miniz/.travis.yml +2 -0
- package/thirdparty/miniz/CMakeLists.txt +333 -0
- package/thirdparty/miniz/CMakePresets.json +31 -0
- package/thirdparty/miniz/ChangeLog.md +272 -0
- package/thirdparty/miniz/Config.cmake.in +1 -0
- package/thirdparty/miniz/LICENSE +22 -0
- package/thirdparty/miniz/amalgamate.sh +57 -0
- package/thirdparty/miniz/examples/example1.c +105 -0
- package/thirdparty/miniz/examples/example2.c +164 -0
- package/thirdparty/miniz/examples/example3.c +269 -0
- package/thirdparty/miniz/examples/example4.c +102 -0
- package/thirdparty/miniz/examples/example5.c +327 -0
- package/thirdparty/miniz/examples/example6.c +189 -0
- package/thirdparty/miniz/meson.build +21 -0
- package/thirdparty/miniz/miniz.c +646 -0
- package/thirdparty/miniz/miniz.h +615 -0
- package/thirdparty/miniz/miniz.pc.in +13 -0
- package/thirdparty/miniz/miniz_common.h +89 -0
- package/thirdparty/miniz/miniz_export.h +20 -0
- package/thirdparty/miniz/miniz_tdef.c +1602 -0
- package/thirdparty/miniz/miniz_tdef.h +199 -0
- package/thirdparty/miniz/miniz_tinfl.c +778 -0
- package/thirdparty/miniz/miniz_tinfl.h +150 -0
- package/thirdparty/miniz/miniz_zip.c +4895 -0
- package/thirdparty/miniz/miniz_zip.h +454 -0
- package/thirdparty/miniz/readme.md +46 -0
- package/thirdparty/miniz/test.sh +36 -0
- package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
- package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
- package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
- package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
- package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
- package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
- package/thirdparty/miniz/tests/fuzz_main.c +55 -0
- package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
- package/thirdparty/miniz/tests/main.cpp +185 -0
- package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
- package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
- package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
- package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
- package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
- package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
- package/thirdparty/miniz/tests/timer.cpp +152 -0
- package/thirdparty/miniz/tests/timer.h +40 -0
- package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
- package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
- package/thirdparty/miniz/tests/zip.dict +9 -0
- package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
- package/thirdparty/pugixml/.codecov.yml +7 -0
- package/thirdparty/pugixml/.gitattributes +1 -0
- package/thirdparty/pugixml/CMakeLists.txt +330 -0
- package/thirdparty/pugixml/LICENSE.md +24 -0
- package/thirdparty/pugixml/Makefile +98 -0
- package/thirdparty/pugixml/README.md +81 -0
- package/thirdparty/pugixml/SECURITY.md +9 -0
- package/thirdparty/pugixml/appveyor.yml +50 -0
- package/thirdparty/pugixml/docs/config.adoc +7 -0
- package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
- package/thirdparty/pugixml/docs/manual.adoc +3326 -0
- package/thirdparty/pugixml/docs/manual.html +6395 -0
- package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
- package/thirdparty/pugixml/docs/quickstart.html +1107 -0
- package/thirdparty/pugixml/docs/samples/character.xml +8 -0
- package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
- package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
- package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
- package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
- package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
- package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
- package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
- package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
- package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
- package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
- package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
- package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
- package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
- package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
- package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
- package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
- package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
- package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
- package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
- package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
- package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
- package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
- package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
- package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
- package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
- package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
- package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
- package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
- package/thirdparty/pugixml/readme.txt +50 -0
- package/thirdparty/pugixml/scripts/archive.py +54 -0
- package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
- package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
- package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
- package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
- package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
- package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
- package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
- package/thirdparty/pugixml/scripts/premake4.lua +92 -0
- package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
- package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
- package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
- package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
- package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
- package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
- package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
- package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
- package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
- package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
- package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
- package/thirdparty/pugixml/tests/allocator.cpp +175 -0
- package/thirdparty/pugixml/tests/allocator.hpp +10 -0
- package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
- package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
- package/thirdparty/pugixml/tests/data/empty.xml +0 -0
- package/thirdparty/pugixml/tests/data/large.xml +1 -0
- package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
- package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
- package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
- package/thirdparty/pugixml/tests/data/small.xml +1 -0
- package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
- package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
- package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
- package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
- package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
- package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
- package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
- package/thirdparty/pugixml/tests/helpers.hpp +114 -0
- package/thirdparty/pugixml/tests/main.cpp +218 -0
- package/thirdparty/pugixml/tests/test.cpp +220 -0
- package/thirdparty/pugixml/tests/test.hpp +175 -0
- package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
- package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
- package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
- package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
- package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
- package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
- package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
- package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
- package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
- package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
- package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
- package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
- package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
- package/thirdparty/pugixml/tests/test_version.cpp +5 -0
- package/thirdparty/pugixml/tests/test_write.cpp +757 -0
- package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
- package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
- package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
- package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
- package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
- package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
- package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
- package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
- package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
- package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
- package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
- package/scripts/prepare-openxlsx.js +0 -126
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Created by Justin R. Wilson on 2/19/2017.
|
|
3
|
+
* Copyright 2017 Justin R. Wilson. All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
6
|
+
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
7
|
+
*/
|
|
8
|
+
#ifndef TWOBLUECUBES_CATCH_REPORTER_AUTOMAKE_HPP_INCLUDED
|
|
9
|
+
#define TWOBLUECUBES_CATCH_REPORTER_AUTOMAKE_HPP_INCLUDED
|
|
10
|
+
|
|
11
|
+
// Don't #include any Catch headers here - we can assume they are already
|
|
12
|
+
// included before this header.
|
|
13
|
+
// This is not good practice in general but is necessary in this case so this
|
|
14
|
+
// file can be distributed as a single header that works with the main
|
|
15
|
+
// Catch single header.
|
|
16
|
+
|
|
17
|
+
namespace Catch
|
|
18
|
+
{
|
|
19
|
+
struct AutomakeReporter : StreamingReporterBase<AutomakeReporter>
|
|
20
|
+
{
|
|
21
|
+
AutomakeReporter(ReporterConfig const& _config) : StreamingReporterBase(_config) {}
|
|
22
|
+
|
|
23
|
+
~AutomakeReporter() override;
|
|
24
|
+
|
|
25
|
+
static std::string getDescription()
|
|
26
|
+
{
|
|
27
|
+
return "Reports test results in the format of Automake .trs files";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
void assertionStarting(AssertionInfo const&) override {}
|
|
31
|
+
|
|
32
|
+
bool assertionEnded(AssertionStats const& /*_assertionStats*/) override
|
|
33
|
+
{
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
void testCaseEnded(TestCaseStats const& _testCaseStats) override
|
|
38
|
+
{
|
|
39
|
+
// Possible values to emit are PASS, XFAIL, SKIP, FAIL, XPASS and ERROR.
|
|
40
|
+
stream << ":test-result: ";
|
|
41
|
+
if (_testCaseStats.totals.assertions.allPassed()) {
|
|
42
|
+
stream << "PASS";
|
|
43
|
+
}
|
|
44
|
+
else if (_testCaseStats.totals.assertions.allOk()) {
|
|
45
|
+
stream << "XFAIL";
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
stream << "FAIL";
|
|
49
|
+
}
|
|
50
|
+
stream << ' ' << _testCaseStats.testInfo.name << '\n';
|
|
51
|
+
StreamingReporterBase::testCaseEnded(_testCaseStats);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
void skipTest(TestCaseInfo const& testInfo) override
|
|
55
|
+
{
|
|
56
|
+
stream << ":test-result: SKIP " << testInfo.name << '\n';
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
#ifdef CATCH_IMPL
|
|
61
|
+
AutomakeReporter::~AutomakeReporter() {}
|
|
62
|
+
#endif
|
|
63
|
+
|
|
64
|
+
CATCH_REGISTER_REPORTER("automake", AutomakeReporter)
|
|
65
|
+
|
|
66
|
+
} // end namespace Catch
|
|
67
|
+
|
|
68
|
+
#endif // TWOBLUECUBES_CATCH_REPORTER_AUTOMAKE_HPP_INCLUDED
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Created by Daniel Garcia on 2018-12-04.
|
|
3
|
+
* Copyright Social Point SL. All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
6
|
+
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
7
|
+
*/
|
|
8
|
+
#ifndef CATCH_REPORTER_SONARQUBE_HPP_INCLUDED
|
|
9
|
+
#define CATCH_REPORTER_SONARQUBE_HPP_INCLUDED
|
|
10
|
+
|
|
11
|
+
// Don't #include any Catch headers here - we can assume they are already
|
|
12
|
+
// included before this header.
|
|
13
|
+
// This is not good practice in general but is necessary in this case so this
|
|
14
|
+
// file can be distributed as a single header that works with the main
|
|
15
|
+
// Catch single header.
|
|
16
|
+
|
|
17
|
+
#include <map>
|
|
18
|
+
|
|
19
|
+
namespace Catch
|
|
20
|
+
{
|
|
21
|
+
struct SonarQubeReporter : CumulativeReporterBase<SonarQubeReporter>
|
|
22
|
+
{
|
|
23
|
+
SonarQubeReporter(ReporterConfig const& config) : CumulativeReporterBase(config), xml(config.stream())
|
|
24
|
+
{
|
|
25
|
+
m_reporterPrefs.shouldRedirectStdOut = true;
|
|
26
|
+
m_reporterPrefs.shouldReportAllAssertions = true;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
~SonarQubeReporter() override;
|
|
30
|
+
|
|
31
|
+
static std::string getDescription()
|
|
32
|
+
{
|
|
33
|
+
return "Reports test results in the Generic Test Data SonarQube XML format";
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
static std::set<Verbosity> getSupportedVerbosities()
|
|
37
|
+
{
|
|
38
|
+
return { Verbosity::Normal };
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
void noMatchingTestCases(std::string const& /*spec*/) override {}
|
|
42
|
+
|
|
43
|
+
void testRunStarting(TestRunInfo const& testRunInfo) override
|
|
44
|
+
{
|
|
45
|
+
CumulativeReporterBase::testRunStarting(testRunInfo);
|
|
46
|
+
xml.startElement("testExecutions");
|
|
47
|
+
xml.writeAttribute("version", "1");
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
void testGroupEnded(TestGroupStats const& testGroupStats) override
|
|
51
|
+
{
|
|
52
|
+
CumulativeReporterBase::testGroupEnded(testGroupStats);
|
|
53
|
+
writeGroup(*m_testGroups.back());
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
void testRunEndedCumulative() override
|
|
57
|
+
{
|
|
58
|
+
xml.endElement();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
void writeGroup(TestGroupNode const& groupNode)
|
|
62
|
+
{
|
|
63
|
+
std::map<std::string, TestGroupNode::ChildNodes> testsPerFile;
|
|
64
|
+
for (auto const& child : groupNode.children) testsPerFile[child->value.testInfo.lineInfo.file].push_back(child);
|
|
65
|
+
|
|
66
|
+
for (auto const& kv : testsPerFile) writeTestFile(kv.first.c_str(), kv.second);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
void writeTestFile(const char* filename, TestGroupNode::ChildNodes const& testCaseNodes)
|
|
70
|
+
{
|
|
71
|
+
XmlWriter::ScopedElement e = xml.scopedElement("file");
|
|
72
|
+
xml.writeAttribute("path", filename);
|
|
73
|
+
|
|
74
|
+
for (auto const& child : testCaseNodes) writeTestCase(*child);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
void writeTestCase(TestCaseNode const& testCaseNode)
|
|
78
|
+
{
|
|
79
|
+
// All test cases have exactly one section - which represents the
|
|
80
|
+
// test case itself. That section may have 0-n nested sections
|
|
81
|
+
assert(testCaseNode.children.size() == 1);
|
|
82
|
+
SectionNode const& rootSection = *testCaseNode.children.front();
|
|
83
|
+
writeSection("", rootSection, testCaseNode.value.testInfo.okToFail());
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
void writeSection(std::string const& rootName, SectionNode const& sectionNode, bool okToFail)
|
|
87
|
+
{
|
|
88
|
+
std::string name = trim(sectionNode.stats.sectionInfo.name);
|
|
89
|
+
if (!rootName.empty()) name = rootName + '/' + name;
|
|
90
|
+
|
|
91
|
+
if (!sectionNode.assertions.empty() || !sectionNode.stdOut.empty() || !sectionNode.stdErr.empty()) {
|
|
92
|
+
XmlWriter::ScopedElement e = xml.scopedElement("testCase");
|
|
93
|
+
xml.writeAttribute("name", name);
|
|
94
|
+
xml.writeAttribute("duration", static_cast<long>(sectionNode.stats.durationInSeconds * 1000));
|
|
95
|
+
|
|
96
|
+
writeAssertions(sectionNode, okToFail);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
for (auto const& childNode : sectionNode.childSections) writeSection(name, *childNode, okToFail);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
void writeAssertions(SectionNode const& sectionNode, bool okToFail)
|
|
103
|
+
{
|
|
104
|
+
for (auto const& assertion : sectionNode.assertions) writeAssertion(assertion, okToFail);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
void writeAssertion(AssertionStats const& stats, bool okToFail)
|
|
108
|
+
{
|
|
109
|
+
AssertionResult const& result = stats.assertionResult;
|
|
110
|
+
if (!result.isOk()) {
|
|
111
|
+
std::string elementName;
|
|
112
|
+
if (okToFail) {
|
|
113
|
+
elementName = "skipped";
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
switch (result.getResultType()) {
|
|
117
|
+
case ResultWas::ThrewException:
|
|
118
|
+
case ResultWas::FatalErrorCondition:
|
|
119
|
+
elementName = "error";
|
|
120
|
+
break;
|
|
121
|
+
case ResultWas::ExplicitFailure:
|
|
122
|
+
elementName = "failure";
|
|
123
|
+
break;
|
|
124
|
+
case ResultWas::ExpressionFailed:
|
|
125
|
+
elementName = "failure";
|
|
126
|
+
break;
|
|
127
|
+
case ResultWas::DidntThrowException:
|
|
128
|
+
elementName = "failure";
|
|
129
|
+
break;
|
|
130
|
+
|
|
131
|
+
// We should never see these here:
|
|
132
|
+
case ResultWas::Info:
|
|
133
|
+
case ResultWas::Warning:
|
|
134
|
+
case ResultWas::Ok:
|
|
135
|
+
case ResultWas::Unknown:
|
|
136
|
+
case ResultWas::FailureBit:
|
|
137
|
+
case ResultWas::Exception:
|
|
138
|
+
elementName = "internalError";
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
XmlWriter::ScopedElement e = xml.scopedElement(elementName);
|
|
144
|
+
|
|
145
|
+
ReusableStringStream messageRss;
|
|
146
|
+
messageRss << result.getTestMacroName() << "(" << result.getExpression() << ")";
|
|
147
|
+
xml.writeAttribute("message", messageRss.str());
|
|
148
|
+
|
|
149
|
+
ReusableStringStream textRss;
|
|
150
|
+
if (stats.totals.assertions.total() > 0) {
|
|
151
|
+
textRss << "FAILED:\n";
|
|
152
|
+
if (result.hasExpression()) {
|
|
153
|
+
textRss << "\t" << result.getExpressionInMacro() << "\n";
|
|
154
|
+
}
|
|
155
|
+
if (result.hasExpandedExpression()) {
|
|
156
|
+
textRss << "with expansion:\n\t" << result.getExpandedExpression() << "\n";
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (!result.getMessage().empty()) textRss << result.getMessage() << "\n";
|
|
161
|
+
|
|
162
|
+
for (auto const& msg : stats.infoMessages)
|
|
163
|
+
if (msg.type == ResultWas::Info) textRss << msg.message << "\n";
|
|
164
|
+
|
|
165
|
+
textRss << "at " << result.getSourceInfo();
|
|
166
|
+
xml.writeText(textRss.str(), XmlFormatting::Newline);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
private:
|
|
171
|
+
XmlWriter xml;
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
#ifdef CATCH_IMPL
|
|
175
|
+
SonarQubeReporter::~SonarQubeReporter() {}
|
|
176
|
+
#endif
|
|
177
|
+
|
|
178
|
+
CATCH_REGISTER_REPORTER("sonarqube", SonarQubeReporter)
|
|
179
|
+
|
|
180
|
+
} // end namespace Catch
|
|
181
|
+
|
|
182
|
+
#endif // CATCH_REPORTER_SONARQUBE_HPP_INCLUDED
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Created by Colton Wolkins on 2015-08-15.
|
|
3
|
+
* Copyright 2015 Martin Moene. All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
6
|
+
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
7
|
+
*/
|
|
8
|
+
#ifndef TWOBLUECUBES_CATCH_REPORTER_TAP_HPP_INCLUDED
|
|
9
|
+
#define TWOBLUECUBES_CATCH_REPORTER_TAP_HPP_INCLUDED
|
|
10
|
+
|
|
11
|
+
// Don't #include any Catch headers here - we can assume they are already
|
|
12
|
+
// included before this header.
|
|
13
|
+
// This is not good practice in general but is necessary in this case so this
|
|
14
|
+
// file can be distributed as a single header that works with the main
|
|
15
|
+
// Catch single header.
|
|
16
|
+
|
|
17
|
+
#include <algorithm>
|
|
18
|
+
|
|
19
|
+
namespace Catch
|
|
20
|
+
{
|
|
21
|
+
struct TAPReporter : StreamingReporterBase<TAPReporter>
|
|
22
|
+
{
|
|
23
|
+
using StreamingReporterBase::StreamingReporterBase;
|
|
24
|
+
|
|
25
|
+
TAPReporter(ReporterConfig const& config) : StreamingReporterBase(config)
|
|
26
|
+
{
|
|
27
|
+
m_reporterPrefs.shouldReportAllAssertions = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
~TAPReporter() override;
|
|
31
|
+
|
|
32
|
+
static std::string getDescription()
|
|
33
|
+
{
|
|
34
|
+
return "Reports test results in TAP format, suitable for test harnesses";
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
void noMatchingTestCases(std::string const& spec) override
|
|
38
|
+
{
|
|
39
|
+
stream << "# No test cases matched '" << spec << "'" << std::endl;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
void assertionStarting(AssertionInfo const&) override {}
|
|
43
|
+
|
|
44
|
+
bool assertionEnded(AssertionStats const& _assertionStats) override
|
|
45
|
+
{
|
|
46
|
+
++counter;
|
|
47
|
+
|
|
48
|
+
stream << "# " << currentTestCaseInfo->name << std::endl;
|
|
49
|
+
AssertionPrinter printer(stream, _assertionStats, counter);
|
|
50
|
+
printer.print();
|
|
51
|
+
|
|
52
|
+
stream << std::endl;
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
void testRunEnded(TestRunStats const& _testRunStats) override
|
|
57
|
+
{
|
|
58
|
+
printTotals(_testRunStats.totals);
|
|
59
|
+
stream << "\n" << std::endl;
|
|
60
|
+
StreamingReporterBase::testRunEnded(_testRunStats);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private:
|
|
64
|
+
std::size_t counter = 0;
|
|
65
|
+
class AssertionPrinter
|
|
66
|
+
{
|
|
67
|
+
public:
|
|
68
|
+
AssertionPrinter& operator=(AssertionPrinter const&) = delete;
|
|
69
|
+
AssertionPrinter(AssertionPrinter const&) = delete;
|
|
70
|
+
AssertionPrinter(std::ostream& _stream, AssertionStats const& _stats, std::size_t _counter)
|
|
71
|
+
: stream(_stream),
|
|
72
|
+
result(_stats.assertionResult),
|
|
73
|
+
messages(_stats.infoMessages),
|
|
74
|
+
itMessage(_stats.infoMessages.begin()),
|
|
75
|
+
printInfoMessages(true),
|
|
76
|
+
counter(_counter)
|
|
77
|
+
{}
|
|
78
|
+
|
|
79
|
+
void print()
|
|
80
|
+
{
|
|
81
|
+
itMessage = messages.begin();
|
|
82
|
+
|
|
83
|
+
switch (result.getResultType()) {
|
|
84
|
+
case ResultWas::Ok:
|
|
85
|
+
printResultType(passedString());
|
|
86
|
+
printOriginalExpression();
|
|
87
|
+
printReconstructedExpression();
|
|
88
|
+
if (!result.hasExpression())
|
|
89
|
+
printRemainingMessages(Colour::None);
|
|
90
|
+
else
|
|
91
|
+
printRemainingMessages();
|
|
92
|
+
break;
|
|
93
|
+
case ResultWas::ExpressionFailed:
|
|
94
|
+
if (result.isOk()) {
|
|
95
|
+
printResultType(passedString());
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
printResultType(failedString());
|
|
99
|
+
}
|
|
100
|
+
printOriginalExpression();
|
|
101
|
+
printReconstructedExpression();
|
|
102
|
+
if (result.isOk()) {
|
|
103
|
+
printIssue(" # TODO");
|
|
104
|
+
}
|
|
105
|
+
printRemainingMessages();
|
|
106
|
+
break;
|
|
107
|
+
case ResultWas::ThrewException:
|
|
108
|
+
printResultType(failedString());
|
|
109
|
+
printIssue("unexpected exception with message:");
|
|
110
|
+
printMessage();
|
|
111
|
+
printExpressionWas();
|
|
112
|
+
printRemainingMessages();
|
|
113
|
+
break;
|
|
114
|
+
case ResultWas::FatalErrorCondition:
|
|
115
|
+
printResultType(failedString());
|
|
116
|
+
printIssue("fatal error condition with message:");
|
|
117
|
+
printMessage();
|
|
118
|
+
printExpressionWas();
|
|
119
|
+
printRemainingMessages();
|
|
120
|
+
break;
|
|
121
|
+
case ResultWas::DidntThrowException:
|
|
122
|
+
printResultType(failedString());
|
|
123
|
+
printIssue("expected exception, got none");
|
|
124
|
+
printExpressionWas();
|
|
125
|
+
printRemainingMessages();
|
|
126
|
+
break;
|
|
127
|
+
case ResultWas::Info:
|
|
128
|
+
printResultType("info");
|
|
129
|
+
printMessage();
|
|
130
|
+
printRemainingMessages();
|
|
131
|
+
break;
|
|
132
|
+
case ResultWas::Warning:
|
|
133
|
+
printResultType("warning");
|
|
134
|
+
printMessage();
|
|
135
|
+
printRemainingMessages();
|
|
136
|
+
break;
|
|
137
|
+
case ResultWas::ExplicitFailure:
|
|
138
|
+
printResultType(failedString());
|
|
139
|
+
printIssue("explicitly");
|
|
140
|
+
printRemainingMessages(Colour::None);
|
|
141
|
+
break;
|
|
142
|
+
// These cases are here to prevent compiler warnings
|
|
143
|
+
case ResultWas::Unknown:
|
|
144
|
+
case ResultWas::FailureBit:
|
|
145
|
+
case ResultWas::Exception:
|
|
146
|
+
printResultType("** internal error **");
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
private:
|
|
152
|
+
static Colour::Code dimColour()
|
|
153
|
+
{
|
|
154
|
+
return Colour::FileName;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
static const char* failedString()
|
|
158
|
+
{
|
|
159
|
+
return "not ok";
|
|
160
|
+
}
|
|
161
|
+
static const char* passedString()
|
|
162
|
+
{
|
|
163
|
+
return "ok";
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
void printSourceInfo() const
|
|
167
|
+
{
|
|
168
|
+
Colour colourGuard(dimColour());
|
|
169
|
+
stream << result.getSourceInfo() << ":";
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
void printResultType(std::string const& passOrFail) const
|
|
173
|
+
{
|
|
174
|
+
if (!passOrFail.empty()) {
|
|
175
|
+
stream << passOrFail << ' ' << counter << " -";
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
void printIssue(std::string const& issue) const
|
|
180
|
+
{
|
|
181
|
+
stream << " " << issue;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
void printExpressionWas()
|
|
185
|
+
{
|
|
186
|
+
if (result.hasExpression()) {
|
|
187
|
+
stream << ";";
|
|
188
|
+
{
|
|
189
|
+
Colour colour(dimColour());
|
|
190
|
+
stream << " expression was:";
|
|
191
|
+
}
|
|
192
|
+
printOriginalExpression();
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
void printOriginalExpression() const
|
|
197
|
+
{
|
|
198
|
+
if (result.hasExpression()) {
|
|
199
|
+
stream << " " << result.getExpression();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
void printReconstructedExpression() const
|
|
204
|
+
{
|
|
205
|
+
if (result.hasExpandedExpression()) {
|
|
206
|
+
{
|
|
207
|
+
Colour colour(dimColour());
|
|
208
|
+
stream << " for: ";
|
|
209
|
+
}
|
|
210
|
+
std::string expr = result.getExpandedExpression();
|
|
211
|
+
std::replace(expr.begin(), expr.end(), '\n', ' ');
|
|
212
|
+
stream << expr;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
void printMessage()
|
|
217
|
+
{
|
|
218
|
+
if (itMessage != messages.end()) {
|
|
219
|
+
stream << " '" << itMessage->message << "'";
|
|
220
|
+
++itMessage;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
void printRemainingMessages(Colour::Code colour = dimColour())
|
|
225
|
+
{
|
|
226
|
+
if (itMessage == messages.end()) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
const auto itEnd = messages.cend();
|
|
231
|
+
const auto N = static_cast<std::size_t>(std::distance(itMessage, itEnd));
|
|
232
|
+
|
|
233
|
+
{
|
|
234
|
+
Colour colourGuard(colour);
|
|
235
|
+
stream << " with " << pluralise(N, "message") << ":";
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
while (itMessage != itEnd) {
|
|
239
|
+
// If this assertion is a warning ignore any INFO messages
|
|
240
|
+
if (printInfoMessages || itMessage->type != ResultWas::Info) {
|
|
241
|
+
stream << " '" << itMessage->message << "'";
|
|
242
|
+
if (++itMessage != itEnd) {
|
|
243
|
+
Colour colourGuard(dimColour());
|
|
244
|
+
stream << " and";
|
|
245
|
+
}
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
++itMessage;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
private:
|
|
253
|
+
std::ostream& stream;
|
|
254
|
+
AssertionResult const& result;
|
|
255
|
+
std::vector<MessageInfo> messages;
|
|
256
|
+
std::vector<MessageInfo>::const_iterator itMessage;
|
|
257
|
+
bool printInfoMessages;
|
|
258
|
+
std::size_t counter;
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
void printTotals(const Totals& totals) const
|
|
262
|
+
{
|
|
263
|
+
stream << "1.." << totals.assertions.total();
|
|
264
|
+
if (totals.testCases.total() == 0) {
|
|
265
|
+
stream << " # Skipped: No tests ran.";
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
#ifdef CATCH_IMPL
|
|
271
|
+
TAPReporter::~TAPReporter() {}
|
|
272
|
+
#endif
|
|
273
|
+
|
|
274
|
+
CATCH_REGISTER_REPORTER("tap", TAPReporter)
|
|
275
|
+
|
|
276
|
+
} // end namespace Catch
|
|
277
|
+
|
|
278
|
+
#endif // TWOBLUECUBES_CATCH_REPORTER_TAP_HPP_INCLUDED
|