import os
from tests.test_pip import here, reset_env, run_pip


def test_install_package_that_emits_unicode():
    """
    Install a package with a setup.py that emits UTF-8 output and then fails.
    This works fine in Python 2, but fails in Python 3 with:

    Traceback (most recent call last):
      ...
      File "/Users/marc/python/virtualenvs/py3.1-phpserialize/lib/python3.2/site-packages/pip-1.0.2-py3.2.egg/pip/__init__.py", line 230, in call_subprocess
        line = console_to_str(stdout.readline())
      File "/Users/marc/python/virtualenvs/py3.1-phpserialize/lib/python3.2/site-packages/pip-1.0.2-py3.2.egg/pip/backwardcompat.py", line 60, in console_to_str
        return s.decode(console_encoding)
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 17: ordinal not in range(128)

    Refs https://github.com/pypa/pip/issues/326
    """

    env = reset_env()
    to_install = os.path.abspath(os.path.join(here, 'packages', 'BrokenEmitsUTF8'))
    result = run_pip('install', to_install, expect_error=True)
    assert '__main__.FakeError: this package designed to fail on install' in result.stdout
    assert 'UnicodeDecodeError' not in result.stdout

import os
from tests.test_pip import here, reset_env, run_pip


def test_install_package_that_emits_unicode():
    """
    Install a package with a setup.py that emits UTF-8 output and then fails.
    This works fine in Python 2, but fails in Python 3 with:

    Traceback (most recent call last):
      ...
      File "/Users/marc/python/virtualenvs/py3.1-phpserialize/lib/python3.2/site-packages/pip-1.0.2-py3.2.egg/pip/__init__.py", line 230, in call_subprocess
        line = console_to_str(stdout.readline())
      File "/Users/marc/python/virtualenvs/py3.1-phpserialize/lib/python3.2/site-packages/pip-1.0.2-py3.2.egg/pip/backwardcompat.py", line 60, in console_to_str
        return s.decode(console_encoding)
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 17: ordinal not in range(128)

    Refs https://github.com/pypa/pip/issues/326
    """

    env = reset_env()
    to_install = os.path.abspath(os.path.join(here, 'packages', 'BrokenEmitsUTF8'))
    result = run_pip('install', to_install, expect_error=True, expect_temp=True, quiet=True)
    assert '__main__.FakeError: this package designed to fail on install' in result.stdout
    assert 'UnicodeDecodeError' not in result.stdout

Fix unicode tests to work with new temp file assertions
Fix unicode tests to work with new temp file assertions

  import os
  from tests.test_pip import here, reset_env, run_pip
  
  
  def test_install_package_that_emits_unicode():
      """
      Install a package with a setup.py that emits UTF-8 output and then fails.
      This works fine in Python 2, but fails in Python 3 with:
  
      Traceback (most recent call last):
        ...
        File "/Users/marc/python/virtualenvs/py3.1-phpserialize/lib/python3.2/site-packages/pip-1.0.2-py3.2.egg/pip/__init__.py", line 230, in call_subprocess
          line = console_to_str(stdout.readline())
        File "/Users/marc/python/virtualenvs/py3.1-phpserialize/lib/python3.2/site-packages/pip-1.0.2-py3.2.egg/pip/backwardcompat.py", line 60, in console_to_str
          return s.decode(console_encoding)
      UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 17: ordinal not in range(128)
  
      Refs https://github.com/pypa/pip/issues/326
      """
  
      env = reset_env()
      to_install = os.path.abspath(os.path.join(here, 'packages', 'BrokenEmitsUTF8'))
-     result = run_pip('install', to_install, expect_error=True)
+     result = run_pip('install', to_install, expect_error=True, expect_temp=True, quiet=True)
      assert '__main__.FakeError: this package designed to fail on install' in result.stdout
      assert 'UnicodeDecodeError' not in result.stdout
  
Fix unicode tests to work with new temp file assertions
## Code Before:
import os
from tests.test_pip import here, reset_env, run_pip


def test_install_package_that_emits_unicode():
    """
    Install a package with a setup.py that emits UTF-8 output and then fails.
    This works fine in Python 2, but fails in Python 3 with:

    Traceback (most recent call last):
      ...
      File "/Users/marc/python/virtualenvs/py3.1-phpserialize/lib/python3.2/site-packages/pip-1.0.2-py3.2.egg/pip/__init__.py", line 230, in call_subprocess
        line = console_to_str(stdout.readline())
      File "/Users/marc/python/virtualenvs/py3.1-phpserialize/lib/python3.2/site-packages/pip-1.0.2-py3.2.egg/pip/backwardcompat.py", line 60, in console_to_str
        return s.decode(console_encoding)
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 17: ordinal not in range(128)

    Refs https://github.com/pypa/pip/issues/326
    """

    env = reset_env()
    to_install = os.path.abspath(os.path.join(here, 'packages', 'BrokenEmitsUTF8'))
    result = run_pip('install', to_install, expect_error=True)
    assert '__main__.FakeError: this package designed to fail on install' in result.stdout
    assert 'UnicodeDecodeError' not in result.stdout

## Instruction:
Fix unicode tests to work with new temp file assertions
## Code After:
import os
from tests.test_pip import here, reset_env, run_pip


def test_install_package_that_emits_unicode():
    """
    Install a package with a setup.py that emits UTF-8 output and then fails.
    This works fine in Python 2, but fails in Python 3 with:

    Traceback (most recent call last):
      ...
      File "/Users/marc/python/virtualenvs/py3.1-phpserialize/lib/python3.2/site-packages/pip-1.0.2-py3.2.egg/pip/__init__.py", line 230, in call_subprocess
        line = console_to_str(stdout.readline())
      File "/Users/marc/python/virtualenvs/py3.1-phpserialize/lib/python3.2/site-packages/pip-1.0.2-py3.2.egg/pip/backwardcompat.py", line 60, in console_to_str
        return s.decode(console_encoding)
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 17: ordinal not in range(128)

    Refs https://github.com/pypa/pip/issues/326
    """

    env = reset_env()
    to_install = os.path.abspath(os.path.join(here, 'packages', 'BrokenEmitsUTF8'))
    result = run_pip('install', to_install, expect_error=True, expect_temp=True, quiet=True)
    assert '__main__.FakeError: this package designed to fail on install' in result.stdout
    assert 'UnicodeDecodeError' not in result.stdout
