diff --git a/ipalib/config.py b/ipalib/config.py index 997d98994..fac14932b 100644 --- a/ipalib/config.py +++ b/ipalib/config.py @@ -457,11 +457,11 @@ class Env: # Merge in overrides: self._merge(**overrides) - # Determine if running in source tree: + # Determine if running in source tree. The root directory of + # IPA source directory contains ipasetup.py.in. if 'in_tree' not in self: - self.in_tree = ( - self.bin == self.site_packages - and path.isfile(path.join(self.bin, 'setup.py')) + self.in_tree = os.path.isfile( + os.path.join(self.site_packages, "ipasetup.py.in") ) if self.in_tree and 'mode' not in self: self.mode = 'developer' diff --git a/ipatests/conftest.py b/ipatests/conftest.py index 6171efbd0..6c5f1d894 100644 --- a/ipatests/conftest.py +++ b/ipatests/conftest.py @@ -118,7 +118,7 @@ def pytest_addoption(parser): def pytest_cmdline_main(config): kwargs = dict( - context=u'cli', in_server=False, in_tree=True, fallback=False + context=u'cli', in_server=False, fallback=False ) if not os.path.isfile(os.path.expanduser('~/.ipa/default.conf')): # dummy domain/host for machines without ~/.ipa/default.conf diff --git a/ipatests/test_ipalib/test_config.py b/ipatests/test_ipalib/test_config.py index 42b59f9ab..ad24c9a6c 100644 --- a/ipatests/test_ipalib/test_config.py +++ b/ipatests/test_ipalib/test_config.py @@ -23,7 +23,9 @@ Test the `ipalib.config` module. """ from os import path +import site import sys + from ipatests.util import raises, delitem, ClassChecker from ipatests.util import getitem from ipatests.util import TempDir, TempHome @@ -447,23 +449,39 @@ class test_Env(ClassChecker): assert o.bin == path.dirname(path.abspath(sys.argv[0])) assert o.home == home.path assert o.dot_ipa == home.join('.ipa') - assert o.in_tree is False assert o.context == 'default' - assert o.confdir == '/etc/ipa' - assert o.conf == '/etc/ipa/default.conf' - assert o.conf_default == o.conf + if ( + # venv site module doesn't have getsitepackages() + not hasattr(site, "getsitepackages") + or o.site_packages in site.getsitepackages() + ): + assert o.in_tree is False + assert o.confdir == '/etc/ipa' + assert o.conf == '/etc/ipa/default.conf' + assert o.conf_default == o.conf + else: + assert o.in_tree is True + assert o.confdir == o.dot_ipa + assert o.conf == home.join('.ipa/default.conf') + assert o.conf_default == o.conf # Test overriding values created by _bootstrap() (o, home) = self.bootstrap(in_tree='True', context='server') assert o.in_tree is True assert o.context == 'server' assert o.conf == home.join('.ipa', 'server.conf') - (o, home) = self.bootstrap(conf='/my/wacky/whatever.conf') + + o, home = self.bootstrap( + conf='/my/wacky/whatever.conf', in_tree=False + ) assert o.in_tree is False assert o.context == 'default' assert o.conf == '/my/wacky/whatever.conf' assert o.conf_default == '/etc/ipa/default.conf' - (o, home) = self.bootstrap(conf_default='/my/wacky/default.conf') + + o, home = self.bootstrap( + conf_default='/my/wacky/default.conf', in_tree=False + ) assert o.in_tree is False assert o.context == 'default' assert o.conf == '/etc/ipa/default.conf'