blob: e4754e06a59516ae8f1d98095c1442a74412b559 [file] [log] [blame]
Aviv Keshet39853bd2016-09-22 15:12:05 -07001# Copyright 2016 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Unittests for virtualenv_wrapper"""
6
Aviv Keshet39853bd2016-09-22 15:12:05 -07007import os
Mike Frysinger1ca14432020-02-16 00:18:56 -05008import sys
Aviv Keshet39853bd2016-09-22 15:12:05 -07009
10from chromite.lib import cros_test_lib
Allen Li9f03f5b2016-12-13 15:23:52 -080011from chromite.scripts import virtualenv_wrapper
Aviv Keshet39853bd2016-09-22 15:12:05 -070012
Mike Frysinger807d8282022-04-28 22:45:17 -040013
Allen Li465a0d62016-11-30 14:55:08 -080014_MODULE_DIR = os.path.dirname(os.path.realpath(__file__))
Allen Li465a0d62016-11-30 14:55:08 -080015
16
Aviv Keshet39853bd2016-09-22 15:12:05 -070017class VirtualEnvTest(cros_test_lib.TestCase):
Alex Klein1699fab2022-09-08 08:46:06 -060018 """Test that we are running in a virtualenv."""
Aviv Keshet39853bd2016-09-22 15:12:05 -070019
Allen Li9f03f5b2016-12-13 15:23:52 -080020 # pylint: disable=protected-access
Allen Li9f03f5b2016-12-13 15:23:52 -080021
Alex Klein1699fab2022-09-08 08:46:06 -060022 def testModuleIsFromVenv(self):
23 """Test that we import |six| from the virtualenv."""
24 # Note: The |six| module is chosen somewhat arbitrarily, but it happens to
25 # be provided inside the chromite virtualenv.
26 six = __import__("six")
27 req_path = os.path.dirname(os.path.realpath(six.__file__))
28 self.assertIn("/.cache/cros_venv/", req_path)
Allen Li9f03f5b2016-12-13 15:23:52 -080029
Alex Klein1699fab2022-09-08 08:46:06 -060030 def testInsideVenv(self):
31 """Test that we are inside a virtualenv."""
32 # pylint: disable=protected-access
33 self.assertTrue(
34 (
35 hasattr(sys, "real_prefix")
36 or (
37 hasattr(sys, "base_prefix")
38 and sys.base_prefix != sys.prefix
39 )
40 )
41 )
Allen Li9f03f5b2016-12-13 15:23:52 -080042
Alex Klein1699fab2022-09-08 08:46:06 -060043 def testVenvMarkers(self):
44 """Test that the virtualenv marker functions work."""
45 # pylint: disable=protected-access
46 test_env = {"PATH": "/bin:/usr/bin"}
47 self.assertFalse(virtualenv_wrapper._IsInsideVenv(test_env))
48 new_test_env = virtualenv_wrapper._CreateVenvEnvironment(test_env)
49 self.assertTrue(virtualenv_wrapper._IsInsideVenv(new_test_env))
50
51 def testCreateVenvEnvironmentNoSideEffect(self):
52 """Test that _CreateVenvEnvironment doesn't modify input dict."""
53 # pylint: disable=protected-access
54 test_env = {"PATH": "/bin:/usr/bin"}
55 original = test_env.copy()
56 virtualenv_wrapper._CreateVenvEnvironment(test_env)
57 self.assertEqual(test_env, original)