Commit Graph

153 Commits

Author SHA1 Message Date
Matt Wozniski
07b50a07e0 Allow coloring contexts and projects independently
Because @contexts and +projects are metadata as much as they are text,
it can be nice to highlight them independently of the coloring of the line
that contains them.  This is tough to do correctly in
a TODOTXT_FINAL_FILTER because doing it at that layer requires
re-parsing the text of the line to find the appropriate PRI_$x color to
reset to after coloring the word, or trying to reverse engineer where
the color codes inserted by todo.sh end and the user's text begins (and
vice versa).

Closes #119
2013-12-05 23:23:25 -08:00
Gina Trapani
745f5d5179 Merge pull request #111 from mgarrido/global_opts
Allow the use of a global config file
2013-12-05 23:06:37 -08:00
Ingo Karkat
2faf072cf7 ENH: Allow configuring null data files and then don't create them.
Request from exatto (http://article.gmane.org/gmane.comp.diary.todotxt/4699), who doesn't want to use done.txt and report.txt.

Also consider character devices (-c; /dev/null is one) in the file existence checks so that no empty file is then created.
2013-11-05 13:02:40 +01:00
Manuel J. Garrido
ce365df67c Allow the use of global config file
If not found elsewhere, look for the config file in /etc/todo/config.
`make install` installs a global config file, setting TODO_DIR=~/.todo.
todo.sh creates TODO_DIR if it doesn't exist.
2013-06-24 13:39:50 +02:00
Jon Knapp
629a301d43 Added test case for GREP_OPTIONS 2013-02-02 16:15:29 -08:00
Ingo Karkat
8ff79102a5 ENH: Handle -h, shorthelp and help when a Fatal Error happens.
The user may need the help to solve any fatal error that appears while todo.sh isn't properly set up. As the help actions do not depend on any setting that the fatal errors check, we can still invoke them.

Factor out dieWithHelp() and use that for printing the fatal errors.
2012-08-30 13:16:02 +02:00
Ingo Karkat
8d8ef812a2 FIX: Short help -h inaccessible when custom config is used.
When short-circuiting the option parsing, the OPTIND must be adapted, too, so that the getopts processing loop is quit correctly.
2012-08-30 12:38:54 +02:00
Ingo Karkat
50aea1e4f0 Tests: Add basic coverage of -h / shorthelp.
For a start, this is basically an adapted version of tests/t2100-help.sh.
2012-08-30 12:20:09 +02:00
Gina Trapani
da683366f4 Merge pull request #89 from inkarkat/individual-help-enhancement
Individual help enhancement
2012-05-12 09:59:44 -07:00
Gina Trapani
7b5c983bb6 Merge pull request #83 from inkarkat/testlib-parse-enh
Testlib parse enhancements
2012-05-11 09:58:23 -07:00
Gina Trapani
f67f630466 Merge pull request #82 from inkarkat/listcon-filters
Accept filters for listcon, too.
2012-05-11 09:41:56 -07:00
Gina Trapani
fe27b10765 Merge pull request #84 from inkarkat/config-backtick-check
Config backtick check
2012-05-11 09:23:45 -07:00
Ingo Karkat
c0c93c8c0c FIX: Adapt test for OS X.
POSIX sed doesn't understand the \w atom; use [A-Z] instead; it's also more precise.
2012-05-11 09:05:44 +02:00
Gina Trapani
137140a542 Merge pull request #85 from inkarkat/replace-fixes
FIX: Replacement with priority and date doesn't replace existing date.
2012-05-10 20:55:15 -07:00
Ingo Karkat
38d75afeff BUG: completion of task number didn't remove add date.
Need to make match of preceding priority optional.
Also tighten patterns for priority and done marker by anchoring them to the front, as the leading task number has already been substituted away.
2012-05-08 10:55:00 +02:00
Ingo Karkat
6a3ddad787 FIX: test-lib: Print differences when test_expect_output fails.
When the command-under-test fails with a non-zero exit code, neither the different exit code nor any output differences are printed. Also, there's a lot of duplication between test_expect_output and test_expect_code_and_output. So, let's fix both by delegating the first to the latter.
2012-04-27 21:58:07 +02:00
Ingo Karkat
7acb521190 Add action argument for help to todo_completion.
Note that this is not perfect, as it only handles completing a single action after "help", but that should over the most important use case.
2012-04-27 14:29:29 +02:00
Ingo Karkat
97035d3425 ENH: Print usage help for all passed actions.
Extend the support for specific usage help to built-in actions.
2012-04-27 13:37:14 +02:00
Ingo Karkat
99e5e57a75 Refactoring: Extract make_action into actions-test-lib.sh.
This reduces the duplication in the individual test files.
2012-04-27 12:42:10 +02:00
Ingo Karkat
42424d5881 ENH: Print usage help for custom action.
Currently, the only way to get usage help for a custom action is to use "todo.sh help" and scroll / search for the action name. (Or try to call the action without / with invalid parameters to hopefully get a one-line syntax summary.)
This extends the help command to print the usage of optionally passed custom action names.
2012-04-27 11:48:01 +02:00
Ingo Karkat
7ab90476f7 Tests: Add test for ordinary help. 2012-04-27 11:34:46 +02:00
Ingo Karkat
fac5533b96 Tests: Add test for listaddons. 2012-04-27 09:25:00 +02:00
Ingo Karkat
24d0fb003a FIX: Replacement with priority and date doesn't replace existing date. 2012-04-19 14:08:39 +02:00
Ingo Karkat
3b0309d9bc Replace backticks in config with $(...)
This applies e24777fa2c to todo.cfg, too, and adds a verification to the existing test.

Note: Because todo.cfg is preprocessed by test-lib, we use the original config from the working copy, not the copy inside the test fixture.
2012-04-15 10:37:41 +02:00
Ingo Karkat
b21d16878f Tests: Hard-code location of todo.sh.
As todo.sh is placed by test-lib at a fixed place, avoid the lookup through which.
2012-04-15 10:35:17 +02:00
Ingo Karkat
3e82f3ca56 Tests: Extract backtick_check(). 2012-04-15 10:33:51 +02:00
Ingo Karkat
35f9c4276c test-lib: Allow expected output with empty lines.
An empty line is used to delimit test commands in test_todo_session. (This wasn't properly reflected in the usage comment, fixed that, too.) This prevents us from testing commands that include empty lines. (Currently, there is no such output in todo.sh, but custom add-ons may have this.)
Instead of forcing the test to filter out the empty lines, extend the syntax to allow empty lines in the expected output by escaping them with a single backslash. (When redirecting via <<EOF, the backslash itself must be escaped = doubled; better use <<'EOF'.)
2012-04-13 16:54:40 +02:00
Ingo Karkat
661dac0cfb test-lib: Avoid eating leading whitespace in expected output.
Currently, todo.sh produces no indented output, so this hasn't affected tests so far. I found this while testing one of my custom actions with the test-lib.
By unsetting IFS, the read command won't strip off leading and trailing whitespace while parsing the test session definition.
2012-04-13 16:47:04 +02:00
Ingo Karkat
92322e7064 Accept filters for listcon, too.
This has been implemented for listproj already, for consistency in use and implementation, the same should be available for listcon, too.
2012-04-13 10:47:56 +02:00
Ingo Karkat
bc81db2f2b ENH: Better completion for custom add-ons via new listaddons command.
The todo_completion had the problem that it didn't consider the todo.cfg itself for the location of TODO_ACTIONS_DIR, it just tried the default location or a globally exported config value. With the injection of custom configuration now in place, we can actually delegate the listing to todo.sh itself.
The added built-in "listaddons" command is used for that; it may also be helpful for troubleshooting or to find out about available add-ons. (But the help / shorthelp commands offer more information.)

Additionally, completion is now more precise; only executable actions and no subdirs are listed now; this is also covered by the enhanced test.

The last bonus: The custom add-on actions are now only determined when there's actually completion of commands.
2012-02-29 08:53:18 +01:00
Ingo Karkat
6259cdb6da Add test for custom add-on action completion. 2012-02-29 08:53:17 +01:00
Ingo Karkat
f76b6d5210 Add test for todo file completion. 2012-02-29 08:53:17 +01:00
Ingo Karkat
c1ad7f3560 Add more test cases for arguments and options completion. 2012-02-29 08:53:17 +01:00
Ingo Karkat
a777b266ed Add test for task number completion. 2012-02-29 08:53:17 +01:00
Ingo Karkat
ebce735d04 test-lib: Allow completions containing whitespace.
This is necessary to test the completion of task text.
2012-02-29 08:53:17 +01:00
Ingo Karkat
e5a308eb03 test-lib: Also document test_expect_code. 2012-02-29 08:53:16 +01:00
Ingo Karkat
e600a2162b ENH: completion can use different todo.sh locations and configurations.
This was previously not supported; todo_completion always used plain todo.sh from the PATH. Now it's possible to override the used executable (and configuration used through _todo_sh, set from a completion function wrapper.

Cp. http://tech.groups.yahoo.com/group/todotxt/message/4003
2012-02-29 08:53:16 +01:00
Ingo Karkat
3d0a4d0b30 test-lib: Add test_todo_custom_completion variant.
This extension of test_todo_completion additionally takes the completion function to use, so that customized completions for todo.sh aliases can be tested.
2012-02-29 08:53:16 +01:00
Ingo Karkat
c1dcd0ed78 test-lib: Also check completion exit code.
The completion may unexpectedly abort somewhere.

Additionally, reformat the failure messages (don't prepend a "*", this should be reserved to mark the individual test runs) and use "compreply" instead of "output", so that it's already clear from the diff output that the completion is being tested.
2012-02-23 09:14:42 +01:00
Ingo Karkat
c9d1993dc8 test-lib: Avoid empty line in diff when no completion.
There should be a trailing newline when there are completions (to avoid diff complaining about "no trailing newline", but not when there are no completions at all.
2012-02-23 09:14:42 +01:00
Ingo Karkat
451dbdda6b Merge duplicate test files for listproj.
t1260-listprj.sh was accidentally created; the tests should be in t1320-listproj.sh.
2012-02-23 09:14:42 +01:00
Ingo Karkat
060e81aa05 ENH: completion offers projects and contexts from done.txt.
This is useful when there are no open projects/contexts any more, but one wants to re-use an existing name.
2012-02-23 09:14:42 +01:00
Ingo Karkat
296bad334d Add tests for project and context completion. 2012-02-23 09:14:42 +01:00
Ingo Karkat
3b90d09b27 Add testing of todo_completion.
Before adding any more features to todo_completion, I feel like I need test coverage, so this is a first stab at testing the completion results, via a new test function test_todo_completion.
Some basic tests showcase the capabilities.

Note: test-lib.sh now uses arrays, therefore all tests must use /bin/bash, not /bin/sh to avoid errors when sourcing test-lib. For consistency with todo.sh, we should have used Bash everywhere, anyway. Also note that t2000-multiline.sh needs some more quoting to avoid "Bash: ambiguous redirect" errors.
2012-02-23 09:14:41 +01:00
Ingo Karkat
46afb7f46a ENH: TODOTXT_SOURCEVAR enables different source file for listproj. 2012-02-23 09:14:41 +01:00
Ingo Karkat
9e13dfd290 ENH: TODOTXT_SOURCEVAR enables different source file for listcon.
To be used by todo_completion (to offer candidates from done.txt when there are no matches in todo.txt), and maybe by custom addons.
2012-02-23 09:14:41 +01:00
Gina Trapani
36e018fd86 Merge pull request #74 from inkarkat/listpri-pri-range
ENH: Allow listpri filtering with priority ranges.
2012-02-14 21:58:26 -08:00
Ingo Karkat
dfec12e2a4 ENH: Allow listpri filtering with priority ranges.
So far, the listpri action only supports a single priority. Allowing priority ranges (e.g. todo.sh listpri A-C @work) is a simple but useful enhancement.

Note: The syntax extension only clashes with the [TERM] filtering in a few corner cases, and this can be worked around (e.g. "todo.sh listpri A-Z A-Z" lists all prioritized tasks containing the text A-Z).
2012-01-26 13:17:31 +01:00
Ingo Karkat
c31716af47 test-report: Use color highlighting as in test-lib.
The test aggregate results are easy to miss when running the entire test suite via "make test", as the status of the last test case is highlighted, but the aggregate results appear in an unformatted, uncolored block of text.
Copy the say_color() function from test-lib.sh. (Sorry for the duplication, I found no simple way to import or share just this piece of functionality without adding much complexity.)
Successes, errors and broken summaries will now be highlighted in the appropriate colors (unless --no-color is given or output is not to a terminal), but only if the number is more than zero.
2012-01-26 12:15:26 +01:00
Ingo Karkat
ebe9fb868b test-lib: Show full todo.sh output in verbose mode.
Now that differences in the output (and exit code) are already printed by default, we can make the verbose mode actually "verbose" by including all todo.sh output generated during the test run. This may help in reviewing the tests and for troubleshooting.
By moving the redirection to the output file to test_run_(), all testing-related embellishments have been removed from the command under test itself, resulting in much cleaner test messages.
Additionally, also capture stderr in output. todo.sh itself currently prints everything to stdout (but the die() output probably belongs to stderr), so as of now, that has no consequences, but seems to be more consistent and future-proof.
2012-01-26 09:54:30 +01:00