* Changes AnsibleConstructor so that only unicode strings are returned
(no str type)
* Tracks line, column numbers for strings
* Adds unittests for AnsibleLoader (generic for all the yaml parsing)
The rest of ansible uses validate_certs, so make that the main
documented parameter. However, leave verify as an alias since that's the
passthrough value to the underlying libraries.
* Do backslash escape parsing in parse_kv() [was being done in the copy
module purely for newlines in the copy module's content param before]
* Make parse_kv always return unicode
* Add bandaid to transform args to unicode until we can fix things
calling parse_kv to always send it unicode.
* Make split_args deal with unicode internally. Warning, no bandaid for
things calling split_args without giving it unicode (shouldn't matter
as dealt with str internally before)
* Fix copy and unarchive action plugins to not use setdefaultencoding
* Remove escaping from copy (it was broken and made content into latin-1
sometimes). escaping is now in parse_kv.
* Expect that content is now a unicode string so transform to bytes just
before writing to the file.
* Add initial unittests for split_args and parse_kv. 4 failing
tests.because split_args is injecting extra newlines.
Current code has sys.exit(1) at the end of the codepath for the
options --help, --list and --host. These are not error conditions
so should be returning 0 for success, not 1 which is EPERM i.e.
"Operation not permitted". Newer Vagrant versions examine the exit
codes from subprocesses and interpret this as a failure.
When the error reason is "Forbidden", the code throws a Python exception
rather than simply outputting the exception reason.
It's not nice to throw a Python exception when all the info to display
a proper message is available.