def test_run_command_with_unicode(self): """Validate that it is safe to pass unicode() objects to Executive.run* methods, and they will return unicode() objects by default unless decode_output=False""" unicode_tor_input = u"WebKit \u2661 Tor Arne Vestb\u00F8!" if sys.platform == 'win32': encoding = 'mbcs' else: encoding = 'utf-8' encoded_tor = unicode_tor_input.encode(encoding) # On Windows, we expect the unicode->mbcs->unicode roundtrip to be # lossy. On other platforms, we expect a lossless roundtrip. if sys.platform == 'win32': unicode_tor_output = encoded_tor.decode(encoding) else: unicode_tor_output = unicode_tor_input executive = Executive() output = executive.run_command(cat.command_arguments(), input=unicode_tor_input) self.assertEquals(output, unicode_tor_output) output = executive.run_command( echo.command_arguments("-n", unicode_tor_input)) self.assertEquals(output, unicode_tor_output) output = executive.run_command(echo.command_arguments( "-n", unicode_tor_input), decode_output=False) self.assertEquals(output, encoded_tor) # Make sure that str() input also works. output = executive.run_command(cat.command_arguments(), input=encoded_tor, decode_output=False) self.assertEquals(output, encoded_tor) # FIXME: We should only have one run* method to test output = executive.run_and_throw_if_fail(echo.command_arguments( "-n", unicode_tor_input), quiet=True) self.assertEquals(output, unicode_tor_output) output = executive.run_and_throw_if_fail(echo.command_arguments( "-n", unicode_tor_input), quiet=True, decode_output=False) self.assertEquals(output, encoded_tor)
def test_run_command_with_unicode(self): """Validate that it is safe to pass unicode() objects to Executive.run* methods, and they will return unicode() objects by default unless decode_output=False""" unicode_tor_input = u"WebKit \u2661 Tor Arne Vestb\u00F8!" if sys.platform == "win32": encoding = "mbcs" else: encoding = "utf-8" encoded_tor = unicode_tor_input.encode(encoding) # On Windows, we expect the unicode->mbcs->unicode roundtrip to be # lossy. On other platforms, we expect a lossless roundtrip. if sys.platform == "win32": unicode_tor_output = encoded_tor.decode(encoding) else: unicode_tor_output = unicode_tor_input executive = Executive() output = executive.run_command(cat.command_arguments(), input=unicode_tor_input) self.assertEquals(output, unicode_tor_output) output = executive.run_command(echo.command_arguments("-n", unicode_tor_input)) self.assertEquals(output, unicode_tor_output) output = executive.run_command(echo.command_arguments("-n", unicode_tor_input), decode_output=False) self.assertEquals(output, encoded_tor) # Make sure that str() input also works. output = executive.run_command(cat.command_arguments(), input=encoded_tor, decode_output=False) self.assertEquals(output, encoded_tor) # FIXME: We should only have one run* method to test output = executive.run_and_throw_if_fail(echo.command_arguments("-n", unicode_tor_input), quiet=True) self.assertEquals(output, unicode_tor_output) output = executive.run_and_throw_if_fail( echo.command_arguments("-n", unicode_tor_input), quiet=True, decode_output=False ) self.assertEquals(output, encoded_tor)
def test_as_command(self): input = 'foo bar baz\n' output = executive.Executive().run_command(cat.command_arguments(), input=input) self.assertEqual(input, output)