Codebase list python-procrunner / d65995e tests / test_procrunner_system.py
d65995e

Tree @d65995e (Download .tar.gz)

test_procrunner_system.py @d65995eraw · history · blame

from __future__ import absolute_import, division, print_function

import os
import sys

import procrunner
import pytest

def test_simple_command_invocation():
  if os.name == 'nt':
    command = ['cmd.exe', '/c', 'echo', 'hello']
  else:
    command = ['echo', 'hello']

  result = procrunner.run(command)

  assert result['exitcode'] == 0
  assert result['stdout'] == b'hello' + os.linesep.encode('utf-8')
  assert result['stderr'] == b''

def test_decode_invalid_utf8_input(capsys):
  command = [sys.executable, '-c', 'import sys; sys.stdout.write("".join(chr(x) for x in '
             '(0x74,0x65,0x73,0x74,0xa0,0x73,0x74,0x72,0x69,0x6e,0x67,0x0a)'
             '))']
  result = procrunner.run(command)
  assert result['exitcode'] == 0
  assert not result['stderr']
  assert result['stdout'] == b'test\xa0string\n'
  out, err = capsys.readouterr()
  assert out == u'test\ufffdstring\n'
  assert err == u''

def test_running_wget(tmpdir):
  tmpdir.chdir()
  command = ['wget', 'https://www.google.com', '-O', '-']
  try:
    result = procrunner.run(command)
  except OSError as e:
    if e.errno == 2:
      pytest.skip('wget not available')
    raise
  assert result['exitcode'] == 0
  assert b'http' in result['stderr']
  assert b'google' in result['stdout']