taskwarrior/test
pre-commit-ci[bot] f9c17d9b5b
[pre-commit.ci] pre-commit autoupdate (#3822)
* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-clang-format: v19.1.7 → v20.1.0](https://github.com/pre-commit/mirrors-clang-format/compare/v19.1.7...v20.1.0)

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-03-17 19:50:44 -04:00
..
basetest Test for unusual task data (#3770) 2025-02-05 08:20:35 -05:00
docker change fedora39 to fedora41 runner (#3698) 2024-11-25 05:54:43 +01:00
scripts add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
simpletap add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
test_hooks Make test hooks executable (#3728) 2024-12-17 19:08:48 -05:00
abbreviation.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
add.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
alias.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
annotate.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
append.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
args.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
bash_completion.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
bash_tap.sh Actually run shell tests (#3583) 2024-08-07 00:44:12 +00:00
bash_tap_tw.sh Actually run shell tests (#3583) 2024-08-07 00:44:12 +00:00
blocked.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
bulk.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
burndown.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
calc.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
calendar.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
caseless.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
CMakeLists.txt Open Replica read-only when possible (#3776) 2025-02-14 10:25:19 +01:00
col_test.cpp Declare in corresponding header files and dissolve main.h (#3796) 2025-03-01 14:47:42 -05:00
color.cmd.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
color.rules.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
columns.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
commands.test.py Handle 'until' and 'recur' simiar to handling of 'gc' (#3753) 2025-01-18 02:20:41 -05:00
completed.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
configuration.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
confirmation.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
context.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
conversion Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
count.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
custom.config.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
custom.recur_ind.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
custom.tag_ind.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
custom.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
date.iso.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
dateformat.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
datesort.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
datetime-negative.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
debug.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
default.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
delete.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
denotate.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
dependencies.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
diag.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
diag_color.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
dom2.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
dom_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
due.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
duplicate.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
edit.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
encoding.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
enpassant.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
eval_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
exec.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
export.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
feature.559.test.py Use TaskChampion 0.7.0, now via cxx instead of hand-rolled FFI (#3588) 2024-08-11 02:06:00 +00:00
feature.default.project.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
feature.print.empty.columns.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
feature.recurrence.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
feedback.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
filter.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
fontunderline.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
format.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
gc.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
helpers.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
history.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
hooks.env.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
hooks.on-add.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
hooks.on-exit.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
hooks.on-launch.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
hooks.on-modify.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
hyphenate.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
ids.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
import-v2.test.py Support importing Taskwarrior v2.x data files (#3724) 2024-12-17 01:24:45 +00:00
import.test.py Issue warnings instead of errors for 'weird' tasks (#3646) 2024-10-22 15:15:51 -04:00
info.test.py Restore support for task info journal (#3671) 2024-11-06 07:39:39 -05:00
lexer_test.cpp [pre-commit.ci] pre-commit autoupdate (#3822) 2025-03-17 19:50:44 -04:00
limit.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
list.all.projects.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
log.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
logo.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
make_tc_task.cpp Declare in corresponding header files and dissolve main.h (#3796) 2025-03-01 14:47:42 -05:00
math.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
modify.test.py Check if end date is being set to a pending task (#3622) 2024-09-13 12:16:20 -04:00
nag.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
news.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
obfuscate.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
oldest.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
operators.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
overdue.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
partial.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
prepend.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
pri_sort.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
project.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
purge.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
quotes.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
rc.override.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
read-only.test.py Open Replica read-only when possible (#3776) 2025-02-14 10:25:19 +01:00
README.md Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
recurrence.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
reports.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
search.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
sequence.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
shell.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
show.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
sorting.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
special.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
start.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
stats.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
substitute.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
sugar.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
summary.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
t_test.cpp Declare in corresponding header files and dissolve main.h (#3796) 2025-03-01 14:47:42 -05:00
tag.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
taskrc.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
tc_cpp_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
tdb2_test.cpp Declare in corresponding header files and dissolve main.h (#3796) 2025-03-01 14:47:42 -05:00
template.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
test.cpp add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
test.h add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
timesheet.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
tw-20.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
tw-262.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
tw-295.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
tw-1379.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
tw-1637.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-1643.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-1688.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-1715.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-1718.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-1804.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-1837.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
tw-1883.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-1895.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-1938.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-1999.test.py Restore support for task info journal (#3671) 2024-11-06 07:39:39 -05:00
tw-2124.test.sh Actually run shell tests (#3583) 2024-08-07 00:44:12 +00:00
tw-2189.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-2257.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-2386.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-2392.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-2429.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-2451.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-2514.test.sh Restore support for task info journal (#3671) 2024-11-06 07:39:39 -05:00
tw-2530.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-2550.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-2575.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
tw-2581.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-3102.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-3109.test.sh Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
tw-3527.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
tw_2689_test.cpp Declare in corresponding header files and dissolve main.h (#3796) 2025-03-01 14:47:42 -05:00
uda.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
uda_orphan.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
uda_report.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
uda_sort.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
undo.test.py Better undo output (and remove undo.style config) (#3672) 2024-11-07 14:56:34 -05:00
unicode.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
unique.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
unusual_task.test.py Generate valid JSON even with invalid dates (#3801) 2025-03-06 16:59:14 +01:00
upgrade.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
urgency.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
urgency_inherit.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
util_test.cpp Declare in corresponding header files and dissolve main.h (#3796) 2025-03-01 14:47:42 -05:00
uuid.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
variant_add_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_and_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_cast_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_divide_test.cpp Allow dur/dur division (#3812) 2025-03-12 16:48:49 -04:00
variant_equal_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_exp_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_gt_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_gte_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_inequal_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_lt_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_lte_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_match_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_math_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_modulo_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_multiply_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_nomatch_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_not_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_or_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_partial_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_subtract_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
variant_xor_test.cpp Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
verbose.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
version.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
view_test.cpp Declare in corresponding header files and dissolve main.h (#3796) 2025-03-01 14:47:42 -05:00
wait.test.py add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00

Running Tests

Do this to run all tests:

cmake --build build --target test_runner --target task_executable
ctest --test-dir build

All tests produce TAP (Test Anything Protocol) output. In order to run the tests in parallel add the --parallel <# of threads> or shortly -j <# of threads> option to ctest. Depending on your IDE, all tests might also be available under the All CTest target. Keep in mind that the tests are not automatically rebuild if a source file is changes, it requires a manual rebuild.

Please also have a look at development.md for more information on how to run tests as well as some information about ctest.

Architecture

There are three varieties of tests:

  • C++ unit tests that test low-level object interfaces. These are typically very fast tests, and are exhaustive in nature.

  • Python unit tests that are at the highest level, exercising the command line, hooks and syncing. There is an example, 'template.test.py', that shows how to perform various high level tests.

  • Bash unit tests, one test per file, using the bash_tap_tw.sh script. These tests are small, quick tests, not intended to be permanent.

All tests are named with the pattern '.test.py', '.test.sh', or '*.test.cpp', and any other forms are not run by the test harness. In the case of Python tests one can still run them manually by launching them with 'python testname.test.py' or simply './testname.test.py'.

If a test is failing and can not be fixed, it can be marked as WILL_FAIL in the CMakeLists.txt file. See the WILL_FAIL documentation for more information. However, please keep in mind that such tests should be fixed as soon as possible as well as proper documentation should be added to the issue tracker.

It also allows us to keep tests submitted for bugs that are not scheduled to be fixed in the upcoming release, and we don't want the failing tests to prevent us from seeing 100% pass rate for the bugs we have fixed.

Goals

The test suite is evolving, and becoming a better tool for determining whether code is ready for release. There are goals that shape these changes, and they are:

  • Increase test coverage by testing more features, more thoroughly. The test coverage level is (as of 2016-07-24) at 86.5%.

  • Write fewer bug regression tests. Over time, bug regression tests are less useful than feature tests, and more likely to contain overlapping coverage.

  • Eliminate obsolete tests, which are tests that have overlapping coverage. There is simply no point in testing a feature twice, in the same manner.

What Makes a Good Test

A good test ensures that a feature is functioning as expected, and contains both positive and negative aspects, or in other words looks for expected behavior as well as looking for the absence of unexpected behavior.

Conventions for writing a test

If you wish to contribute tests, please consider the following guidelines:

  • For a new bug, an accompanying test is very helpful. Suppose you write up a bug, named TW-1234, then the test would be a script named tw-1234.t, and based on the template.t example.

    Over time, we will migrate the tests in tw-1234.t into a feature-specific test script, such as filter.t, export.t, whichever is appropriate.

  • Tests created after bugs or feature requests should (ideally) have an entry on https://github.com/GothenburgBitFactory/taskwarrior/issues and should include the issue ID in a docstring or comment.

  • Class and method names should be descriptive of what they are testing. Example: TestFilterOnReports

  • Docstrings on Python tests are mandatory. The first line is used as title of the test. Include the issue ID - there are many examples of this.

  • Extra information and details should go into multi-line docstrings or comments.

  • Python tests for bugs or features not yet fixed/implemented should be decorated with: @unittest.skip("WaitingFor TW-xxxx"). We would rather have a live test that is skipped, than no test.

How to Submit a Test Change/Addition

Mail it to support@gothenburgbitfactory.org, or attach it to an open bug.

Wisdom

Here are some guildelines that may help:

  • If there are any lexer.t tests failing, then ignore all the others and fix these first. They are fundamental and affect everything else. One Lexer failure can cause 30 symptomatic failures, and addressing any of those is wrong.

  • If any of the C++ tests fail, fix them next, for the same reason as above.

  • If you are about to fix a bug, and no tests are failing, add tests that fail in a script named tw-XXXX.t. Later, someone will incorporate that test script into higher-level feature tests.

  • If the command line parser is not working, start by blaming the Lexer.

  • While the lowest level (C++) tests should be exhaustive, higher level tests should not do the same by iterating over the entire problem space. It is a waste of time.

  • If you find that you are combining two features into one test, you are probably doing it wrong.

  • If you add a feature, then add a test to prove it works, also add a test to prove it doesn't simultaneously generate errors. Furthermore test that with the feature disabled, or command line arguments missing, appropriate errors are reported.

TODO

For anyone looking for test-related tasks to take on, here are some suggestions:

  • Find and eliminate duplicate tests.

  • Using .startswith: with rc.regex:off still uses regex.

  • Crazy dateformat values are not tested.

  • Invalid UTF8 is not tested.

  • All the attribute modifiers need to be tested, only a few are.

  • Aliases are not well tested, and fragile.