From ce75c9e7dd53e0fd339c13eaf52f95cc158daf0e Mon Sep 17 00:00:00 2001 From: Berkus Decker Date: Wed, 22 Nov 2017 03:54:58 +0200 Subject: [PATCH] git subrepo clone https://github.com/philsquared/Catch Telegram/ThirdParty/Catch subrepo: subdir: "Telegram/ThirdParty/Catch" merged: "63c097a07" upstream: origin: "https://github.com/philsquared/Catch" branch: "master" commit: "63c097a07" git-subrepo: version: "0.3.1" origin: "???" commit: "???" --- .gitmodules | 3 - Telegram/ThirdParty/Catch | 1 - Telegram/ThirdParty/Catch/.gitattributes | 11 + .../Catch/.github/issue_template.md | 29 + .../Catch/.github/pull_request_template.md | 28 + Telegram/ThirdParty/Catch/.gitignore | 28 + Telegram/ThirdParty/Catch/.gitrepo | 11 + Telegram/ThirdParty/Catch/.travis.yml | 215 + Telegram/ThirdParty/Catch/CMakeLists.txt | 361 + Telegram/ThirdParty/Catch/CODE_OF_CONDUCT.md | 46 + Telegram/ThirdParty/Catch/LICENSE.txt | 23 + Telegram/ThirdParty/Catch/README.md | 35 + Telegram/ThirdParty/Catch/appveyor.yml | 61 + .../Catch/artwork/catch2-c-logo.png | Bin 0 -> 18222 bytes .../Catch/artwork/catch2-hand-logo.png | Bin 0 -> 57969 bytes .../Catch/artwork/catch2-logo-small.png | Bin 0 -> 29025 bytes Telegram/ThirdParty/Catch/catch.pc.in | 9 + Telegram/ThirdParty/Catch/conanfile.py | 19 + .../Catch/contrib/ParseAndAddCatchTests.cmake | 185 + Telegram/ThirdParty/Catch/docs/Readme.md | 33 + Telegram/ThirdParty/Catch/docs/assertions.md | 160 + .../ThirdParty/Catch/docs/build-systems.md | 155 + .../ThirdParty/Catch/docs/command-line.md | 328 + .../ThirdParty/Catch/docs/commercial-users.md | 17 + .../ThirdParty/Catch/docs/configuration.md | 138 + .../ThirdParty/Catch/docs/contributing.md | 61 + .../ThirdParty/Catch/docs/event-listeners.md | 75 + Telegram/ThirdParty/Catch/docs/limitations.md | 129 + .../ThirdParty/Catch/docs/list-of-examples.md | 31 + Telegram/ThirdParty/Catch/docs/logging.md | 83 + Telegram/ThirdParty/Catch/docs/matchers.md | 117 + .../ThirdParty/Catch/docs/opensource-users.md | 90 + Telegram/ThirdParty/Catch/docs/own-main.md | 110 + .../ThirdParty/Catch/docs/release-notes.md | 386 + .../ThirdParty/Catch/docs/release-process.md | 64 + Telegram/ThirdParty/Catch/docs/reporters.md | 46 + .../ThirdParty/Catch/docs/slow-compiles.md | 71 + .../Catch/docs/test-cases-and-sections.md | 91 + .../ThirdParty/Catch/docs/test-fixtures.md | 35 + Telegram/ThirdParty/Catch/docs/tostring.md | 48 + Telegram/ThirdParty/Catch/docs/tutorial.md | 261 + Telegram/ThirdParty/Catch/docs/why-catch.md | 46 + .../Catch/examples/000-CatchMain.cpp | 15 + .../Catch/examples/010-TestCase.cpp | 36 + .../Catch/examples/020-TestCase-1.cpp | 35 + .../Catch/examples/020-TestCase-2.cpp | 33 + .../Catch/examples/030-Asn-Require-Check.cpp | 74 + .../Catch/examples/100-Fix-Section.cpp | 69 + .../Catch/examples/110-Fix-ClassFixture.cpp | 63 + .../120-Bdd-ScenarioGivenWhenThen.cpp | 73 + .../Catch/examples/210-Evt-EventListeners.cpp | 423 + .../ThirdParty/Catch/examples/CMakeLists.txt | 100 + Telegram/ThirdParty/Catch/include/catch.hpp | 347 + .../Catch/include/catch_with_main.hpp | 14 + .../Catch/include/external/clara.hpp | 1232 ++ .../Catch/include/internal/catch_approx.cpp | 56 + .../Catch/include/internal/catch_approx.h | 133 + .../internal/catch_assertionhandler.cpp | 154 + .../include/internal/catch_assertionhandler.h | 73 + .../include/internal/catch_assertioninfo.h | 31 + .../internal/catch_assertionresult.cpp | 98 + .../include/internal/catch_assertionresult.h | 59 + .../include/internal/catch_benchmark.cpp | 36 + .../Catch/include/internal/catch_benchmark.h | 57 + .../Catch/include/internal/catch_capture.hpp | 163 + .../internal/catch_capture_matchers.cpp | 24 + .../include/internal/catch_capture_matchers.h | 89 + .../Catch/include/internal/catch_clara.h | 38 + .../include/internal/catch_commandline.cpp | 184 + .../include/internal/catch_commandline.h | 20 + .../Catch/include/internal/catch_common.cpp | 51 + .../Catch/include/internal/catch_common.h | 85 + .../internal/catch_compiler_capabilities.h | 126 + .../Catch/include/internal/catch_config.cpp | 64 + .../Catch/include/internal/catch_config.hpp | 114 + .../include/internal/catch_console_colour.cpp | 225 + .../include/internal/catch_console_colour.h | 68 + .../Catch/include/internal/catch_context.cpp | 62 + .../Catch/include/internal/catch_context.h | 60 + .../include/internal/catch_debug_console.cpp | 29 + .../include/internal/catch_debug_console.h | 17 + .../Catch/include/internal/catch_debugger.cpp | 113 + .../Catch/include/internal/catch_debugger.h | 46 + .../include/internal/catch_decomposer.cpp | 24 + .../Catch/include/internal/catch_decomposer.h | 169 + .../include/internal/catch_default_main.hpp | 46 + .../Catch/include/internal/catch_enforce.h | 25 + .../include/internal/catch_errno_guard.cpp | 15 + .../include/internal/catch_errno_guard.h | 22 + .../catch_exception_translator_registry.cpp | 62 + .../catch_exception_translator_registry.h | 30 + .../internal/catch_external_interfaces.h | 20 + .../internal/catch_fatal_condition.cpp | 185 + .../include/internal/catch_fatal_condition.h | 86 + .../Catch/include/internal/catch_impl.hpp | 33 + .../internal/catch_interfaces_capture.cpp | 5 + .../internal/catch_interfaces_capture.h | 58 + .../internal/catch_interfaces_config.cpp | 5 + .../internal/catch_interfaces_config.h | 80 + .../internal/catch_interfaces_exception.cpp | 6 + .../internal/catch_interfaces_exception.h | 81 + .../catch_interfaces_registry_hub.cpp | 6 + .../internal/catch_interfaces_registry_hub.h | 59 + .../internal/catch_interfaces_reporter.cpp | 135 + .../internal/catch_interfaces_reporter.h | 233 + .../internal/catch_interfaces_runner.cpp | 5 + .../internal/catch_interfaces_runner.h | 19 + .../catch_interfaces_tag_alias_registry.h | 28 + .../internal/catch_interfaces_testcase.cpp | 6 + .../internal/catch_interfaces_testcase.h | 40 + .../include/internal/catch_leak_detector.cpp | 33 + .../include/internal/catch_leak_detector.h | 17 + .../Catch/include/internal/catch_list.cpp | 166 + .../Catch/include/internal/catch_list.h | 38 + .../Catch/include/internal/catch_matchers.cpp | 28 + .../Catch/include/internal/catch_matchers.h | 158 + .../internal/catch_matchers_floating.cpp | 135 + .../internal/catch_matchers_floating.h | 53 + .../internal/catch_matchers_string.cpp | 118 + .../include/internal/catch_matchers_string.h | 80 + .../include/internal/catch_matchers_vector.h | 115 + .../Catch/include/internal/catch_message.cpp | 59 + .../Catch/include/internal/catch_message.h | 70 + .../Catch/include/internal/catch_objc.hpp | 215 + .../Catch/include/internal/catch_objc_arc.hpp | 51 + .../Catch/include/internal/catch_option.hpp | 73 + .../Catch/include/internal/catch_platform.h | 27 + .../catch_random_number_generator.cpp | 31 + .../internal/catch_random_number_generator.h | 38 + .../internal/catch_reenable_warnings.h | 21 + .../include/internal/catch_registry_hub.cpp | 96 + .../internal/catch_reporter_registrars.hpp | 76 + .../internal/catch_reporter_registry.cpp | 34 + .../internal/catch_reporter_registry.h | 37 + .../include/internal/catch_result_type.cpp | 28 + .../include/internal/catch_result_type.h | 55 + .../include/internal/catch_run_context.cpp | 340 + .../include/internal/catch_run_context.h | 147 + .../Catch/include/internal/catch_section.cpp | 44 + .../Catch/include/internal/catch_section.h | 41 + .../include/internal/catch_section_info.cpp | 25 + .../include/internal/catch_section_info.h | 39 + .../Catch/include/internal/catch_session.cpp | 276 + .../Catch/include/internal/catch_session.h | 53 + .../catch_startup_exception_registry.cpp | 26 + .../catch_startup_exception_registry.h | 27 + .../Catch/include/internal/catch_stream.cpp | 202 + .../Catch/include/internal/catch_stream.h | 49 + .../include/internal/catch_string_manip.cpp | 77 + .../include/internal/catch_string_manip.h | 36 + .../include/internal/catch_stringref.cpp | 116 + .../Catch/include/internal/catch_stringref.h | 125 + .../internal/catch_suppress_warnings.h | 29 + .../include/internal/catch_tag_alias.cpp | 5 + .../Catch/include/internal/catch_tag_alias.h | 26 + .../catch_tag_alias_autoregistrar.cpp | 15 + .../internal/catch_tag_alias_autoregistrar.h | 22 + .../internal/catch_tag_alias_registry.cpp | 58 + .../internal/catch_tag_alias_registry.h | 31 + .../include/internal/catch_test_case_info.cpp | 178 + .../include/internal/catch_test_case_info.h | 90 + .../catch_test_case_registry_impl.cpp | 112 + .../internal/catch_test_case_registry_impl.h | 69 + .../internal/catch_test_case_tracker.cpp | 287 + .../internal/catch_test_case_tracker.h | 183 + .../include/internal/catch_test_registry.cpp | 37 + .../include/internal/catch_test_registry.h | 100 + .../include/internal/catch_test_spec.cpp | 59 + .../Catch/include/internal/catch_test_spec.h | 80 + .../internal/catch_test_spec_parser.cpp | 87 + .../include/internal/catch_test_spec_parser.h | 75 + .../Catch/include/internal/catch_text.h | 17 + .../Catch/include/internal/catch_timer.cpp | 62 + .../Catch/include/internal/catch_timer.h | 30 + .../Catch/include/internal/catch_tostring.cpp | 241 + .../Catch/include/internal/catch_tostring.h | 471 + .../Catch/include/internal/catch_totals.cpp | 61 + .../Catch/include/internal/catch_totals.h | 41 + .../include/internal/catch_user_interfaces.h | 18 + .../Catch/include/internal/catch_version.cpp | 44 + .../Catch/include/internal/catch_version.h | 39 + .../internal/catch_wildcard_pattern.cpp | 49 + .../include/internal/catch_wildcard_pattern.h | 38 + .../include/internal/catch_windows_h_proxy.h | 39 + .../include/internal/catch_xmlwriter.cpp | 190 + .../Catch/include/internal/catch_xmlwriter.h | 105 + .../reporters/catch_reporter_automake.hpp | 62 + .../reporters/catch_reporter_bases.cpp | 55 + .../reporters/catch_reporter_bases.hpp | 274 + .../reporters/catch_reporter_compact.cpp | 294 + .../reporters/catch_reporter_compact.h | 41 + .../reporters/catch_reporter_console.cpp | 632 + .../reporters/catch_reporter_console.h | 83 + .../reporters/catch_reporter_junit.cpp | 247 + .../include/reporters/catch_reporter_junit.h | 61 + .../reporters/catch_reporter_multi.cpp | 104 + .../include/reporters/catch_reporter_multi.h | 52 + .../include/reporters/catch_reporter_tap.hpp | 255 + .../reporters/catch_reporter_teamcity.hpp | 222 + .../include/reporters/catch_reporter_xml.cpp | 223 + .../include/reporters/catch_reporter_xml.h | 61 + .../Catch/projects/Benchmark/BenchMain.cpp | 9 + .../Benchmark/StringificationBench.cpp | 46 + .../Catch/projects/Benchmark/readme.txt | 4 + ...cdddd43ba4df9e4846630be6a6a7bd85a07.result | 3 + ...841ff500b2f39ccfd4193ae450cb653da05.result | 3 + ...0166f7b7196eba2ad518174d1a77165166d.result | 3 + ...bec49c5bc58d3604bf1a72cd3f7d129bf2e.result | 3 + ...f9646c5ce50758f8582307c99501a932e1a.result | 3 + .../Baselines/automake.std.approved.txt | 168 + .../Baselines/console.std.approved.txt | 1057 ++ .../Baselines/console.sw.approved.txt | 7992 ++++++++++ .../Baselines/console.swa4.approved.txt | 262 + .../SelfTest/Baselines/junit.sw.approved.txt | 838 ++ .../SelfTest/Baselines/xml.sw.approved.txt | 8869 ++++++++++++ .../CompileTimePerfTests/10.tests.cpp | 13 + .../CompileTimePerfTests/100.tests.cpp | 13 + .../CompileTimePerfTests/All.tests.cpp | 15 + .../IntrospectiveTests/CmdLine.tests.cpp | 457 + .../IntrospectiveTests/PartTracker.tests.cpp | 333 + .../IntrospectiveTests/String.tests.cpp | 200 + .../IntrospectiveTests/TagAlias.tests.cpp | 42 + .../SelfTest/IntrospectiveTests/Xml.tests.cpp | 41 + .../SurrogateCpps/catch_console_colour.cpp | 3 + .../SelfTest/SurrogateCpps/catch_debugger.cpp | 2 + .../catch_interfaces_reporter.cpp | 2 + .../SelfTest/SurrogateCpps/catch_option.cpp | 3 + .../SelfTest/SurrogateCpps/catch_stream.cpp | 3 + .../SurrogateCpps/catch_test_case_tracker.cpp | 2 + .../SurrogateCpps/catch_test_spec.cpp | 3 + .../SurrogateCpps/catch_xmlwriter.cpp | 4 + .../Catch/projects/SelfTest/TestMain.cpp | 33 + .../SelfTest/UsageTests/Approx.tests.cpp | 198 + .../SelfTest/UsageTests/BDD.tests.cpp | 107 + .../SelfTest/UsageTests/Benchmark.tests.cpp | 43 + .../SelfTest/UsageTests/Class.tests.cpp | 63 + .../SelfTest/UsageTests/Compilation.tests.cpp | 112 + .../SelfTest/UsageTests/Condition.tests.cpp | 334 + .../UsageTests/Decomposition.tests.cpp | 35 + .../UsageTests/EnumToString.tests.cpp | 63 + .../SelfTest/UsageTests/Exception.tests.cpp | 207 + .../SelfTest/UsageTests/Matchers.tests.cpp | 339 + .../SelfTest/UsageTests/Message.tests.cpp | 137 + .../SelfTest/UsageTests/Misc.tests.cpp | 349 + .../UsageTests/ToStringChrono.tests.cpp | 41 + .../UsageTests/ToStringGeneral.tests.cpp | 53 + .../UsageTests/ToStringPair.tests.cpp | 30 + .../UsageTests/ToStringTuple.tests.cpp | 47 + .../UsageTests/ToStringVector.tests.cpp | 68 + .../UsageTests/ToStringWhich.tests.cpp | 73 + .../SelfTest/UsageTests/Tricky.tests.cpp | 448 + .../UsageTests/VariadicMacros.tests.cpp | 29 + .../projects/Where did the projects go.txt | 13 + .../OCTest/OCTest.xcodeproj/project.pbxproj | 267 + .../contents.xcworkspacedata | 7 + .../XCode/OCTest/OCTest/CatchOCTestCase.h | 25 + .../XCode/OCTest/OCTest/CatchOCTestCase.mm | 87 + .../projects/XCode/OCTest/OCTest/Main.mm | 2 + .../projects/XCode/OCTest/OCTest/OCTest.1 | 79 + .../projects/XCode/OCTest/OCTest/OCTest.mm | 28 + .../projects/XCode/OCTest/OCTest/TestObj.h | 28 + .../projects/XCode/OCTest/OCTest/TestObj.m | 25 + .../projects/XCode/OCTest/catch_objc_impl.mm | 67 + .../ThirdParty/Catch/scripts/approvalTests.py | 183 + Telegram/ThirdParty/Catch/scripts/approve.py | 33 + .../Catch/scripts/benchmarkCompile.py | 148 + .../Catch/scripts/benchmarkRunner.py | 56 + .../ThirdParty/Catch/scripts/developBuild.py | 10 + Telegram/ThirdParty/Catch/scripts/embed.py | 63 + .../ThirdParty/Catch/scripts/embedClara.py | 25 + .../ThirdParty/Catch/scripts/fixWhitespace.py | 49 + .../Catch/scripts/generateSingleHeader.py | 129 + .../ThirdParty/Catch/scripts/majorRelease.py | 10 + .../ThirdParty/Catch/scripts/minorRelease.py | 10 + .../ThirdParty/Catch/scripts/patchRelease.py | 10 + .../ThirdParty/Catch/scripts/releaseCommon.py | 152 + .../ThirdParty/Catch/scripts/releaseNotes.py | 64 + .../ThirdParty/Catch/scripts/scriptCommon.py | 26 + .../Catch/scripts/updateDocumentToC.py | 446 + .../Catch/scripts/updateVcpkgPackage.py | 110 + .../ThirdParty/Catch/scripts/updateWandbox.py | 47 + .../ThirdParty/Catch/single_include/catch.hpp | 12012 ++++++++++++++++ .../Catch/test_package/CMakeLists.txt | 7 + .../Catch/test_package/MainTest.cpp | 21 + .../Catch/test_package/conanfile.py | 21 + .../ThirdParty/Catch/third_party/clara.hpp | 1231 ++ 286 files changed, 57733 insertions(+), 4 deletions(-) delete mode 160000 Telegram/ThirdParty/Catch create mode 100644 Telegram/ThirdParty/Catch/.gitattributes create mode 100644 Telegram/ThirdParty/Catch/.github/issue_template.md create mode 100644 Telegram/ThirdParty/Catch/.github/pull_request_template.md create mode 100644 Telegram/ThirdParty/Catch/.gitignore create mode 100644 Telegram/ThirdParty/Catch/.gitrepo create mode 100644 Telegram/ThirdParty/Catch/.travis.yml create mode 100644 Telegram/ThirdParty/Catch/CMakeLists.txt create mode 100644 Telegram/ThirdParty/Catch/CODE_OF_CONDUCT.md create mode 100644 Telegram/ThirdParty/Catch/LICENSE.txt create mode 100644 Telegram/ThirdParty/Catch/README.md create mode 100644 Telegram/ThirdParty/Catch/appveyor.yml create mode 100644 Telegram/ThirdParty/Catch/artwork/catch2-c-logo.png create mode 100644 Telegram/ThirdParty/Catch/artwork/catch2-hand-logo.png create mode 100644 Telegram/ThirdParty/Catch/artwork/catch2-logo-small.png create mode 100644 Telegram/ThirdParty/Catch/catch.pc.in create mode 100644 Telegram/ThirdParty/Catch/conanfile.py create mode 100644 Telegram/ThirdParty/Catch/contrib/ParseAndAddCatchTests.cmake create mode 100644 Telegram/ThirdParty/Catch/docs/Readme.md create mode 100644 Telegram/ThirdParty/Catch/docs/assertions.md create mode 100644 Telegram/ThirdParty/Catch/docs/build-systems.md create mode 100644 Telegram/ThirdParty/Catch/docs/command-line.md create mode 100644 Telegram/ThirdParty/Catch/docs/commercial-users.md create mode 100644 Telegram/ThirdParty/Catch/docs/configuration.md create mode 100644 Telegram/ThirdParty/Catch/docs/contributing.md create mode 100644 Telegram/ThirdParty/Catch/docs/event-listeners.md create mode 100644 Telegram/ThirdParty/Catch/docs/limitations.md create mode 100644 Telegram/ThirdParty/Catch/docs/list-of-examples.md create mode 100644 Telegram/ThirdParty/Catch/docs/logging.md create mode 100644 Telegram/ThirdParty/Catch/docs/matchers.md create mode 100644 Telegram/ThirdParty/Catch/docs/opensource-users.md create mode 100644 Telegram/ThirdParty/Catch/docs/own-main.md create mode 100644 Telegram/ThirdParty/Catch/docs/release-notes.md create mode 100644 Telegram/ThirdParty/Catch/docs/release-process.md create mode 100644 Telegram/ThirdParty/Catch/docs/reporters.md create mode 100644 Telegram/ThirdParty/Catch/docs/slow-compiles.md create mode 100644 Telegram/ThirdParty/Catch/docs/test-cases-and-sections.md create mode 100644 Telegram/ThirdParty/Catch/docs/test-fixtures.md create mode 100644 Telegram/ThirdParty/Catch/docs/tostring.md create mode 100644 Telegram/ThirdParty/Catch/docs/tutorial.md create mode 100644 Telegram/ThirdParty/Catch/docs/why-catch.md create mode 100644 Telegram/ThirdParty/Catch/examples/000-CatchMain.cpp create mode 100644 Telegram/ThirdParty/Catch/examples/010-TestCase.cpp create mode 100644 Telegram/ThirdParty/Catch/examples/020-TestCase-1.cpp create mode 100644 Telegram/ThirdParty/Catch/examples/020-TestCase-2.cpp create mode 100644 Telegram/ThirdParty/Catch/examples/030-Asn-Require-Check.cpp create mode 100644 Telegram/ThirdParty/Catch/examples/100-Fix-Section.cpp create mode 100644 Telegram/ThirdParty/Catch/examples/110-Fix-ClassFixture.cpp create mode 100644 Telegram/ThirdParty/Catch/examples/120-Bdd-ScenarioGivenWhenThen.cpp create mode 100644 Telegram/ThirdParty/Catch/examples/210-Evt-EventListeners.cpp create mode 100644 Telegram/ThirdParty/Catch/examples/CMakeLists.txt create mode 100644 Telegram/ThirdParty/Catch/include/catch.hpp create mode 100644 Telegram/ThirdParty/Catch/include/catch_with_main.hpp create mode 100644 Telegram/ThirdParty/Catch/include/external/clara.hpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_approx.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_approx.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_assertionhandler.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_assertionhandler.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_assertioninfo.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_assertionresult.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_assertionresult.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_benchmark.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_benchmark.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_capture.hpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_capture_matchers.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_capture_matchers.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_clara.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_commandline.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_commandline.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_common.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_common.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_compiler_capabilities.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_config.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_config.hpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_console_colour.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_console_colour.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_context.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_context.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_debug_console.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_debug_console.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_debugger.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_debugger.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_decomposer.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_decomposer.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_default_main.hpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_enforce.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_errno_guard.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_errno_guard.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_exception_translator_registry.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_exception_translator_registry.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_external_interfaces.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_fatal_condition.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_fatal_condition.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_impl.hpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_capture.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_capture.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_config.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_config.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_exception.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_exception.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_registry_hub.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_registry_hub.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_reporter.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_reporter.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_runner.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_runner.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_tag_alias_registry.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_testcase.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_interfaces_testcase.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_leak_detector.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_leak_detector.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_list.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_list.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_matchers.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_matchers.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_matchers_floating.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_matchers_floating.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_matchers_string.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_matchers_string.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_matchers_vector.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_message.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_message.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_objc.hpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_objc_arc.hpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_option.hpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_platform.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_random_number_generator.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_random_number_generator.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_reenable_warnings.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_registry_hub.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_reporter_registrars.hpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_reporter_registry.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_reporter_registry.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_result_type.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_result_type.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_run_context.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_run_context.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_section.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_section.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_section_info.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_section_info.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_session.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_session.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_startup_exception_registry.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_startup_exception_registry.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_stream.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_stream.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_string_manip.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_string_manip.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_stringref.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_stringref.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_suppress_warnings.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_tag_alias.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_tag_alias.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_tag_alias_autoregistrar.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_tag_alias_autoregistrar.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_tag_alias_registry.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_tag_alias_registry.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_test_case_info.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_test_case_info.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_test_case_registry_impl.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_test_case_registry_impl.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_test_case_tracker.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_test_case_tracker.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_test_registry.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_test_registry.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_test_spec.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_test_spec.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_test_spec_parser.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_test_spec_parser.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_text.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_timer.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_timer.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_tostring.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_tostring.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_totals.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_totals.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_user_interfaces.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_version.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_version.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_wildcard_pattern.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_wildcard_pattern.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_windows_h_proxy.h create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_xmlwriter.cpp create mode 100644 Telegram/ThirdParty/Catch/include/internal/catch_xmlwriter.h create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_automake.hpp create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_bases.cpp create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_bases.hpp create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_compact.cpp create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_compact.h create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_console.cpp create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_console.h create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_junit.cpp create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_junit.h create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_multi.cpp create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_multi.h create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_tap.hpp create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_teamcity.hpp create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_xml.cpp create mode 100644 Telegram/ThirdParty/Catch/include/reporters/catch_reporter_xml.h create mode 100644 Telegram/ThirdParty/Catch/projects/Benchmark/BenchMain.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/Benchmark/StringificationBench.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/Benchmark/readme.txt create mode 100644 Telegram/ThirdParty/Catch/projects/Benchmark/results/2017-01-14T21-53-49-e3659cdddd43ba4df9e4846630be6a6a7bd85a07.result create mode 100644 Telegram/ThirdParty/Catch/projects/Benchmark/results/2017-01-14T21-59-08-a1e9b841ff500b2f39ccfd4193ae450cb653da05.result create mode 100644 Telegram/ThirdParty/Catch/projects/Benchmark/results/2017-01-15T09-35-14-3b98a0166f7b7196eba2ad518174d1a77165166d.result create mode 100644 Telegram/ThirdParty/Catch/projects/Benchmark/results/2017-01-29T22-08-36-60f8ebec49c5bc58d3604bf1a72cd3f7d129bf2e.result create mode 100644 Telegram/ThirdParty/Catch/projects/Benchmark/results/2017-01-29T23-13-35-bcaa2f9646c5ce50758f8582307c99501a932e1a.result create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/Baselines/automake.std.approved.txt create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/Baselines/console.std.approved.txt create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/Baselines/console.sw.approved.txt create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/Baselines/console.swa4.approved.txt create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/Baselines/junit.sw.approved.txt create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/Baselines/xml.sw.approved.txt create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/CompileTimePerfTests/10.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/CompileTimePerfTests/100.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/CompileTimePerfTests/All.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/IntrospectiveTests/CmdLine.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/IntrospectiveTests/PartTracker.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/IntrospectiveTests/String.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/IntrospectiveTests/TagAlias.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/IntrospectiveTests/Xml.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/SurrogateCpps/catch_console_colour.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/SurrogateCpps/catch_debugger.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/SurrogateCpps/catch_interfaces_reporter.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/SurrogateCpps/catch_option.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/SurrogateCpps/catch_stream.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/SurrogateCpps/catch_test_case_tracker.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/SurrogateCpps/catch_test_spec.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/SurrogateCpps/catch_xmlwriter.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/TestMain.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/Approx.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/BDD.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/Benchmark.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/Class.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/Compilation.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/Condition.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/Decomposition.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/EnumToString.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/Exception.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/Matchers.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/Message.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/Misc.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/ToStringChrono.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/ToStringGeneral.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/ToStringPair.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/ToStringTuple.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/ToStringVector.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/ToStringWhich.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/Tricky.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/SelfTest/UsageTests/VariadicMacros.tests.cpp create mode 100644 Telegram/ThirdParty/Catch/projects/Where did the projects go.txt create mode 100644 Telegram/ThirdParty/Catch/projects/XCode/OCTest/OCTest.xcodeproj/project.pbxproj create mode 100644 Telegram/ThirdParty/Catch/projects/XCode/OCTest/OCTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Telegram/ThirdParty/Catch/projects/XCode/OCTest/OCTest/CatchOCTestCase.h create mode 100644 Telegram/ThirdParty/Catch/projects/XCode/OCTest/OCTest/CatchOCTestCase.mm create mode 100644 Telegram/ThirdParty/Catch/projects/XCode/OCTest/OCTest/Main.mm create mode 100644 Telegram/ThirdParty/Catch/projects/XCode/OCTest/OCTest/OCTest.1 create mode 100644 Telegram/ThirdParty/Catch/projects/XCode/OCTest/OCTest/OCTest.mm create mode 100644 Telegram/ThirdParty/Catch/projects/XCode/OCTest/OCTest/TestObj.h create mode 100644 Telegram/ThirdParty/Catch/projects/XCode/OCTest/OCTest/TestObj.m create mode 100644 Telegram/ThirdParty/Catch/projects/XCode/OCTest/catch_objc_impl.mm create mode 100755 Telegram/ThirdParty/Catch/scripts/approvalTests.py create mode 100755 Telegram/ThirdParty/Catch/scripts/approve.py create mode 100755 Telegram/ThirdParty/Catch/scripts/benchmarkCompile.py create mode 100755 Telegram/ThirdParty/Catch/scripts/benchmarkRunner.py create mode 100755 Telegram/ThirdParty/Catch/scripts/developBuild.py create mode 100644 Telegram/ThirdParty/Catch/scripts/embed.py create mode 100644 Telegram/ThirdParty/Catch/scripts/embedClara.py create mode 100755 Telegram/ThirdParty/Catch/scripts/fixWhitespace.py create mode 100755 Telegram/ThirdParty/Catch/scripts/generateSingleHeader.py create mode 100755 Telegram/ThirdParty/Catch/scripts/majorRelease.py create mode 100755 Telegram/ThirdParty/Catch/scripts/minorRelease.py create mode 100755 Telegram/ThirdParty/Catch/scripts/patchRelease.py create mode 100644 Telegram/ThirdParty/Catch/scripts/releaseCommon.py create mode 100755 Telegram/ThirdParty/Catch/scripts/releaseNotes.py create mode 100644 Telegram/ThirdParty/Catch/scripts/scriptCommon.py create mode 100644 Telegram/ThirdParty/Catch/scripts/updateDocumentToC.py create mode 100644 Telegram/ThirdParty/Catch/scripts/updateVcpkgPackage.py create mode 100644 Telegram/ThirdParty/Catch/scripts/updateWandbox.py create mode 100644 Telegram/ThirdParty/Catch/single_include/catch.hpp create mode 100644 Telegram/ThirdParty/Catch/test_package/CMakeLists.txt create mode 100644 Telegram/ThirdParty/Catch/test_package/MainTest.cpp create mode 100644 Telegram/ThirdParty/Catch/test_package/conanfile.py create mode 100644 Telegram/ThirdParty/Catch/third_party/clara.hpp diff --git a/.gitmodules b/.gitmodules index b36b906e9..e69de29bb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "Telegram/ThirdParty/Catch"] - path = Telegram/ThirdParty/Catch - url = https://github.com/philsquared/Catch diff --git a/Telegram/ThirdParty/Catch b/Telegram/ThirdParty/Catch deleted file mode 160000 index 5ca44b687..000000000 --- a/Telegram/ThirdParty/Catch +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5ca44b68721833ae3731802ed99af67c6f38a53a diff --git a/Telegram/ThirdParty/Catch/.gitattributes b/Telegram/ThirdParty/Catch/.gitattributes new file mode 100644 index 000000000..a2d66d32b --- /dev/null +++ b/Telegram/ThirdParty/Catch/.gitattributes @@ -0,0 +1,11 @@ +# This sets the default behaviour, overriding core.autocrlf +* text=auto + +# All source files should have unix line-endings in the repository, +# but convert to native line-endings on checkout +*.cpp text +*.h text +*.hpp text + +# Windows specific files should retain windows line-endings +*.sln text eol=crlf \ No newline at end of file diff --git a/Telegram/ThirdParty/Catch/.github/issue_template.md b/Telegram/ThirdParty/Catch/.github/issue_template.md new file mode 100644 index 000000000..051b5e5f8 --- /dev/null +++ b/Telegram/ThirdParty/Catch/.github/issue_template.md @@ -0,0 +1,29 @@ +## Description + + + +### Steps to reproduce + + + +### Extra information + +* Catch version: **v42.42.42** +* Operating System: **Joe's discount operating system** +* Compiler+version: **Hidden Dragon v1.2.3** diff --git a/Telegram/ThirdParty/Catch/.github/pull_request_template.md b/Telegram/ThirdParty/Catch/.github/pull_request_template.md new file mode 100644 index 000000000..368f41fb1 --- /dev/null +++ b/Telegram/ThirdParty/Catch/.github/pull_request_template.md @@ -0,0 +1,28 @@ + + + +## Description + + +## GitHub Issues + diff --git a/Telegram/ThirdParty/Catch/.gitignore b/Telegram/ThirdParty/Catch/.gitignore new file mode 100644 index 000000000..bf296d96f --- /dev/null +++ b/Telegram/ThirdParty/Catch/.gitignore @@ -0,0 +1,28 @@ +*.build +*.pbxuser +*.mode1v3 +*.ncb +*.suo +Debug +Release +*.user +*.xcuserstate +.DS_Store +xcuserdata +CatchSelfTest.xcscheme +Breakpoints.xcbkptlist +projects/VS2010/TestCatch/_UpgradeReport_Files/ +projects/VS2010/TestCatch/TestCatch/TestCatch.vcxproj.filters +projects/VisualStudio/TestCatch/UpgradeLog.XML +projects/CMake/.idea +projects/CMake/cmake-build-debug +UpgradeLog.XML +Resources/DWARF +projects/Generated +*.pyc +DerivedData +*.xccheckout +Build +.idea +.vs +cmake-build-* diff --git a/Telegram/ThirdParty/Catch/.gitrepo b/Telegram/ThirdParty/Catch/.gitrepo new file mode 100644 index 000000000..6e20491b5 --- /dev/null +++ b/Telegram/ThirdParty/Catch/.gitrepo @@ -0,0 +1,11 @@ +; DO NOT EDIT (unless you know what you are doing) +; +; This subdirectory is a git "subrepo", and this file is maintained by the +; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme +; +[subrepo] + remote = https://github.com/philsquared/Catch + branch = master + commit = 63c097a07775f939b5b77c88dd61fe933f4d7050 + parent = f27cd81fd0d3ecd9dc02be18c70e767a4a3fee6e + cmdver = 0.3.1 diff --git a/Telegram/ThirdParty/Catch/.travis.yml b/Telegram/ThirdParty/Catch/.travis.yml new file mode 100644 index 000000000..bbcaf54a7 --- /dev/null +++ b/Telegram/ThirdParty/Catch/.travis.yml @@ -0,0 +1,215 @@ +language: cpp +sudo: false + +common_sources: &all_sources + - ubuntu-toolchain-r-test + - llvm-toolchain-trusty + - llvm-toolchain-trusty-3.9 + - llvm-toolchain-trusty-4.0 + - llvm-toolchain-trusty-5.0 + +matrix: + include: + + # 1/ Linux Clang Builds + - os: linux + compiler: clang + addons: + apt: + sources: *all_sources + packages: ['valgrind', 'clang-3.5'] + env: COMPILER='clang++-3.5' VALGRIND=1 + + - os: linux + compiler: clang + addons: + apt: + sources: *all_sources + packages: ['valgrind', 'clang-3.6'] + env: COMPILER='clang++-3.6' VALGRIND=1 + +# Travis's containers do not seem to have Clang 3.7 in apt, no matter what sources I add. +# - os: linux +# compiler: clang +# addons: +# apt: +# sources: *all_sources +# packages: ['valgrind', 'clang-3.7'] +# env: COMPILER='clang++-3.7' VALGRIND=1 + + - os: linux + compiler: clang + addons: + apt: + sources: *all_sources + packages: ['valgrind', 'clang-3.8'] + env: COMPILER='clang++-3.8' VALGRIND=1 + + - os: linux + compiler: clang + addons: + apt: + sources: *all_sources + packages: ['clang-3.9', 'valgrind'] + env: COMPILER='clang++-3.9' VALGRIND=1 + + - os: linux + compiler: clang + addons: + apt: + sources: *all_sources + packages: ['clang-4.0', 'valgrind'] + env: COMPILER='clang++-4.0' VALGRIND=1 + + - os: linux + compiler: clang + addons: + apt: + sources: *all_sources + packages: ['clang-5.0', 'valgrind'] + env: COMPILER='clang++-5.0' VALGRIND=1 + + # 2/ Linux GCC Builds + - os: linux + compiler: gcc + addons: + apt: + sources: ['ubuntu-toolchain-r-test'] + packages: ['valgrind', 'g++-4.8'] + env: COMPILER='g++-4.8' VALGRIND=1 + + - os: linux + compiler: gcc + addons: + apt: + sources: *all_sources + packages: ['valgrind', 'g++-4.9'] + env: COMPILER='g++-4.9' VALGRIND=1 + + - os: linux + compiler: gcc + addons: + apt: + sources: *all_sources + packages: ['valgrind', 'g++-5'] + env: COMPILER='g++-5' VALGRIND=1 + + - os: linux + compiler: gcc + addons: &gcc6 + apt: + sources: *all_sources + packages: ['valgrind', 'g++-6'] + env: COMPILER='g++-6' VALGRIND=1 + + - os: linux + compiler: gcc + addons: &gcc7 + apt: + sources: *all_sources + packages: ['valgrind', 'g++-7'] + env: COMPILER='g++-7' VALGRIND=1 + + # 3b/ Linux C++14 Clang builds + - os: linux + compiler: clang + addons: + apt: + packages: ['clang-3.8', 'valgrind', 'libstdc++-6-dev'] + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-trusty + env: COMPILER='clang++-3.8' CPP14=1 VALGRIND=1 + + - os: linux + compiler: clang + addons: + apt: + sources: *all_sources + packages: ['clang-3.9', 'valgrind', 'libstdc++-6-dev'] + env: COMPILER='clang++-3.9' CPP14=1 VALGRIND=1 + + - os: linux + compiler: clang + addons: + apt: + sources: *all_sources + packages: ['clang-4.0', 'valgrind', 'libstdc++-6-dev'] + env: COMPILER='clang++-4.0' CPP14=1 VALGRIND=1 + + - os: linux + compiler: clang + addons: + apt: + sources: *all_sources + packages: ['clang-5.0', 'valgrind', 'libstdc++-6-dev'] + env: COMPILER='clang++-5.0' CPP14=1 VALGRIND=1 + + + # 4a/ Linux C++14 GCC builds + - os: linux + compiler: gcc + addons: *gcc6 + env: COMPILER='g++-6' CPP14=1 VALGRIND=1 + + - os: linux + compiler: gcc + addons: *gcc7 + env: COMPILER='g++-7' CPP14=1 VALGRIND=1 + + # 5/ OSX Clang Builds + - os: osx + osx_image: xcode7.3 + compiler: clang + env: COMPILER='clang++' + + - os: osx + osx_image: xcode8 + compiler: clang + env: COMPILER='clang++' + + - os: osx + osx_image: xcode9 + compiler: clang + env: COMPILER='clang++' + + - os: osx + osx_image: xcode9.1 + compiler: clang + env: COMPILER='clang++' + + - os: osx + osx_image: xcode9.1 + compiler: clang + env: COMPILER='clang++' USE_CPP14=1 + +install: + - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps" + - mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR} + - | + if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then + CMAKE_URL="http://www.cmake.org/files/v3.3/cmake-3.3.2-Linux-x86_64.tar.gz" + mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake + export PATH=${DEPS_DIR}/cmake/bin:${PATH} + elif [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then + which cmake || brew install cmake + fi + +before_script: + - export CXX=${COMPILER} + - cd ${TRAVIS_BUILD_DIR} + # Regenerate single header file, so it is tested in the examples... + - python scripts/generateSingleHeader.py + + # Use Debug builds for running Valgrind and building examples + - cmake -H. -BBuild-Debug -DCMAKE_BUILD_TYPE=Debug -Wdev -DUSE_CPP14=${CPP14} -DUSE_VALGRIND=${VALGRIND} -DBUILD_EXAMPLES=ON + # Check that we don't miscompile with optimalizations... + - cmake -H. -BBuild-Release -DCMAKE_BUILD_TYPE=Release -Wdev -DUSE_CPP14=${CPP14} + +script: + - cd Build-Debug + - make -j 2 + - ctest -V -j 2 + - cd ../Build-Release + - make -j 2 + - ctest -V -j 2 diff --git a/Telegram/ThirdParty/Catch/CMakeLists.txt b/Telegram/ThirdParty/Catch/CMakeLists.txt new file mode 100644 index 000000000..3792bad62 --- /dev/null +++ b/Telegram/ThirdParty/Catch/CMakeLists.txt @@ -0,0 +1,361 @@ +cmake_minimum_required(VERSION 3.0) + +project(CatchSelfTest) + +option(USE_VALGRIND "Perform SelfTests with Valgrind" OFF) +option(BUILD_EXAMPLES "Build documentation examples" OFF) + +set_property(GLOBAL PROPERTY USE_FOLDERS ON) + +# define some folders +set(CATCH_DIR ${CMAKE_CURRENT_SOURCE_DIR}) +set(SELF_TEST_DIR ${CATCH_DIR}/projects/SelfTest) +set(BENCHMARK_DIR ${CATCH_DIR}/projects/Benchmark) +set(HEADER_DIR ${CATCH_DIR}/include) +set(CATCH_VERSION_NUMBER 2.0.1) + +if(USE_WMAIN) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ENTRY:wmainCRTStartup") +endif() + +#checks that the given hard-coded list contains all headers + sources in the given folder +function(CheckFileList LIST_VAR FOLDER) + set(MESSAGE " should be added to the variable ${LIST_VAR}") + set(MESSAGE "${MESSAGE} in ${CMAKE_CURRENT_LIST_FILE}\n") + file(GLOB GLOBBED_LIST "${FOLDER}/*.cpp" + "${FOLDER}/*.hpp" + "${FOLDER}/*.h") + list(REMOVE_ITEM GLOBBED_LIST ${${LIST_VAR}}) + foreach(EXTRA_ITEM ${GLOBBED_LIST}) + string(REPLACE "${CATCH_DIR}/" "" RELATIVE_FILE_NAME "${EXTRA_ITEM}") + message(AUTHOR_WARNING "The file \"${RELATIVE_FILE_NAME}\"${MESSAGE}") + endforeach() +endfunction() + +function(CheckFileListRec LIST_VAR FOLDER) + set(MESSAGE " should be added to the variable ${LIST_VAR}") + set(MESSAGE "${MESSAGE} in ${CMAKE_CURRENT_LIST_FILE}\n") + file(GLOB_RECURSE GLOBBED_LIST "${FOLDER}/*.cpp" + "${FOLDER}/*.hpp" + "${FOLDER}/*.h") + list(REMOVE_ITEM GLOBBED_LIST ${${LIST_VAR}}) + foreach(EXTRA_ITEM ${GLOBBED_LIST}) + string(REPLACE "${CATCH_DIR}/" "" RELATIVE_FILE_NAME "${EXTRA_ITEM}") + message(AUTHOR_WARNING "The file \"${RELATIVE_FILE_NAME}\"${MESSAGE}") + endforeach() +endfunction() + +# define the sources of the self test +# Please keep these ordered alphabetically +set(TEST_SOURCES + ${SELF_TEST_DIR}/TestMain.cpp + ${SELF_TEST_DIR}/IntrospectiveTests/CmdLine.tests.cpp + ${SELF_TEST_DIR}/IntrospectiveTests/PartTracker.tests.cpp + ${SELF_TEST_DIR}/IntrospectiveTests/TagAlias.tests.cpp + ${SELF_TEST_DIR}/IntrospectiveTests/String.tests.cpp + ${SELF_TEST_DIR}/IntrospectiveTests/Xml.tests.cpp + ${SELF_TEST_DIR}/UsageTests/Approx.tests.cpp + ${SELF_TEST_DIR}/UsageTests/BDD.tests.cpp + ${SELF_TEST_DIR}/UsageTests/Benchmark.tests.cpp + ${SELF_TEST_DIR}/UsageTests/Class.tests.cpp + ${SELF_TEST_DIR}/UsageTests/Compilation.tests.cpp + ${SELF_TEST_DIR}/UsageTests/Condition.tests.cpp + ${SELF_TEST_DIR}/UsageTests/Decomposition.tests.cpp + ${SELF_TEST_DIR}/UsageTests/EnumToString.tests.cpp + ${SELF_TEST_DIR}/UsageTests/Exception.tests.cpp + ${SELF_TEST_DIR}/UsageTests/Message.tests.cpp + ${SELF_TEST_DIR}/UsageTests/Misc.tests.cpp + ${SELF_TEST_DIR}/UsageTests/ToStringChrono.tests.cpp + ${SELF_TEST_DIR}/UsageTests/ToStringGeneral.tests.cpp + ${SELF_TEST_DIR}/UsageTests/ToStringPair.tests.cpp + ${SELF_TEST_DIR}/UsageTests/ToStringTuple.tests.cpp + ${SELF_TEST_DIR}/UsageTests/ToStringVector.tests.cpp + ${SELF_TEST_DIR}/UsageTests/ToStringWhich.tests.cpp + ${SELF_TEST_DIR}/UsageTests/Tricky.tests.cpp + ${SELF_TEST_DIR}/UsageTests/VariadicMacros.tests.cpp + ${SELF_TEST_DIR}/UsageTests/Matchers.tests.cpp + ) +CheckFileList(TEST_SOURCES ${SELF_TEST_DIR}) + +# A set of impl files that just #include a single header +# Please keep these ordered alphabetically +set(SURROGATE_SOURCES + ${SELF_TEST_DIR}/SurrogateCpps/catch_console_colour.cpp + ${SELF_TEST_DIR}/SurrogateCpps/catch_debugger.cpp + ${SELF_TEST_DIR}/SurrogateCpps/catch_interfaces_reporter.cpp + ${SELF_TEST_DIR}/SurrogateCpps/catch_option.cpp + ${SELF_TEST_DIR}/SurrogateCpps/catch_stream.cpp + ${SELF_TEST_DIR}/SurrogateCpps/catch_test_case_tracker.cpp + ${SELF_TEST_DIR}/SurrogateCpps/catch_test_spec.cpp + ${SELF_TEST_DIR}/SurrogateCpps/catch_xmlwriter.cpp + ) +CheckFileList(SURROGATE_SOURCES ${SELF_TEST_DIR}/SurrogateCpps) + + +# Please keep these ordered alphabetically +set(TOP_LEVEL_HEADERS + ${HEADER_DIR}/catch.hpp + ${HEADER_DIR}/catch_with_main.hpp + ) +CheckFileList(TOP_LEVEL_HEADERS ${HEADER_DIR}) + +# Please keep these ordered alphabetically +set(EXTERNAL_HEADERS + ${HEADER_DIR}/external/clara.hpp + ) +CheckFileList(EXTERNAL_HEADERS ${HEADER_DIR}/external) + + +# Please keep these ordered alphabetically +set(INTERNAL_HEADERS + ${HEADER_DIR}/internal/catch_approx.h + ${HEADER_DIR}/internal/catch_assertionhandler.h + ${HEADER_DIR}/internal/catch_assertioninfo.h + ${HEADER_DIR}/internal/catch_assertionresult.h + ${HEADER_DIR}/internal/catch_capture.hpp + ${HEADER_DIR}/internal/catch_capture_matchers.h + ${HEADER_DIR}/internal/catch_clara.h + ${HEADER_DIR}/internal/catch_commandline.h + ${HEADER_DIR}/internal/catch_common.h + ${HEADER_DIR}/internal/catch_compiler_capabilities.h + ${HEADER_DIR}/internal/catch_config.hpp + ${HEADER_DIR}/internal/catch_console_colour.h + ${HEADER_DIR}/internal/catch_context.h + ${HEADER_DIR}/internal/catch_debug_console.h + ${HEADER_DIR}/internal/catch_debugger.h + ${HEADER_DIR}/internal/catch_decomposer.h + ${HEADER_DIR}/internal/catch_default_main.hpp + ${HEADER_DIR}/internal/catch_enforce.h + ${HEADER_DIR}/internal/catch_errno_guard.h + ${HEADER_DIR}/internal/catch_exception_translator_registry.h + ${HEADER_DIR}/internal/catch_external_interfaces.h + ${HEADER_DIR}/internal/catch_fatal_condition.h + ${HEADER_DIR}/internal/catch_impl.hpp + ${HEADER_DIR}/internal/catch_interfaces_capture.h + ${HEADER_DIR}/internal/catch_interfaces_config.h + ${HEADER_DIR}/internal/catch_interfaces_exception.h + ${HEADER_DIR}/internal/catch_interfaces_registry_hub.h + ${HEADER_DIR}/internal/catch_interfaces_reporter.h + ${HEADER_DIR}/internal/catch_interfaces_runner.h + ${HEADER_DIR}/internal/catch_interfaces_tag_alias_registry.h + ${HEADER_DIR}/internal/catch_interfaces_testcase.h + ${HEADER_DIR}/internal/catch_leak_detector.h + ${HEADER_DIR}/internal/catch_list.h + ${HEADER_DIR}/internal/catch_matchers.h + ${HEADER_DIR}/internal/catch_matchers_floating.h + ${HEADER_DIR}/internal/catch_matchers_string.h + ${HEADER_DIR}/internal/catch_matchers_vector.h + ${HEADER_DIR}/internal/catch_message.h + ${HEADER_DIR}/internal/catch_objc.hpp + ${HEADER_DIR}/internal/catch_objc_arc.hpp + ${HEADER_DIR}/internal/catch_option.hpp + ${HEADER_DIR}/internal/catch_platform.h + ${HEADER_DIR}/internal/catch_random_number_generator.h + ${HEADER_DIR}/internal/catch_reenable_warnings.h + ${HEADER_DIR}/internal/catch_reporter_registrars.hpp + ${HEADER_DIR}/internal/catch_reporter_registry.h + ${HEADER_DIR}/internal/catch_result_type.h + ${HEADER_DIR}/internal/catch_run_context.h + ${HEADER_DIR}/internal/catch_benchmark.h + ${HEADER_DIR}/internal/catch_section.h + ${HEADER_DIR}/internal/catch_section_info.h + ${HEADER_DIR}/internal/catch_session.h + ${HEADER_DIR}/internal/catch_startup_exception_registry.h + ${HEADER_DIR}/internal/catch_stream.h + ${HEADER_DIR}/internal/catch_stringref.h + ${HEADER_DIR}/internal/catch_string_manip.h + ${HEADER_DIR}/internal/catch_suppress_warnings.h + ${HEADER_DIR}/internal/catch_tag_alias.h + ${HEADER_DIR}/internal/catch_tag_alias_autoregistrar.h + ${HEADER_DIR}/internal/catch_tag_alias_registry.h + ${HEADER_DIR}/internal/catch_test_case_info.h + ${HEADER_DIR}/internal/catch_test_case_registry_impl.h + ${HEADER_DIR}/internal/catch_test_case_tracker.h + ${HEADER_DIR}/internal/catch_test_registry.h + ${HEADER_DIR}/internal/catch_test_spec.h + ${HEADER_DIR}/internal/catch_test_spec_parser.h + ${HEADER_DIR}/internal/catch_text.h + ${HEADER_DIR}/internal/catch_timer.h + ${HEADER_DIR}/internal/catch_tostring.h + ${HEADER_DIR}/internal/catch_totals.h + ${HEADER_DIR}/internal/catch_user_interfaces.h + ${HEADER_DIR}/internal/catch_version.h + ${HEADER_DIR}/internal/catch_wildcard_pattern.h + ${HEADER_DIR}/internal/catch_windows_h_proxy.h + ${HEADER_DIR}/internal/catch_xmlwriter.h + ) +set(IMPL_SOURCES + ${HEADER_DIR}/internal/catch_approx.cpp + ${HEADER_DIR}/internal/catch_assertionhandler.cpp + ${HEADER_DIR}/internal/catch_assertionresult.cpp + ${HEADER_DIR}/internal/catch_benchmark.cpp + ${HEADER_DIR}/internal/catch_capture_matchers.cpp + ${HEADER_DIR}/internal/catch_commandline.cpp + ${HEADER_DIR}/internal/catch_common.cpp + ${HEADER_DIR}/internal/catch_config.cpp + ${HEADER_DIR}/internal/catch_console_colour.cpp + ${HEADER_DIR}/internal/catch_context.cpp + ${HEADER_DIR}/internal/catch_debug_console.cpp + ${HEADER_DIR}/internal/catch_debugger.cpp + ${HEADER_DIR}/internal/catch_decomposer.cpp + ${HEADER_DIR}/internal/catch_errno_guard.cpp + ${HEADER_DIR}/internal/catch_exception_translator_registry.cpp + ${HEADER_DIR}/internal/catch_fatal_condition.cpp + ${HEADER_DIR}/internal/catch_interfaces_capture.cpp + ${HEADER_DIR}/internal/catch_interfaces_config.cpp + ${HEADER_DIR}/internal/catch_interfaces_exception.cpp + ${HEADER_DIR}/internal/catch_interfaces_registry_hub.cpp + ${HEADER_DIR}/internal/catch_interfaces_runner.cpp + ${HEADER_DIR}/internal/catch_interfaces_testcase.cpp + ${HEADER_DIR}/internal/catch_list.cpp + ${HEADER_DIR}/internal/catch_leak_detector.cpp + ${HEADER_DIR}/internal/catch_matchers.cpp + ${HEADER_DIR}/internal/catch_matchers_floating.cpp + ${HEADER_DIR}/internal/catch_matchers_string.cpp + ${HEADER_DIR}/internal/catch_message.cpp + ${HEADER_DIR}/internal/catch_registry_hub.cpp + ${HEADER_DIR}/internal/catch_interfaces_reporter.cpp + ${HEADER_DIR}/internal/catch_random_number_generator.cpp + ${HEADER_DIR}/internal/catch_reporter_registry.cpp + ${HEADER_DIR}/internal/catch_result_type.cpp + ${HEADER_DIR}/internal/catch_run_context.cpp + ${HEADER_DIR}/internal/catch_section.cpp + ${HEADER_DIR}/internal/catch_section_info.cpp + ${HEADER_DIR}/internal/catch_session.cpp + ${HEADER_DIR}/internal/catch_startup_exception_registry.cpp + ${HEADER_DIR}/internal/catch_stream.cpp + ${HEADER_DIR}/internal/catch_stringref.cpp + ${HEADER_DIR}/internal/catch_string_manip.cpp + ${HEADER_DIR}/internal/catch_tag_alias.cpp + ${HEADER_DIR}/internal/catch_tag_alias_autoregistrar.cpp + ${HEADER_DIR}/internal/catch_tag_alias_registry.cpp + ${HEADER_DIR}/internal/catch_test_case_info.cpp + ${HEADER_DIR}/internal/catch_test_case_registry_impl.cpp + ${HEADER_DIR}/internal/catch_test_case_tracker.cpp + ${HEADER_DIR}/internal/catch_test_registry.cpp + ${HEADER_DIR}/internal/catch_test_spec.cpp + ${HEADER_DIR}/internal/catch_test_spec_parser.cpp + ${HEADER_DIR}/internal/catch_timer.cpp + ${HEADER_DIR}/internal/catch_tostring.cpp + ${HEADER_DIR}/internal/catch_totals.cpp + ${HEADER_DIR}/internal/catch_version.cpp + ${HEADER_DIR}/internal/catch_wildcard_pattern.cpp + ${HEADER_DIR}/internal/catch_xmlwriter.cpp + ) +set(INTERNAL_FILES ${IMPL_SOURCES} ${INTERNAL_HEADERS}) +CheckFileList(INTERNAL_FILES ${HEADER_DIR}/internal) + +# Please keep these ordered alphabetically +set(REPORTER_HEADERS + ${HEADER_DIR}/reporters/catch_reporter_automake.hpp + ${HEADER_DIR}/reporters/catch_reporter_bases.hpp + ${HEADER_DIR}/reporters/catch_reporter_compact.h + ${HEADER_DIR}/reporters/catch_reporter_console.h + ${HEADER_DIR}/reporters/catch_reporter_junit.h + ${HEADER_DIR}/reporters/catch_reporter_multi.h + ${HEADER_DIR}/reporters/catch_reporter_tap.hpp + ${HEADER_DIR}/reporters/catch_reporter_teamcity.hpp + ${HEADER_DIR}/reporters/catch_reporter_xml.h + ) +set(REPORTER_SOURCES + ${HEADER_DIR}/reporters/catch_reporter_bases.cpp + ${HEADER_DIR}/reporters/catch_reporter_compact.cpp + ${HEADER_DIR}/reporters/catch_reporter_console.cpp + ${HEADER_DIR}/reporters/catch_reporter_junit.cpp + ${HEADER_DIR}/reporters/catch_reporter_multi.cpp + ${HEADER_DIR}/reporters/catch_reporter_xml.cpp + ) +set(REPORTER_FILES ${REPORTER_HEADERS} ${REPORTER_SOURCES}) +CheckFileList(REPORTER_FILES ${HEADER_DIR}/reporters) + +# Specify the headers, too, so CLion recognises them as project files +set(HEADERS + ${TOP_LEVEL_HEADERS} + ${EXTERNAL_HEADERS} + ${INTERNAL_HEADERS} + ${REPORTER_HEADERS} + ) + +# Provide some groupings for IDEs +SOURCE_GROUP("Tests" FILES ${TEST_SOURCES}) +SOURCE_GROUP("Surrogates" FILES ${SURROGATE_SOURCES}) + +# configure the executable + +# Projects consuming Catch via ExternalProject_Add might want to use install step +# without building all of our selftests. +if (NOT NO_SELFTEST) + add_executable(SelfTest ${TEST_SOURCES} ${IMPL_SOURCES} ${REPORTER_SOURCES} ${SURROGATE_SOURCES} ${HEADERS}) + target_include_directories(SelfTest PRIVATE ${HEADER_DIR}) + + if(USE_CPP14) + message(STATUS "Enabling C++14") + set_property(TARGET SelfTest PROPERTY CXX_STANDARD 14) + else() + message(STATUS "Enabling C++11") + set_property(TARGET SelfTest PROPERTY CXX_STANDARD 11) + endif() + + set_property(TARGET SelfTest PROPERTY CXX_STANDARD_REQUIRED ON) + set_property(TARGET SelfTest PROPERTY CXX_EXTENSIONS OFF) + + + # Add desired warnings + if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang|GNU" ) + target_compile_options( SelfTest PRIVATE -Wall -Wextra -Wunreachable-code -Werror ) + endif() + # Clang specific warning go here + if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" ) + # Actually keep these + target_compile_options( SelfTest PRIVATE -Wweak-vtables -Wexit-time-destructors -Wglobal-constructors -Wmissing-noreturn ) + endif() + if ( CMAKE_CXX_COMPILER_ID MATCHES "MSVC" ) + target_compile_options( SelfTest PRIVATE /W4 /w44265 /WX /w44061 /w44062 ) + endif() + + + # configure unit tests via CTest + enable_testing() + add_test(NAME RunTests COMMAND $) + + add_test(NAME ListTests COMMAND $ --list-tests) + set_tests_properties(ListTests PROPERTIES PASS_REGULAR_EXPRESSION "[0-9]+ test cases") + + add_test(NAME ListTags COMMAND $ --list-tags) + set_tests_properties(ListTags PROPERTIES PASS_REGULAR_EXPRESSION "[0-9]+ tags") + + # AppVeyor has a Python 2.7 in path, but doesn't have .py files as autorunnable + add_test(NAME ApprovalTests COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/scripts/approvalTests.py $) + set_tests_properties(ApprovalTests PROPERTIES FAIL_REGULAR_EXPRESSION "Results differed") + + if (USE_VALGRIND) + add_test(NAME ValgrindRunTests COMMAND valgrind --leak-check=full --error-exitcode=1 $) + add_test(NAME ValgrindListTests COMMAND valgrind --leak-check=full --error-exitcode=1 $ --list-tests) + set_tests_properties(ValgrindListTests PROPERTIES PASS_REGULAR_EXPRESSION "definitely lost: 0 bytes in 0 blocks") + add_test(NAME ValgrindListTags COMMAND valgrind --leak-check=full --error-exitcode=1 $ --list-tags) + set_tests_properties(ValgrindListTags PROPERTIES PASS_REGULAR_EXPRESSION "definitely lost: 0 bytes in 0 blocks") + endif() + +endif() # !NO_SELFTEST + + +if(BUILD_EXAMPLES) + add_subdirectory(examples) +endif() + + +install(DIRECTORY "single_include/" DESTINATION "include/catch") + +## Provide some pkg-config integration +# Don't bother on Windows +if(NOT WIN32 OR NOT CMAKE_HOST_SYSTEM_NAME MATCHES Windows) + + set(PKGCONFIG_INSTALL_DIR + "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" + CACHE PATH "Path where catch.pc is installed" + ) + + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/catch.pc.in ${CMAKE_CURRENT_BINARY_DIR}/catch.pc @ONLY) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/catch.pc DESTINATION ${PKGCONFIG_INSTALL_DIR}) + +endif() diff --git a/Telegram/ThirdParty/Catch/CODE_OF_CONDUCT.md b/Telegram/ThirdParty/Catch/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..be1a688e0 --- /dev/null +++ b/Telegram/ThirdParty/Catch/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at github@philnash.me. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/Telegram/ThirdParty/Catch/LICENSE.txt b/Telegram/ThirdParty/Catch/LICENSE.txt new file mode 100644 index 000000000..36b7cd93c --- /dev/null +++ b/Telegram/ThirdParty/Catch/LICENSE.txt @@ -0,0 +1,23 @@ +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/Telegram/ThirdParty/Catch/README.md b/Telegram/ThirdParty/Catch/README.md new file mode 100644 index 000000000..fc85b85e2 --- /dev/null +++ b/Telegram/ThirdParty/Catch/README.md @@ -0,0 +1,35 @@ + +![catch logo](artwork/catch2-logo-small.png) + +[![Github Releases](https://img.shields.io/github/release/catchorg/catch2.svg)](https://github.com/catchorg/catch2/releases) +[![Build Status](https://travis-ci.org/catchorg/Catch2.svg)](https://travis-ci.org/catchorg/Catch2) +[![Build status](https://ci.appveyor.com/api/projects/status/hrtk60hv6tw6fght?svg=true)](https://ci.appveyor.com/project/catchorg/catch2) +[![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/tB8z0G3kMAIZkIca) + +The latest version of the single header can be downloaded directly using this link + +## Catch2 is released! + +If you've been using an earlier version of Catch, please see the +Breaking Changes section of [the release notes](https://github.com/catchorg/Catch2/releases/tag/v2.0.1) +before moving to Catch2. You might also like to read [this blog post](http://www.levelofindirection.com/journal/2017/11/3/catch2-released.html) for more details. + +## What's the Catch? + +Catch2 stands for C++ Automated Test Cases in a Header and is a +multi-paradigm test framework for C++. which also supports Objective-C +(and maybe C). +It is primarily distributed as a single header file, although certain +extensions may require additional headers. + +## How to use it +This documentation comprises these three parts: + +* [Why do we need yet another C++ Test Framework?](docs/why-catch.md#top) +* [Tutorial](docs/tutorial.md#top) - getting started +* [Reference section](docs/Readme.md#top) - all the details + +## More +* Issues and bugs can be raised on the [Issue tracker on GitHub](https://github.com/catchorg/Catch2/issues) +* For discussion or questions please use [the dedicated Google Groups forum](https://groups.google.com/forum/?fromgroups#!forum/catch-forum) +* See [who else is using Catch2](docs/opensource-users.md#top) diff --git a/Telegram/ThirdParty/Catch/appveyor.yml b/Telegram/ThirdParty/Catch/appveyor.yml new file mode 100644 index 000000000..f3a2c5bde --- /dev/null +++ b/Telegram/ThirdParty/Catch/appveyor.yml @@ -0,0 +1,61 @@ +# version string format -- This will be overwritten later anyway +version: "{build}" + +branches: + except: + - /dev-travis.+/ + +os: + - Visual Studio 2017 + - Visual Studio 2015 + +environment: + matrix: + - additional_flags: "/permissive- /std:c++latest" + wmain: 0 + + - additional_flags: "" + wmain: 0 + + - additional_flags: "/D_UNICODE /DUNICODE" + wmain: 1 + +matrix: + exclude: + - os: Visual Studio 2015 + additional_flags: "/permissive- /std:c++latest" + +init: + - git config --global core.autocrlf input + # Set build version to git commit-hash + - ps: Update-AppveyorBuild -Version "$($env:APPVEYOR_REPO_BRANCH) - $($env:APPVEYOR_REPO_COMMIT)" + +# fetch repository as zip archive +shallow_clone: true + +# Win32 and x64 are CMake-compatible solution platform names. +# This allows us to pass %PLATFORM% to CMake -A. +platform: + - Win32 + - x64 + +# build Configurations, i.e. Debug, Release, etc. +configuration: + - Debug + - Release + +#Cmake will autodetect the compiler, but we set the arch +before_build: + - python scripts/generateSingleHeader.py + - set CXXFLAGS=%additional_flags% + - cmake -H. -BBuild -A%PLATFORM% -DUSE_WMAIN=%wmain% -DBUILD_EXAMPLES=ON + +# build with MSBuild +build: + project: Build\CatchSelfTest.sln # path to Visual Studio solution or project + parallel: true # enable MSBuild parallel builds + verbosity: normal # MSBuild verbosity level {quiet|minimal|normal|detailed} + +test_script: + - cd Build + - ctest -V -j 2 -C %CONFIGURATION% diff --git a/Telegram/ThirdParty/Catch/artwork/catch2-c-logo.png b/Telegram/ThirdParty/Catch/artwork/catch2-c-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bab400f91a822bbd14b8712d5815111d4d1b6bea GIT binary patch literal 18222 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 literal 0 HcmV?d00001 diff --git a/Telegram/ThirdParty/Catch/artwork/catch2-hand-logo.png b/Telegram/ThirdParty/Catch/artwork/catch2-hand-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5a5e142d2b8537f0cc7d8c4d66ea28c3310be37d GIT binary patch literal 57969 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%0Do-epTwN9Y@q$av9-X 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 Tet#vb10NSBkG+)+{;B^0@b8#_ literal 0 HcmV?d00001 diff --git a/Telegram/ThirdParty/Catch/artwork/catch2-logo-small.png b/Telegram/ThirdParty/Catch/artwork/catch2-logo-small.png new file mode 100644 index 0000000000000000000000000000000000000000..f2118bee09cf296a9f0598980f5a7c94b8e9f077 GIT binary patch literal 29025 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 OQ