blob: 3cc0c54edfe4ade081ffc02f36d75c362a7cd0d3 [file] [log] [blame]
# Copyright 2016 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Unittests for virtualenv_wrapper"""
import os
import sys
from chromite.lib import cros_test_lib
from chromite.scripts import virtualenv_wrapper
_MODULE_DIR = os.path.dirname(os.path.realpath(__file__))
class VirtualEnvTest(cros_test_lib.TestCase):
"""Test that we are running in a virtualenv."""
# pylint: disable=protected-access
def testModuleIsFromVenv(self):
"""Test that we import |six| from the virtualenv."""
# Note: The |six| module is chosen somewhat arbitrarily, but it happens
# to be provided inside the chromite virtualenv.
six = __import__("six")
req_path = os.path.dirname(os.path.realpath(six.__file__))
self.assertIn("/.cache/cros_venv/", req_path)
def testInsideVenv(self):
"""Test that we are inside a virtualenv."""
# pylint: disable=protected-access
self.assertTrue(
(
hasattr(sys, "real_prefix")
or (
hasattr(sys, "base_prefix")
and sys.base_prefix != sys.prefix
)
)
)
def testVenvMarkers(self):
"""Test that the virtualenv marker functions work."""
# pylint: disable=protected-access
test_env = {"PATH": "/bin:/usr/bin"}
self.assertFalse(virtualenv_wrapper._IsInsideVenv(test_env))
new_test_env = virtualenv_wrapper._CreateVenvEnvironment(test_env)
self.assertTrue(virtualenv_wrapper._IsInsideVenv(new_test_env))
def testCreateVenvEnvironmentNoSideEffect(self):
"""Test that _CreateVenvEnvironment doesn't modify input dict."""
# pylint: disable=protected-access
test_env = {"PATH": "/bin:/usr/bin"}
original = test_env.copy()
virtualenv_wrapper._CreateVenvEnvironment(test_env)
self.assertEqual(test_env, original)