Best Python code snippet using autotest_python
external_packages.py
Source:external_packages.py
...155 return self._install_from_egg(install_dir, egg_path)156 def _build_and_install_current_dir_noegg(self, install_dir):157 if not self._build_using_setup_py():158 return False159 return self._install_using_setup_py_and_rsync(install_dir)160 def _build_and_install_from_package(self, install_dir):161 """162 This method may be used as a _build_and_install() implementation163 for subclasses if they implement _build_and_install_current_dir().164 Extracts the .tar.gz file, chdirs into the extracted directory165 (which is assumed to match the tar filename) and calls166 _build_and_isntall_current_dir from there.167 Afterwards the build (regardless of failure) extracted .tar.gz168 directory is cleaned up.169 :return: True on success, False otherwise.170 :raise OSError If the expected extraction directory does not exist.171 """172 self._extract_compressed_package()173 if self.verified_package.endswith('.tar.gz'):174 extension = '.tar.gz'175 elif self.verified_package.endswith('.tar.bz2'):176 extension = '.tar.bz2'177 elif self.verified_package.endswith('.zip'):178 extension = '.zip'179 else:180 raise Error('Unexpected package file extension on %s' %181 self.verified_package)182 os.chdir(os.path.dirname(self.verified_package))183 os.chdir(self.local_filename[:-len(extension)])184 extracted_dir = os.getcwd()185 try:186 return self._build_and_install_current_dir(install_dir)187 finally:188 os.chdir(os.path.join(extracted_dir, '..'))189 shutil.rmtree(extracted_dir)190 def _extract_compressed_package(self):191 """Extract the fetched compressed .tar or .zip within its directory."""192 if not self.verified_package:193 raise Error('Package must have been fetched first.')194 os.chdir(os.path.dirname(self.verified_package))195 if self.verified_package.endswith('gz'):196 status = system("tar -xzf '%s'" % self.verified_package)197 elif self.verified_package.endswith('bz2'):198 status = system("tar -xjf '%s'" % self.verified_package)199 elif self.verified_package.endswith('zip'):200 status = system("unzip '%s'" % self.verified_package)201 else:202 raise Error('Unknown compression suffix on %s.' %203 self.verified_package)204 if status:205 raise Error('tar failed with %s' % (status,))206 def _build_using_setup_py(self, setup_py='setup.py'):207 """208 Assuming the cwd is the extracted python package, execute a simple209 python setup.py build.210 :param setup_py - The name of the setup.py file to execute.211 :return: True on success, False otherwise.212 """213 if not os.path.exists(setup_py):214 raise Error('%s does not exist in %s' % (setup_py, os.getcwd()))215 status = system("'%s' %s build" % (sys.executable, setup_py))216 if status:217 logging.error('%s build failed.' % self.name)218 return False219 return True220 def _build_egg_using_setup_py(self, setup_py='setup.py'):221 """222 Assuming the cwd is the extracted python package, execute a simple223 python setup.py bdist_egg.224 :param setup_py - The name of the setup.py file to execute.225 :return: The relative path to the resulting egg file or '' on failure.226 """227 if not os.path.exists(setup_py):228 raise Error('%s does not exist in %s' % (setup_py, os.getcwd()))229 egg_subdir = 'dist'230 if os.path.isdir(egg_subdir):231 shutil.rmtree(egg_subdir)232 status = system("'%s' %s bdist_egg" % (sys.executable, setup_py))233 if status:234 logging.error('bdist_egg of setuptools failed.')235 return ''236 # I've never seen a bdist_egg lay multiple .egg files.237 for filename in os.listdir(egg_subdir):238 if filename.endswith('.egg'):239 return os.path.join(egg_subdir, filename)240 def _install_from_egg(self, install_dir, egg_path):241 """242 Install a module from an egg file by unzipping the necessary parts243 into install_dir.244 :param install_dir - The installation directory.245 :param egg_path - The pathname of the egg file.246 """247 status = system("unzip -q -o -d '%s' '%s'" % (install_dir, egg_path))248 if status:249 logging.error('unzip of %s failed', egg_path)250 return False251 egg_info = os.path.join(install_dir, 'EGG-INFO')252 if os.path.isdir(egg_info):253 shutil.rmtree(egg_info)254 return True255 def _get_temp_dir(self):256 return tempfile.mkdtemp(dir='/var/tmp')257 def _site_packages_path(self, temp_dir):258 # This makes assumptions about what python setup.py install259 # does when given a prefix. Is this always correct?260 python_xy = 'python%s' % sys.version[:3]261 return os.path.join(temp_dir, 'lib', python_xy, 'site-packages')262 def _install_using_setup_py_and_rsync(self, install_dir,263 setup_py='setup.py',264 temp_dir=None):265 """266 Assuming the cwd is the extracted python package, execute a simple:267 python setup.py install --prefix=BLA268 BLA will be a temporary directory that everything installed will269 be picked out of and rsynced to the appropriate place under270 install_dir afterwards.271 Afterwards, it deconstructs the extra lib/pythonX.Y/site-packages/272 directory tree that setuptools created and moves all installed273 site-packages directly up into install_dir itself.274 :param install_dir the directory for the install to happen under.275 :param setup_py - The name of the setup.py file to execute.276 :return: True on success, False otherwise....
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!