Update to 1.5.0
- New upstream release 1.5.0
- Allow any string-compatible object to be passed to 'Context.cd', enabling
use of (for example) 'pathlib.Path' instances (GH#454, GH#577, GH#583,
GH#607, GH#681)
- Don't silently discard help text for task arguments whose names happen to
contain underscores (GH#409, GH#580, GH#611)
- Don't silently ignore task help specifiers that don't actually map to the
decorated task's arguments (e.g. '@task(help={"foo": "help for foo"})'
wrapping a task without a 'foo' argument) (GH#398, GH#580, GH#611)
- Allow subcollections to act as the default 'tasks' of their parent
collections (via the new 'default' kwarg to
'~invoke.collection.Collection.add_collection'); this means that
non-trivial task trees can specify, e.g. "use my test subcollection's
default task as the global default task" and similar (GH#197)
- Enhanced test coverage in a handful of modules whose coverage was under 90%%
- '~invoke.context.MockContext' now populates its 'NotImplementedError'
exception instances (typically raised when a command is executed that had
no pre-prepared result) with the command string that triggered them; this
makes it much easier to tell what exactly in a test caused the error
- '~invoke.context.MockContext' now accepts a few quality-of-life shortcuts
as keys and values in its 'run'/'sudo' arguments:
- Keys may be compiled regular expression objects, as well as strings, and
will match any calls whose commands match the regex
- Values may be 'True' or 'False' as shorthand for otherwise empty
'~invoke.runners.Result' objects with exit codes of '0' or '1'
respectively
- Values may also be strings, as shorthand for otherwise empty
'~invoke.runners.Result' objects with those strings given as the 'stdout'
argument
- Add a new 'repeat' kwarg to '~invoke.context.MockContext' which, when True
(default: False) causes stored results for its methods to be yielded
repeatedly instead of consumed (GH#441)
- Immutable iterable result values handed to '~invoke.context.MockContext'
would yield errors (due to the use of 'pop()'); the offending logic has
been retooled to be more iterator-focused and now works for tuples and etc.
- Update the testing documentation a bit: cleaned up existing examples and
added new sections for the other updates in the 1.5 release
- Automatically populate the 'command' attribute of '~invoke.runners.Result'
objects returned by '~invoke.context.MockContext' methods, with the command
string triggering that result; previously, users had to do this by hand or
otherwise suffered inaccurate result objects (GH#700)
- Upgrade '~invoke.context.MockContext' to wrap its methods in 'Mock' objects
if the '(unittest.)mock' library is importable; this makes testing
Invoke-using codebases even easier