Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ensure version.py included before we install #56418

Merged
merged 2 commits into from
Mar 23, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -745,6 +745,12 @@ def run(self):
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)

Expand Down
69 changes: 69 additions & 0 deletions tests/integration/setup/test_egg.py
Original file line number Diff line number Diff line change
@@ -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('_', '-')
1 change: 1 addition & 0 deletions tests/unit/test_module_names.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ def test_module_name_source_match(self):
'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',
Expand Down