Merge pull request #56418 from Ch3LL/egg_version

Ensure version.py included before we install
This commit is contained in:
Daniel Wozniak 2020-03-23 11:27:44 -07:00 committed by GitHub
commit 74575a6993
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 76 additions and 0 deletions

View file

@ -745,6 +745,12 @@ class Install(install):
self.distribution.salt_download_windows_dlls = True
self.run_command('download-windows-dlls')
self.distribution.salt_download_windows_dlls = None
# need to ensure _version.py is created in build dir before install
if not os.path.exists(os.path.join(self.build_lib)):
if not self.skip_build:
self.run_command('build')
else:
self.run_command('write_salt_version')
# Run install.run
install.run(self)

View file

@ -0,0 +1,69 @@
# -*- coding: utf-8 -*-
'''
tests.integration.setup.test_egg
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'''
# Import python libs
from __future__ import absolute_import, print_function, unicode_literals
import os
import re
import shutil
# Import Salt Testing libs
from tests.support.runtests import RUNTIME_VARS
from tests.support.unit import skipIf
from tests.support.helpers import VirtualEnv, destructiveTest
from tests.support.case import ModuleCase
# Import salt libs
import salt.utils.path
import salt.utils.platform
from salt.modules.virtualenv_mod import KNOWN_BINARY_NAMES
@destructiveTest
@skipIf(salt.utils.path.which_bin(KNOWN_BINARY_NAMES) is None, 'virtualenv not installed')
class EggSetupTest(ModuleCase):
'''
Tests for building and installing egg packages
'''
def setUp(self):
# ensure we have a clean build dir
self._clean_build()
def _clean_build(self):
'''
helper method to clean the build dir
'''
dirs = [os.path.join(RUNTIME_VARS.CODE_DIR, 'build'),
os.path.join(RUNTIME_VARS.CODE_DIR, 'salt.egg-info'),
os.path.join(RUNTIME_VARS.CODE_DIR, 'dist')]
for _dir in dirs:
if os.path.exists(_dir):
shutil.rmtree(_dir)
def test_egg_install(self):
'''
test installing an egg package
'''
# Let's create the testing virtualenv
with VirtualEnv() as venv:
ret = self.run_function('cmd.run', ['{0} setup.py install --prefix={1}'.format(venv.venv_python,
venv.venv_dir)],
cwd=RUNTIME_VARS.CODE_DIR)
self._clean_build()
lib_dir = os.path.join(venv.venv_dir, 'lib')
for _dir in os.listdir(lib_dir):
site_pkg = os.path.join(lib_dir, _dir, 'site-packages')
for _file in os.listdir(site_pkg):
if _file.startswith('salt-'):
egg = os.path.join(venv.venv_dir, _file)
assert os.path.exists(os.path.join(site_pkg, _file, 'salt', '_version.py'))
break
# Let's ensure the version is correct
pip_ver = self.run_function('pip.list', bin_env=venv.venv_dir).get('salt')
egg_ver = [x for x in egg.split('/')[-1:][0].split('-') if re.search(r'^\d.\d*', x)][0]
assert pip_ver == egg_ver.replace('_', '-')

View file

@ -160,6 +160,7 @@ class BadTestModuleNamesTestCase(TestCase):
'integration.scheduler.test_helpers',
'integration.scheduler.test_run_job',
'integration.setup.test_bdist',
'integration.setup.test_egg',
'integration.shell.test_spm',
'integration.shell.test_cp',
'integration.shell.test_syndic',