code: def test_user_site(self):
      # preparing the environment for the test
      self.old_user_base = site.USER_BASE
      self.old_user_site = site.USER_SITE
      self.tmpdir = self.mkdtemp()
      self.user_base = os.path.join(self.tmpdir, "B")
      self.user_site = os.path.join(self.tmpdir, "S")
      site.USER_BASE = self.user_base
      site.USER_SITE = self.user_site
      install_module.USER_BASE = self.user_base
      install_module.USER_SITE = self.user_site
  
      def _expanduser(path):
          return self.tmpdir
  
      self.old_expand = os.path.expanduser
      os.path.expanduser = _expanduser
  
      def cleanup():
          site.USER_BASE = self.old_user_base
          site.USER_SITE = self.old_user_site
          install_module.USER_BASE = self.old_user_base
          install_module.USER_SITE = self.old_user_site
          os.path.expanduser = self.old_expand
  
      self.addCleanup(cleanup)
  
      for key in ("nt_user", "unix_user", "os2_home"):
          self.assertIn(key, INSTALL_SCHEMES)
  
      dist = Distribution({"name": "xx"})
      cmd = install(dist)
  
      # making sure the user option is there
      options = [name for name, short, lable in cmd.user_options]
      self.assertIn("user", options)
  
      # setting a value
      cmd.user = 1
  
      # user base and site shouldn't be created yet
      self.assertFalse(os.path.exists(self.user_base))
      self.assertFalse(os.path.exists(self.user_site))
  
      # let's run finalize
      cmd.ensure_finalized()
  
      # now they should
      self.assertTrue(os.path.exists(self.user_base))
      self.assertTrue(os.path.exists(self.user_site))
  
      self.assertIn("userbase", cmd.config_vars)
      self.assertIn("usersite", cmd.config_vars)
  
imports: import os
  import sys
  import unittest
  import site
  from test.test_support import captured_stdout, run_unittest
  from distutils import sysconfig
  from distutils.command.install import install
  from distutils.command import install
  from distutils.command.build_ext import build_ext
  from distutils.command.install import INSTALL_SCHEMES
  from distutils.core import Distribution
  from distutils.errors import DistutilsOptionError
  from distutils.extension import Extension
  from distutils.tests import support
label_desc: Use image node_id 2 for calling the InstallTestCase obj's underlying member method code with example usage: obj.test_user_site() and returns: self