This is work in progress that needs some feedback
os.system seems to require a str parameter, unicode is converted using ascii.
How should we handle this in a python3 compatible way? Should we extract system_raw to utils/py3compat.py?
Quick fix for os.system requiring str parameter
I expect Python 3 os.system will want unicode. If we know we're always starting with unicode, put it through py3compat.unicode_to_str (which encodes on Python 2 only). If the input can be either unicode or bytes on Python 2, use py3compat.cast_bytes_py2. There's a list of what's in py3compat here: http://wiki.ipython.org/Py3compat_module
Use unicode_to_str from py3compat
Looks sensible to me - thanks, Jörgen. I guess there isn't a good way to test this, because it would rely on the existence of a particular network share.
I'll merge this soon, unless anyone objects or beats me to it.
We should definitely add a unittest that just makes a simple !føø call, to protect from future failures to tackle unicode. The UNC share is a separate issue that is impossible to test, and we just have to be diligent (which I apparently failed to do, because while I did test on UNC shares, I do not have any non-ascii unicode shares).
Also note that this bug affects all platforms, so both calls to os.system should be protected.
Add simple test for non-ascii characters in system_raw call.
I have also added the conversion to the non-windows code-path
Thanks. Merged, with a tiny fix for Python 3.