text: import sys
  import os
  
  import pytest
  from tox.interpreters import *  # noqa
  from tox.config import get_plugin_manager
  
  
  @pytest.fixture
  def interpreters():
      pm = get_plugin_manager()
      return Interpreters(hook=pm.hook)
  
  
  @pytest.mark.skipif("sys.platform != 'win32'")
  def test_locate_via_py(monkeypatch):
      class PseudoPy:
          def sysexec(self, *args):
              assert args[0] == '-3.2'
              assert args[1] == '-c'
              # Return value needs to actually exist!
              return sys.executable
  
      @staticmethod
      def ret_pseudopy(name):
          assert name == 'py'
          return PseudoPy()
      # Monkeypatch py.path.local.sysfind to return PseudoPy
      monkeypatch.setattr(py.path.local, 'sysfind', ret_pseudopy)
      assert locate_via_py('3', '2') == sys.executable
  
  
  def test_tox_get_python_executable():
      class envconfig:
          basepython = sys.executable
          envname = "pyxx"
      p = tox_get_python_executable(envconfig)
      assert p == py.path.local(sys.executable)
      for ver in [""] + "2.4 2.5 2.6 2.7 3.0 3.1 3.2 3.3".split():
          name = "python%s" % ver
          if sys.platform == "win32":
              pydir = "python%s" % ver.replace(".", "")
              x = py.path.local("c:\%s" % pydir)
              print (x)
              if not x.check():
                  continue
          else:
              if not py.path.local.sysfind(name):
                  continue
          envconfig.basepython = name
          p = tox_get_python_executable(envconfig)
          assert p
          popen = py.std.subprocess.Popen([str(p), '-V'],
                                          stderr=py.std.subprocess.PIPE)
          stdout, stderr = popen.communicate()
          assert ver in py.builtin._totext(stderr, "ascii")
  
  
  def test_find_executable_extra(monkeypatch):
      @staticmethod
      def sysfind(x):
          return "hello"
      monkeypatch.setattr(py.path.local, "sysfind", sysfind)
  
      class envconfig:
          basepython = "1lk23j"
          envname = "pyxx"
  
      t = tox_get_python_executable(envconfig)
      assert t == "hello"
  
  
  def test_run_and_get_interpreter_info():
      name = os.path.basename(sys.executable)
      info = run_and_get_interpreter_info(name, sys.executable)
      assert info.version_info == tuple(sys.version_info)
      assert info.name == name
      assert info.executable == sys.executable
  
  
  class TestInterpreters:
  
      def test_get_executable(self, interpreters):
          class envconfig:
              basepython = sys.executable
              envname = "pyxx"
  
          x = interpreters.get_executable(envconfig)
          assert x == sys.executable
          info = interpreters.get_info(envconfig)
          assert info.version_info == tuple(sys.version_info)
          assert info.executable == sys.executable
          assert info.runnable
  
      def test_get_executable_no_exist(self, interpreters):
          class envconfig:
              basepython = "1lkj23"
              envname = "pyxx"
          assert not interpreters.get_executable(envconfig)
          info = interpreters.get_info(envconfig)
          assert not info.version_info
          assert info.name == "1lkj23"
          assert not info.executable
          assert not info.runnable
  
      def test_get_sitepackagesdir_error(self, interpreters):
          class envconfig:
              basepython = sys.executable
              envname = "123"
          info = interpreters.get_info(envconfig)
          s = interpreters.get_sitepackagesdir(info, "")
          assert s
  