blob: 198fd870a0d28bcf7a49b28a2360b277aa6185b0 [file] [log] [blame]
onqtam8126b562016-05-27 17:01:15 +03001<!DOCTYPE html>
2<html>
3<title>roadmap</title>
4<xmp theme="united" style="display:none;">
5
6## Roadmap
7
onqtame34600e2016-11-15 02:16:56 +02008This library is free, and will stay free but needs your support to sustain its development. There are lots of [**new features**](roadmap.html) and maintenance to do. If you work for a company using **doctest** or have the means to do so, please consider financial support.
onqtam8126b562016-05-27 17:01:15 +03009
onqtam8126b562016-05-27 17:01:15 +030010
onqtam1435c012016-09-21 15:29:11 +030011[![Pledgie](https://pledgie.com/campaigns/31280.png)](https://pledgie.com/campaigns/31280)
12[![Patreon](https://cloud.githubusercontent.com/assets/8225057/5990484/70413560-a9ab-11e4-8942-1a63607c0b00.png)](http://www.patreon.com/onqtam)
13[![PayPal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3K423Q6TK48BN)
onqtam8126b562016-05-27 17:01:15 +030014
onqtam1435c012016-09-21 15:29:11 +030015This is a list of planned features for future releases (not in the given order).
16
17- option to output summary only
18- ability to customize the colors in the console output
onqtamec103be2016-10-09 13:46:25 +030019- add support for <=, >= to Approx - like [requested](https://github.com/philsquared/Catch/pull/715) with [catch](https://github.com/philsquared/Catch/issues/651)
onqtame8bdda42016-06-01 15:12:36 +030020- the set holding all registered tests should use a specialized allocator to minimize program startup time
onqtam1435c012016-09-21 15:29:11 +030021- pool allocator for the ```String``` class - currently very unoptimized
22- a mechanism for translating exceptions - users should be able to teach the framework about their types (look at Catch)
onqtam8126b562016-05-27 17:01:15 +030023- support for ```std::exception``` and derivatives (mainly for calling the ```.what()``` method when caught unexpectedly)
onqtam1435c012016-09-21 15:29:11 +030024- crash handling: signals on UNIX platforms or structured exceptions on Windows (should also have DOCTEST_CONFIG_NO_SIGNAL_CATCHING)
onqtam8126b562016-05-27 17:01:15 +030025- support for tags
26 - may fail tag
27 - invisible tag
28 - look at Catch - https://github.com/philsquared/Catch/blob/master/docs/test-cases-and-sections.html#special-tags
29- output to file
30- reporters
31 - a system for writing custom reporters
32 - ability to use multiple reporters at once (but only 1 to stdout)
33 - a compact reporter
34 - an xml reporter
35 - jUnit/xUnit reporters
36- add the ability to query if code is currently being ran in a test - ```doctest::isRunningInTest()```
37- convolution support for the assertion macros (with a predicate)
38- time stuff
39 - reporting running time of tests
40 - restricting duration of test cases
41 - killing a test that exceeds a time limit (will perhaps require threading or processes)
onqtam1435c012016-09-21 15:29:11 +030042- adding contextual info to asserts (logging) - with an ```INFO```/```CONTEXT``` /```TRACEPOINT``` macro (also look at [this](https://github.com/philsquared/Catch/issues/601))
onqtam3bb11572017-02-18 20:35:58 +020043- add ```ERROR```/```FAIL``` macros (also ```ADD_FAILURE_AT(file, line);``` and extend the asserts to have ```_AT``` variants)
onqtam8126b562016-05-27 17:01:15 +030044- running tests a few times
45- marking a test to run X times (should also multiply with the global test run times)
46- test execution in separate processes - ```fork()``` for UNIX and [this](https://github.com/nemequ/munit/issues/2) for Windows
47- ability to provide a temp folder that is cleared between each test case
48- detect floating point exceptions
49- ```Bitwise()``` class that has overloaded operators for comparison - to be used to check objects bitwise against each other
onqtame8bdda42016-06-01 15:12:36 +030050- look into MSTest integration
51 - http://accu.org/index.php/journals/1851
52 - https://msdn.microsoft.com/en-us/library/hh270865.aspx
onqtam69fd8622016-09-23 15:22:50 +030053 - https://msdn.microsoft.com/en-us/library/hh598953.aspx
onqtam1435c012016-09-21 15:29:11 +030054 - also look into similar Xcode integration - https://github.com/philsquared/Catch/pull/454
onqtam2115e6d2016-09-23 17:48:51 +030055- matchers - should investigate what they are - look at google test and Catch
onqtam69fd8622016-09-23 15:22:50 +030056- generators? - look at Catch - and investigate what they are (also in [boost](http://www.boost.org/doc/libs/1_61_0/libs/test/doc/html/boost_test/tests_organization/test_cases/test_case_generation.html))
57- mocking - investigate google mock assertion macros and interop with doctest (also [mockitopp](https://github.com/tpounds/mockitopp) and [trompeloeil](https://github.com/rollbear/trompeloeil)) - and write in FAQ
onqtam1435c012016-09-21 15:29:11 +030058- look at property based testing (for example [rapidcheck](https://github.com/emil-e/rapidcheck)) - and write in FAQ
onqtamec103be2016-10-09 13:46:25 +030059- [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
onqtam1435c012016-09-21 15:29:11 +030060
61And here is a list of things that are being considered but not part of the roadmap yet:
62
63- ability to have no output when everything succeeds
64- integrate static analysis on the CI: **msvc**, **clang**, **cppcheck**
onqtamec103be2016-10-09 13:46:25 +030065- extend Approx for types that have operator double - see [here](https://github.com/philsquared/Catch/issues/652) and [here](https://github.com/philsquared/Catch/pull/658)
onqtam1435c012016-09-21 15:29:11 +030066- option to list files in which there are test cases who match the current filters
67- support for doing assertions in multiple threads - synchronize their access to shared doctest state
68- support for running tests in parallel in multiple threads
onqtame8bdda42016-06-01 15:12:36 +030069- a progress reporter
onqtam1435c012016-09-21 15:29:11 +030070- ability to filter not just TEST_CASE names but also SUBCASE names (and maybe tags when they are introduced)
71- doctest in a GUI environment? with no console? APIs for attaching a console? querying if there is one? investigate...
onqtam8126b562016-05-27 17:01:15 +030072- ability to specify ASC/DESC for the order option
73- command line error handling/reporting
onqtam1435c012016-09-21 15:29:11 +030074- ability for the user to extend the command line - as requested [here](https://github.com/philsquared/Catch/issues/622)
75
76The following list is with things that are very unlikely to enter the roadmap:
77
78- test with missed warning flags for GCC - look into https://github.com/Barro/compiler-warnings
79- utf8???
80- handle ```wchar``` strings???
onqtam8126b562016-05-27 17:01:15 +030081- print a warning when no assertion is encountered in a test case
82- hierarchical test suites - using a stack for the pushed ones - should be easy
onqtam8126b562016-05-27 17:01:15 +030083- ability to re-run only newly compiled tests based on time stamps using ```__DATE__``` and ```__TIME__``` - stored in some file
onqtam1435c012016-09-21 15:29:11 +030084- add option to not report line numbers - getting annoyed of re-committing reference output files with changed line reports from a tiny change...
85- add underscores to all preprocessor identifiers not intended for use by the user
86- put everything from the ```detail``` namespace also in a nested anonymous namespace to make them with internal linkage
87- 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
onqtam8126b562016-05-27 17:01:15 +030088
89---------------
90
91[Home](readme.html#reference)
92
93
94</xmp>
95<script src="strapdown.js/strapdown.js"></script>
96</html>