From 9907046167962dbe5a73d7c98ab2c60b68916b73 Mon Sep 17 00:00:00 2001 From: Stefan <29021710+Saalvage@users.noreply.github.com> Date: Mon, 24 Jan 2022 21:26:50 +0100 Subject: Move roadmap and wipe it clean (#601) * Remove most references to old roadmap * Update articles and fix all references to the old issue roadmap --- CONTRIBUTING.md | 2 +- README.md | 6 +- doc/markdown/faq.md | 2 +- doc/markdown/features.md | 2 +- doc/markdown/readme.md | 4 +- doc/markdown/roadmap.md | 161 ---------------------------------------------- scripts/data/article.txt | 2 +- scripts/data/article2.txt | 2 +- 8 files changed, 10 insertions(+), 171 deletions(-) delete mode 100644 doc/markdown/roadmap.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fde29c69..b955dffe 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ ## Contributing -This library is free, and will stay free but needs your support to sustain its development. There are lots of [**new features**](doc/markdown/roadmap.md) and maintenance to do. If you work for a company using **doctest** or have the means to do so, please consider financial support. +This library is free, and will stay free but needs your support to sustain its development. There are lots of [**new features**](https://github.com/doctest/doctest/issues/600) and maintenance to do. If you work for a company using **doctest** or have the means to do so, please consider financial support. [](https://www.patreon.com/onqtam) [](https://www.paypal.me/onqtam/10) diff --git a/README.md b/README.md index 81b4c577..501b7af5 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ [](https://www.patreon.com/onqtam) -The framework is and will stay free but needs your support to sustain its development. There are lots of new features and maintenance to do. If you work for a company using **doctest** or have the means to do so, please consider financial support. Monthly donations via Patreon and one-offs via PayPal. +The framework is and will stay free but needs your support to sustain its development. There are lots of new features and maintenance to do. If you work for a company using **doctest** or have the means to do so, please consider financial support. Monthly donations via Patreon and one-offs via PayPal. [](https://www.paypal.me/onqtam/10) @@ -90,7 +90,7 @@ Documentation Project: - [Features and design goals](doc/markdown/features.md) - the complete list of features -- [Roadmap](doc/markdown/roadmap.md) - upcoming features +- [Community driven roadmap](https://github.com/doctest/doctest/issues/600) - upcoming features - [Benchmarks](doc/markdown/benchmarks.md) - compile-time and runtime supremacy - [Contributing](CONTRIBUTING.md) - how to make a proper pull request - [Changelog](CHANGELOG.md) - generated changelog based on closed issues/PRs @@ -117,7 +117,7 @@ Contributing [](https://www.patreon.com/onqtam) -Support the development of the project with donations! There is a list of planned features which are all important and big - see the [**roadmap**](doc/markdown/roadmap.md). I took a break from working in the industry to make open source software so every cent is a big deal. +Support the development of the project with donations! There is a list of planned features which are all important and big - see the [**roadmap**](https://github.com/doctest/doctest/issues/600). [](https://www.paypal.me/onqtam/10) diff --git a/doc/markdown/faq.md b/doc/markdown/faq.md index 7e73157a..57f51a79 100644 --- a/doc/markdown/faq.md +++ b/doc/markdown/faq.md @@ -38,7 +38,7 @@ Missing stuff: - micro benchmarking support - nonius is used in [**Catch**](https://github.com/catchorg/Catch2) - other small stuff such as tags - can be easily emulated/migrated from - see below -But these things (and more!) are planned in the [**roadmap**](roadmap.md)! +But these things (and more!) are planned in the [**roadmap**](https://github.com/doctest/doctest/issues/600)! **doctest** can be thought of as a very polished, light, stable and clean subset (or reimplementation) of [**Catch**](https://github.com/catchorg/Catch2) but this might change in the future as more features are added. diff --git a/doc/markdown/features.md b/doc/markdown/features.md index 2fb2c880..fa135541 100644 --- a/doc/markdown/features.md +++ b/doc/markdown/features.md @@ -75,7 +75,7 @@ - ability to query if code is currently being ran in a test - ```doctest::is_running_in_test``` - tests can be registered in CTest with the use of [```doctest_discover_tests()``` from scripts/cmake/doctest.cmake](../../scripts/cmake/doctest.cmake) -There is a list of planned features which are all important and big - see the [**roadmap**](roadmap.md). +There is a list of planned features which are all important and big - see the [**roadmap**](https://github.com/doctest/doctest/issues/600). --------------- diff --git a/doc/markdown/readme.md b/doc/markdown/readme.md index 11a8c8f3..1c02d8df 100644 --- a/doc/markdown/readme.md +++ b/doc/markdown/readme.md @@ -4,7 +4,7 @@ Reference Project: - [Features and design goals](features.md) - the complete list of features -- [Roadmap](roadmap.md) - upcoming features +- [Community driven roadmap](https://github.com/doctest/doctest/issues/600) - upcoming features - [Benchmarks](benchmarks.md) - compile-time and runtime supremacy - [Contributing](../../CONTRIBUTING.md) - how to make a proper pull request - [Changelog](../../CHANGELOG.md) - generated changelog based on closed issues/PRs @@ -26,7 +26,7 @@ Usage: - [Build systems](build-systems.md) - [Examples](../../examples) -This library is free, and will stay free but needs your support to sustain its development. There are lots of [**new features**](roadmap.md) and maintenance to do. If you work for a company using **doctest** or have the means to do so, please consider financial support. +This library is free, and will stay free but needs your support to sustain its development. There are lots of [**new features**](https://github.com/doctest/doctest/issues/600) and maintenance to do. If you work for a company using **doctest** or have the means to do so, please consider financial support. [![Patreon](https://cloud.githubusercontent.com/assets/8225057/5990484/70413560-a9ab-11e4-8942-1a63607c0b00.png)](http://www.patreon.com/onqtam) [![PayPal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.me/onqtam/10) diff --git a/doc/markdown/roadmap.md b/doc/markdown/roadmap.md deleted file mode 100644 index 3da9b286..00000000 --- a/doc/markdown/roadmap.md +++ /dev/null @@ -1,161 +0,0 @@ -## Roadmap - -This library is free, and will stay free but needs your support to sustain its development. There are lots of [**new features**](roadmap.md) and maintenance to do. If you work for a company using **doctest** or have the means to do so, please consider financial support. - -[![Patreon](https://cloud.githubusercontent.com/assets/8225057/5990484/70413560-a9ab-11e4-8942-1a63607c0b00.png)](http://www.patreon.com/onqtam) -[![PayPal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.me/onqtam/10) - -Planned features for future releases - order changes constantly... Also look through the [**issues**](https://github.com/doctest/doctest/issues). - -### For 2.5: - -- https://github.com/doctest/doctest/issues/208 -- reporters: - - ability to redirect the stdout/stderr from test cases and capture it - like Catch does it - - xUnit/TeamCity reporter - - compact reporter -- matchers - should investigate what they are - look at google test/mock and Catch (also predicates and boost test) -- header with extensions - - demangling with the use of the cxxabi header - - stringification of types from std, also enums with the help of traits as discussed in #121 - - esoteric reporters -- convolution support for the assertion macros (with a predicate) -- Value-Parameterized test cases -- generators? - look at Catch - and investigate what they are (also SUBCASEs can be while() loops instead of if() statements! that might be useful...) -- look at property based testing - - [rapidcheck](https://github.com/emil-e/rapidcheck) - - [autocheck](https://github.com/thejohnfreeman/autocheck) - - [CppQuickCheck](https://github.com/grogers0/CppQuickCheck) -- proper conan package - https://github.com/doctest/doctest/issues/103 -- IDE integration - - https://blogs.msdn.microsoft.com/vcblog/2017/05/10/unit-testing-and-the-future-announcing-the-test-adapter-for-google-test/ - - https://www.reddit.com/r/cpp/comments/65c0f1/run_cpp_unit_tests_from_xcode_and_visual_studio/ - - https://github.com/k-brac/CUTI - - https://github.com/csoltenborn/GoogleTestAdapter - - MSTest - - http://accu.org/index.php/journals/1851 - - https://msdn.microsoft.com/en-us/library/hh270865.aspx - - https://msdn.microsoft.com/en-us/library/hh598953.aspx - - https://blogs.msdn.microsoft.com/vcblog/2017/04/19/cpp-testing-in-visual-studio/ - - https://msdn.microsoft.com/en-us/library/hh419385.aspx - - XCode - https://github.com/catchorg/Catch2/pull/454 - - CLion - - https://www.jetbrains.com/clion/features/unit-testing.html - - https://blog.jetbrains.com/clion/2017/03/clion-2017-1-released/#catch - -### For 2.6: - -- log levels - like in [boost test](http://www.boost.org/doc/libs/1_63_0/libs/test/doc/html/boost_test/utf_reference/rt_param_reference/log_level.html) -- running tests a [few times](https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md#repeating-the-tests) -- test execution in [separate processes](https://github.com/catchorg/Catch2/issues/853) - ```fork()``` for UNIX and [this](https://github.com/nemequ/munit/issues/2) for Windows -- killing a test that exceeds a time limit (will perhaps require threading or processes) -- [symbolizer](https://github.com/facebook/folly/tree/master/folly/experimental/symbolizer) - for a stack trace - when an assertion fails - and it's in a user function with some deep callstack away from the current test case - how to know the exact code path that lead to the failing assert -- ability to make the framework not capture unexpected exceptions - as requested [here](https://github.com/doctest/doctest/issues/12#issuecomment-235334585) -- add Approx ability to compare with absolute epsilon - [Catch PR](https://github.com/catchorg/Catch2/pull/538) -- ability to customize the colors in the console output (may also use styles - based on [this](https://github.com/agauniyal/rang) or [this](https://github.com/ikalnytskyi/termcolor)) -- implement breaking into the debugger under linux - see [here](https://github.com/catchorg/Catch2/pull/585) and [here](https://github.com/scottt/debugbreak) -- better testing of the library - - unit test the String class - - should unit test internals - currently even if a bug is caught by different output it's very difficult to track the reason - - should test stuff that should not compile - - https://github.com/ldionne/dyno/blob/master/cmake/CompileFailTest.cmake - - see slide 38 here - https://github.com/boostcon/cppnow_presentations_2017/blob/master/05-19-2017_friday/effective_cmake__daniel_pfeifer__cppnow_05-19-2017.pdf - - should test crash handling - - should test more config options - - don't cheat for maxing out code coverage (see [coverage_maxout.cpp](../../examples/all_features/coverage_maxout.cpp)) - - should test C++11 stuff - perhaps inspect the CMAKE_CXX_FLAGS for -std=c++11 on the CI and add more targets/tests - - test tricky stuff like expressions with commas in asserts - -### For 3.0: - -- use modules - use ```std::string``` and whatever else comes from the standard - no more hand rolled traits and classes -- minimize the use of the preprocessor -- remove backwards-compatible macros for the fast asserts - -### Things that are being considered but not part of the roadmap yet: - -- add ability to print a diff for strings/values instead of the whole 2 versions (gtest does that) -- add LIKELY & friends for the conditions of asserts - look at BOOST_LIKELY, ppk_assert, foonathan/debug_assert, etc -- ability for users to register their own command line options and access them later on -- fix this: https://github.com/catchorg/Catch2/issues/1292 -- FakeIt mocking integration - like [catch](https://github.com/eranpeer/FakeIt/tree/master/config/catch) (also checkout [this](https://github.com/ujiro99/doctest-sample)) -- look into https://github.com/cpp-testing/GUnit - https://www.youtube.com/watch?v=NVrZjT5lW5o -- consider the following 2 properties for the MSVC static code analyzer: EnableCppCoreCheck, EnableExperimentalCppCoreCheck -- rpm package? like this: https://github.com/vietjtnguyen/argagg/blob/master/packaging/rpm/argagg.spec -- get the current test case/section path - https://github.com/catchorg/Catch2/issues/522 -- when no assertion is encountered in a test case it should fail - and should also add a SUCCEED() call -- failure reporting should print out previous SECTIONs for data-driven testing - as requested [here](https://github.com/catchorg/Catch2/issues/734) -- ```Bitwise()``` class that has overloaded operators for comparison - to be used to check objects bitwise against each other -- detect floating point exceptions -- checkpoint/passpoint - like in [boost test](http://www.boost.org/doc/libs/1_63_0/libs/test/doc/html/boost_test/test_output/test_tools_support_for_logging/checkpoints.html) (also make all assert/subcase/logging macros to act as passpoints and print the last one on crashes or exceptions) -- queries for the current test case - name (and probably decorators) -- support for LibIdentify -- add CHECKED_IF & friends: https://github.com/catchorg/Catch2/issues/1278 -- support for running tests in parallel in multiple threads -- death tests - as in [google test](https://github.com/google/googletest/blob/master/docs/advanced.md#death-tests) -- config options - - test case name uniqueness - reject the ones with identical names -- command line options - - ability to specify ASC/DESC for the order option - - global timeout option (per test or per entire session?) - - command line error handling/reporting - - option to not print context info when the --success option is used - - ability for the user to extend the command line - as requested [here](https://github.com/catchorg/Catch2/issues/622) - - option to list files in which there are test cases who match the current filters - - option for filters to switch from "match any" to "match all" mode - - option to list test suites and test cases in a tree view - - add a "wait key" option (before and after tests) - as requested [here](https://github.com/catchorg/Catch2/issues/477#issuecomment-256417686) -- decorators for test cases and test suites- like in boost test - - depends_on - - precondition - - fixture - - label (tag) - with the ability to have multiple labels (tags) for a test case and also the ability to list them - - run X times (should also multiply with (or just override) the global test run times) - - throw an exception when incompatible decorators are given in the same list of decorators - like may_fail and should_fail -- setup / teardown support - - global setup / teardown - can be currently achieved by providing a custom main function - - per test suite (block? only? and not all blocks of the same test suite?) - - as decorators - - see how it's done in boost test - with the fixture decorator - - perhaps for fixtures in addition to the constructor / destructor - since throwing in the destructor might terminate the program - - or just ignore all of this this - it would require globals or classes and inheritance - and we already have subcases -- doctest in a GUI environment? with no console? APIs for attaching a console? querying if there is one? [investigate...](https://github.com/catchorg/Catch2/blob/master/docs/configuration.md#stdout) -- runtime performance - - look at this: https://github.com/catchorg/Catch2/issues/1086 - - startup - the set holding all registered tests should use a specialized allocator to minimize program startup time - - optimize the mutex lock: - - http://preshing.com/20111124/always-use-a-lightweight-mutex/ - - http://preshing.com/20120226/roll-your-own-lightweight-mutex/ -- ability to provide a temp folder that is cleared between each test case -- make the _MESSAGE assert macros work with variadic arguments - and maybe write the ones for binary/unary asserts as well -- move from operator "<<" to "<=" for capturing the left operand when decomposing binary expressions with templates -- think about silencing warnings about unused variables when DOCTEST_CONFIG_DISABLE is used - see commit 6b61e8aa3818c5ea100cedc1bb48a60ea10df6e8 or issue #61 - - also this: ```(void)(true ? (void)0 : ((void)(expression)))``` -- think about optionally using `````` and libcxxabi for demangling so users don't have to use ```TYPE_TO_STRING()``` -- handle more complex expressions - ```CHECK(foo() == 1 || bar() == 2);``` -- add [[noreturn]] to MessageBuilder::react() - and actually make a separate function (react2) for the FAIL() case -- think about using a string view of some sorts -- benchmark against google test and boost test - -### Things that are very unlikely to enter the roadmap: - -- rethink static code analysis suppressions - users shouldn't have to use the same flags for code which uses doctest macros/types -- templated fixture test cases -- test with missed warning flags for GCC - - https://github.com/Barro/compiler-warnings - - https://stackoverflow.com/a/34971392/3162383 -- utf8 / unicode ??? - - https://github.com/catchorg/Catch2/pull/903 -- handle ```wchar``` strings??? -- hierarchical test suites - using a stack for the pushed ones -- ability to specify the width of the terminal in terms of characters (for example 60 - less than 80 - the default) -- ability to re-run only newly compiled tests based on time stamps using ```__DATE__``` and ```__TIME__``` - stored in some file -- add underscores to all preprocessor identifiers not intended for use by the user -- put everything from the ```detail``` namespace also in a nested anonymous namespace to make them with internal linkage -- ability to put everything from doctest into an anonymous namespace - to allow the use of multiple different versions of **doctest** within the same binary (executable/dll) - like the [**stb**](https://github.com/nothings/stb) libraries can - ---------------- - -[Home](readme.md#reference) - -

diff --git a/scripts/data/article.txt b/scripts/data/article.txt index 08a56c03..caeae678 100644 --- a/scripts/data/article.txt +++ b/scripts/data/article.txt @@ -251,7 +251,7 @@ The development of doctest is supported with donations. [6] https://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C.2B.2B [7] https://github.com/doctest/doctest/blob/master/doc/markdown/faq.md#how-is-doctest-different-from-catch [8] https://github.com/doctest/doctest/blob/master/doc/markdown/features.md -[9] https://github.com/doctest/doctest/blob/master/doc/markdown/roadmap.md +[9] https://github.com/doctest/doctest/issues/600 [10] https://github.com/doctest/doctest/blob/master/doc/markdown/benchmarks.md [11] https://github.com/doctest/doctest/blob/master/doc/markdown/assertions.md#fast-asserts [12] http://baptiste-wicht.com/posts/2016/09/blazing-fast-unit-test-compilation-with-doctest-11.html diff --git a/scripts/data/article2.txt b/scripts/data/article2.txt index 9f94d952..4be1d814 100644 --- a/scripts/data/article2.txt +++ b/scripts/data/article2.txt @@ -149,5 +149,5 @@ doctest [0] stands out with its ability to write tests in a new and easier way - [24] https://github.com/doctest/doctest/blob/master/doc/markdown/assertions.md#binary-and-unary-asserts [25] https://github.com/doctest/doctest/blob/master/doc/markdown/configuration.md#doctest_config_super_fast_asserts [26] https://github.com/doctest/doctest/blob/master/doc/markdown/faq.md#how-to-get-the-best-compile-time-performance-with-the-framework -[27] https://github.com/doctest/doctest/blob/master/doc/markdown/roadmap.md +[27] https://github.com/doctest/doctest/issues/600 [28] https://www.youtube.com/watch?v=eH1CxEC29l8 -- cgit v1.2.3