onqtam | 8126b56 | 2016-05-27 17:01:15 +0300 | [diff] [blame] | 1 | <!DOCTYPE html> |
| 2 | <html> |
| 3 | <title>roadmap</title> |
| 4 | <xmp theme="united" style="display:none;"> |
| 5 | |
| 6 | ## Roadmap |
| 7 | |
onqtam | e34600e | 2016-11-15 02:16:56 +0200 | [diff] [blame] | 8 | This 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. |
onqtam | 8126b56 | 2016-05-27 17:01:15 +0300 | [diff] [blame] | 9 | |
onqtam | 8126b56 | 2016-05-27 17:01:15 +0300 | [diff] [blame] | 10 | |
onqtam | 1435c01 | 2016-09-21 15:29:11 +0300 | [diff] [blame] | 11 | [![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) |
onqtam | 8126b56 | 2016-05-27 17:01:15 +0300 | [diff] [blame] | 14 | |
onqtam | 1435c01 | 2016-09-21 15:29:11 +0300 | [diff] [blame] | 15 | This 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 |
onqtam | ec103be | 2016-10-09 13:46:25 +0300 | [diff] [blame] | 19 | - add support for <=, >= to Approx - like [requested](https://github.com/philsquared/Catch/pull/715) with [catch](https://github.com/philsquared/Catch/issues/651) |
onqtam | e8bdda4 | 2016-06-01 15:12:36 +0300 | [diff] [blame] | 20 | - the set holding all registered tests should use a specialized allocator to minimize program startup time |
onqtam | 1435c01 | 2016-09-21 15:29:11 +0300 | [diff] [blame] | 21 | - 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) |
onqtam | 8126b56 | 2016-05-27 17:01:15 +0300 | [diff] [blame] | 23 | - support for ```std::exception``` and derivatives (mainly for calling the ```.what()``` method when caught unexpectedly) |
onqtam | 1435c01 | 2016-09-21 15:29:11 +0300 | [diff] [blame] | 24 | - crash handling: signals on UNIX platforms or structured exceptions on Windows (should also have DOCTEST_CONFIG_NO_SIGNAL_CATCHING) |
onqtam | 8126b56 | 2016-05-27 17:01:15 +0300 | [diff] [blame] | 25 | - 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) |
onqtam | 1435c01 | 2016-09-21 15:29:11 +0300 | [diff] [blame] | 42 | - adding contextual info to asserts (logging) - with an ```INFO```/```CONTEXT``` /```TRACEPOINT``` macro (also look at [this](https://github.com/philsquared/Catch/issues/601)) |
onqtam | 3bb1157 | 2017-02-18 20:35:58 +0200 | [diff] [blame] | 43 | - add ```ERROR```/```FAIL``` macros (also ```ADD_FAILURE_AT(file, line);``` and extend the asserts to have ```_AT``` variants) |
onqtam | 8126b56 | 2016-05-27 17:01:15 +0300 | [diff] [blame] | 44 | - 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 |
onqtam | e8bdda4 | 2016-06-01 15:12:36 +0300 | [diff] [blame] | 50 | - look into MSTest integration |
| 51 | - http://accu.org/index.php/journals/1851 |
| 52 | - https://msdn.microsoft.com/en-us/library/hh270865.aspx |
onqtam | 69fd862 | 2016-09-23 15:22:50 +0300 | [diff] [blame] | 53 | - https://msdn.microsoft.com/en-us/library/hh598953.aspx |
onqtam | 1435c01 | 2016-09-21 15:29:11 +0300 | [diff] [blame] | 54 | - also look into similar Xcode integration - https://github.com/philsquared/Catch/pull/454 |
onqtam | 2115e6d | 2016-09-23 17:48:51 +0300 | [diff] [blame] | 55 | - matchers - should investigate what they are - look at google test and Catch |
onqtam | 69fd862 | 2016-09-23 15:22:50 +0300 | [diff] [blame] | 56 | - 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 |
onqtam | 1435c01 | 2016-09-21 15:29:11 +0300 | [diff] [blame] | 58 | - look at property based testing (for example [rapidcheck](https://github.com/emil-e/rapidcheck)) - and write in FAQ |
onqtam | ec103be | 2016-10-09 13:46:25 +0300 | [diff] [blame] | 59 | - [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 |
onqtam | 1435c01 | 2016-09-21 15:29:11 +0300 | [diff] [blame] | 60 | |
| 61 | And 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** |
onqtam | ec103be | 2016-10-09 13:46:25 +0300 | [diff] [blame] | 65 | - 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) |
onqtam | 1435c01 | 2016-09-21 15:29:11 +0300 | [diff] [blame] | 66 | - 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 |
onqtam | e8bdda4 | 2016-06-01 15:12:36 +0300 | [diff] [blame] | 69 | - a progress reporter |
onqtam | 1435c01 | 2016-09-21 15:29:11 +0300 | [diff] [blame] | 70 | - 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... |
onqtam | 8126b56 | 2016-05-27 17:01:15 +0300 | [diff] [blame] | 72 | - ability to specify ASC/DESC for the order option |
| 73 | - command line error handling/reporting |
onqtam | 1435c01 | 2016-09-21 15:29:11 +0300 | [diff] [blame] | 74 | - ability for the user to extend the command line - as requested [here](https://github.com/philsquared/Catch/issues/622) |
| 75 | |
| 76 | The 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??? |
onqtam | 8126b56 | 2016-05-27 17:01:15 +0300 | [diff] [blame] | 81 | - 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 |
onqtam | 8126b56 | 2016-05-27 17:01:15 +0300 | [diff] [blame] | 83 | - ability to re-run only newly compiled tests based on time stamps using ```__DATE__``` and ```__TIME__``` - stored in some file |
onqtam | 1435c01 | 2016-09-21 15:29:11 +0300 | [diff] [blame] | 84 | - 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 |
onqtam | 8126b56 | 2016-05-27 17:01:15 +0300 | [diff] [blame] | 88 | |
| 89 | --------------- |
| 90 | |
| 91 | [Home](readme.html#reference) |
| 92 | |
| 93 | |
| 94 | </xmp> |
| 95 | <script src="strapdown.js/strapdown.js"></script> |
| 96 | </html> |