blob: 64aded6eb7e5c13cc4e14f932b3d026cc02b9cb3 [file] [log] [blame]
Mike Frysingere58c0e22017-10-04 15:43:30 -04001# -*- coding: utf-8 -*-
Aviv Keshet39853bd2016-09-22 15:12:05 -07002# Copyright 2016 The Chromium OS Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""Unittests for virtualenv_wrapper"""
7
8from __future__ import print_function
9
10import os
Aviv Keshet39853bd2016-09-22 15:12:05 -070011
12from chromite.lib import cros_test_lib
Allen Li9f03f5b2016-12-13 15:23:52 -080013from chromite.scripts import virtualenv_wrapper
Aviv Keshet39853bd2016-09-22 15:12:05 -070014
Allen Li465a0d62016-11-30 14:55:08 -080015_MODULE_DIR = os.path.dirname(os.path.realpath(__file__))
Allen Li465a0d62016-11-30 14:55:08 -080016
17
Aviv Keshet39853bd2016-09-22 15:12:05 -070018class VirtualEnvTest(cros_test_lib.TestCase):
19 """Test that we are running in a virtualenv."""
20
Allen Li8f0e8452016-12-16 15:33:12 -080021 # pylint: disable=protected-access
22
Allen Li465a0d62016-11-30 14:55:08 -080023
Aviv Keshet39853bd2016-09-22 15:12:05 -070024 def testModuleIsFromVenv(self):
Allen Li465a0d62016-11-30 14:55:08 -080025 """Test that we import |six| from the virtualenv."""
Aviv Keshet39853bd2016-09-22 15:12:05 -070026 # Note: The |six| module is chosen somewhat arbitrarily, but it happens to
27 # be provided inside the chromite virtualenv.
Allen Li465a0d62016-11-30 14:55:08 -080028 six = __import__('six')
Aviv Keshet39853bd2016-09-22 15:12:05 -070029 req_path = os.path.dirname(os.path.realpath(six.__file__))
Allen Li68f42e22017-03-27 17:08:59 -070030 self.assertIn('/.cache/cros_venv/', req_path)
Allen Li465a0d62016-11-30 14:55:08 -080031
32
33 def testInsideVenv(self):
34 """Test that we are inside a virtualenv."""
Allen Li9f03f5b2016-12-13 15:23:52 -080035 # pylint: disable=protected-access
36 self.assertTrue(virtualenv_wrapper._IsInsideVenv(os.environ))
37
38
39 def testVenvMarkers(self):
40 """Test that the virtualenv marker functions work."""
41 # pylint: disable=protected-access
42 test_env = {'PATH': '/bin:/usr/bin'}
43 self.assertFalse(virtualenv_wrapper._IsInsideVenv(test_env))
44 new_test_env = virtualenv_wrapper._CreateVenvEnvironment(test_env)
45 self.assertTrue(virtualenv_wrapper._IsInsideVenv(new_test_env))
46
47
48 def testCreateVenvEnvironmentNoSideEffect(self):
49 """Test that _CreateVenvEnvironment doesn't modify input dict."""
50 # pylint: disable=protected-access
51 test_env = {'PATH': '/bin:/usr/bin'}
52 original = test_env.copy()
53 virtualenv_wrapper._CreateVenvEnvironment(test_env)
54 self.assertEqual(test_env, original)