def test_legacy_config_file(self): """Test finding/using legacy configuration files.""" cfg_fn = self.configure(args=[]) self.assertTrue(cfg_fn.endswith('easybuild/easybuild_config.py')) configtxt = """ build_path = '%(buildpath)s' source_path = '%(sourcepath)s' install_path = '%(installpath)s' repository_path = '%(repopath)s' repository = FileRepository(repository_path) log_format = ('%(logdir)s', '%(logtmpl)s') log_dir = '%(tmplogdir)s' software_install_suffix = '%(softsuffix)s' modules_install_suffix = '%(modsuffix)s' """ buildpath = os.path.join(self.tmpdir, 'my', 'test', 'build', 'path') sourcepath = os.path.join(self.tmpdir, 'my', 'test', 'source', 'path') installpath = os.path.join(self.tmpdir, 'my', 'test', 'install', 'path') repopath = os.path.join(self.tmpdir, 'my', 'test', 'repo', 'path') logdir = 'somedir' logtmpl = 'test-eb-%(name)s%(version)s_date-%(date)s__time-%(time)s.log' tmplogdir = os.path.join(self.tmpdir, 'my', 'test', 'tmplogdir') softsuffix = 'myfavoritesoftware' modsuffix = 'modulesgohere' configdict = { 'buildpath': buildpath, 'sourcepath': sourcepath, 'installpath': installpath, 'repopath': repopath, 'logdir': logdir, 'logtmpl': logtmpl, 'tmplogdir': tmplogdir, 'softsuffix': softsuffix, 'modsuffix': modsuffix } # create user config file on default location myconfigfile = os.path.join(self.tmpdir, '.easybuild', 'config.py') if not os.path.exists(os.path.dirname(myconfigfile)): os.makedirs(os.path.dirname(myconfigfile)) write_file(myconfigfile, configtxt % configdict) # redefine home so we can test user config file on default location home = os.environ.get('HOME', None) os.environ['HOME'] = self.tmpdir config.variables = ConfigurationVariables() cfg_fn = self.configure(args=[]) if home is not None: os.environ['HOME'] = home # check finding and use of config file self.assertEqual(cfg_fn, myconfigfile) self.assertEqual(build_path(), buildpath) self.assertEqual(source_path(), sourcepath) self.assertEqual(install_path(), os.path.join(installpath, softsuffix)) self.assertEqual(install_path(typ='mod'), os.path.join(installpath, modsuffix)) repo = get_repository() self.assertTrue(isinstance(repo, FileRepository)) self.assertEqual(repo.repo, repopath) self.assertEqual(log_file_format(return_directory=True), logdir) self.assertEqual(log_file_format(), logtmpl) self.assertEqual(get_build_log_path(), tmplogdir) # redefine config file entries for proper testing below buildpath = os.path.join(self.tmpdir, 'my', 'custom', 'test', 'build', 'path') sourcepath = os.path.join(self.tmpdir, 'my', 'custom', 'test', 'source', 'path') installpath = os.path.join(self.tmpdir, 'my', 'custom', 'test', 'install', 'path') repopath = os.path.join(self.tmpdir, 'my', 'custom', 'test', 'repo', 'path') logdir = 'somedir_custom' logtmpl = 'test-custom-eb-%(name)_%(date)s%(time)s__%(version)s.log' tmplogdir = os.path.join(self.tmpdir, 'my', 'custom', 'test', 'tmplogdir') softsuffix = 'myfavoritesoftware_custom' modsuffix = 'modulesgohere_custom' configdict = { 'buildpath': buildpath, 'sourcepath': sourcepath, 'installpath': installpath, 'repopath': repopath, 'logdir': logdir, 'logtmpl': logtmpl, 'tmplogdir': tmplogdir, 'softsuffix': softsuffix, 'modsuffix': modsuffix } # create custom config file, and point to it mycustomconfigfile = os.path.join(self.tmpdir, 'mycustomconfig.py') if not os.path.exists(os.path.dirname(mycustomconfigfile)): os.makedirs(os.path.dirname(mycustomconfigfile)) write_file(mycustomconfigfile, configtxt % configdict) os.environ['EASYBUILDCONFIG'] = mycustomconfigfile # reconfigure config.variables = ConfigurationVariables() cfg_fn = self.configure(args=[]) # verify configuration self.assertEqual(cfg_fn, mycustomconfigfile) self.assertEqual(build_path(), buildpath) self.assertEqual(source_path(), sourcepath) self.assertEqual(install_path(), os.path.join(installpath, softsuffix)) self.assertEqual(install_path(typ='mod'), os.path.join(installpath, modsuffix)) repo = get_repository() self.assertTrue(isinstance(repo, FileRepository)) self.assertEqual(repo.repo, repopath) self.assertEqual(log_file_format(return_directory=True), logdir) self.assertEqual(log_file_format(), logtmpl) self.assertEqual(get_build_log_path(), tmplogdir) del os.environ['EASYBUILDCONFIG']
def test_legacy_env_vars(self): """Test legacy environment variables.""" # build path test_buildpath = os.path.join(self.tmpdir, 'build', 'path') os.environ['EASYBUILDBUILDPATH'] = test_buildpath self.configure(args=[]) self.assertEqual(build_path(), test_buildpath) del os.environ['EASYBUILDBUILDPATH'] # source path config.variables = ConfigurationVariables() test_sourcepath = os.path.join(self.tmpdir, 'source', 'path') os.environ['EASYBUILDSOURCEPATH'] = test_sourcepath self.configure(args=[]) self.assertEqual(build_path(), os.path.join(os.path.expanduser('~'), '.local', 'easybuild', DEFAULT_PATH_SUBDIRS['buildpath'])) self.assertEqual(source_path(), test_sourcepath) del os.environ['EASYBUILDSOURCEPATH'] # install path config.variables = ConfigurationVariables() test_installpath = os.path.join(self.tmpdir, 'install', 'path') os.environ['EASYBUILDINSTALLPATH'] = test_installpath self.configure(args=[]) self.assertEqual(source_path(), os.path.join(os.path.expanduser('~'), '.local', 'easybuild', DEFAULT_PATH_SUBDIRS['sourcepath'])) self.assertEqual(install_path(), os.path.join(test_installpath, DEFAULT_PATH_SUBDIRS['subdir_software'])) self.assertEqual(install_path(typ='mod'), os.path.join(test_installpath, DEFAULT_PATH_SUBDIRS['subdir_modules'])) del os.environ['EASYBUILDINSTALLPATH'] # prefix: should change build/install/source/repo paths config.variables = ConfigurationVariables() test_prefixpath = os.path.join(self.tmpdir, 'prefix', 'path') os.environ['EASYBUILDPREFIX'] = test_prefixpath self.configure(args=[]) self.assertEqual(build_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['buildpath'])) self.assertEqual(source_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['sourcepath'])) self.assertEqual(install_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['subdir_software'])) self.assertEqual(install_path(typ='mod'), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['subdir_modules'])) repo = get_repository() self.assertTrue(isinstance(repo, FileRepository)) self.assertEqual(repo.repo, os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['repositorypath'])) # build/source/install path overrides prefix config.variables = ConfigurationVariables() os.environ['EASYBUILDBUILDPATH'] = test_buildpath self.configure(args=[]) self.assertEqual(build_path(), test_buildpath) self.assertEqual(source_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['sourcepath'])) self.assertEqual(install_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['subdir_software'])) self.assertEqual(install_path(typ='mod'), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['subdir_modules'])) repo = get_repository() self.assertTrue(isinstance(repo, FileRepository)) self.assertEqual(repo.repo, os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['repositorypath'])) # also check old style vs new style self.assertEqual(config.variables['build_path'], config.variables['buildpath']) self.assertEqual(config.variables['install_path'], config.variables['installpath']) del os.environ['EASYBUILDBUILDPATH'] config.variables = ConfigurationVariables() os.environ['EASYBUILDSOURCEPATH'] = test_sourcepath self.configure(args=[]) self.assertEqual(build_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['buildpath'])) self.assertEqual(source_path(), test_sourcepath) self.assertEqual(install_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['subdir_software'])) self.assertEqual(install_path(typ='mod'), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['subdir_modules'])) repo = get_repository() self.assertTrue(isinstance(repo, FileRepository)) self.assertEqual(repo.repo, os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['repositorypath'])) del os.environ['EASYBUILDSOURCEPATH'] config.variables = ConfigurationVariables() os.environ['EASYBUILDINSTALLPATH'] = test_installpath self.configure(args=[]) self.assertEqual(build_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['buildpath'])) self.assertEqual(source_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['sourcepath'])) self.assertEqual(install_path(), os.path.join(test_installpath, DEFAULT_PATH_SUBDIRS['subdir_software'])) self.assertEqual(install_path(typ='mod'), os.path.join(test_installpath, DEFAULT_PATH_SUBDIRS['subdir_modules'])) repo = get_repository() self.assertTrue(isinstance(repo, FileRepository)) self.assertEqual(repo.repo, os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['repositorypath'])) del os.environ['EASYBUILDINSTALLPATH'] del os.environ['EASYBUILDPREFIX']
def test_legacy_env_vars(self): """Test legacy environment variables.""" # build path test_buildpath = os.path.join(self.tmpdir, 'build', 'path') os.environ['EASYBUILDBUILDPATH'] = test_buildpath self.configure(args=[]) self.assertEqual(build_path(), test_buildpath) del os.environ['EASYBUILDBUILDPATH'] # source path config.variables = ConfigurationVariables() test_sourcepath = os.path.join(self.tmpdir, 'source', 'path') os.environ['EASYBUILDSOURCEPATH'] = test_sourcepath self.configure(args=[]) self.assertEqual( build_path(), os.path.join(os.path.expanduser('~'), '.local', 'easybuild', DEFAULT_PATH_SUBDIRS['buildpath'])) self.assertEqual(source_path(), test_sourcepath) del os.environ['EASYBUILDSOURCEPATH'] # install path config.variables = ConfigurationVariables() test_installpath = os.path.join(self.tmpdir, 'install', 'path') os.environ['EASYBUILDINSTALLPATH'] = test_installpath self.configure(args=[]) self.assertEqual( source_path(), os.path.join(os.path.expanduser('~'), '.local', 'easybuild', DEFAULT_PATH_SUBDIRS['sourcepath'])) self.assertEqual( install_path(), os.path.join(test_installpath, DEFAULT_PATH_SUBDIRS['subdir_software'])) self.assertEqual( install_path(typ='mod'), os.path.join(test_installpath, DEFAULT_PATH_SUBDIRS['subdir_modules'])) del os.environ['EASYBUILDINSTALLPATH'] # prefix: should change build/install/source/repo paths config.variables = ConfigurationVariables() test_prefixpath = os.path.join(self.tmpdir, 'prefix', 'path') os.environ['EASYBUILDPREFIX'] = test_prefixpath self.configure(args=[]) self.assertEqual( build_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['buildpath'])) self.assertEqual( source_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['sourcepath'])) self.assertEqual( install_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['subdir_software'])) self.assertEqual( install_path(typ='mod'), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['subdir_modules'])) repo = get_repository() self.assertTrue(isinstance(repo, FileRepository)) self.assertEqual( repo.repo, os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['repositorypath'])) # build/source/install path overrides prefix config.variables = ConfigurationVariables() os.environ['EASYBUILDBUILDPATH'] = test_buildpath self.configure(args=[]) self.assertEqual(build_path(), test_buildpath) self.assertEqual( source_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['sourcepath'])) self.assertEqual( install_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['subdir_software'])) self.assertEqual( install_path(typ='mod'), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['subdir_modules'])) repo = get_repository() self.assertTrue(isinstance(repo, FileRepository)) self.assertEqual( repo.repo, os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['repositorypath'])) # also check old style vs new style self.assertEqual(config.variables['build_path'], config.variables['buildpath']) self.assertEqual(config.variables['install_path'], config.variables['installpath']) del os.environ['EASYBUILDBUILDPATH'] config.variables = ConfigurationVariables() os.environ['EASYBUILDSOURCEPATH'] = test_sourcepath self.configure(args=[]) self.assertEqual( build_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['buildpath'])) self.assertEqual(source_path(), test_sourcepath) self.assertEqual( install_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['subdir_software'])) self.assertEqual( install_path(typ='mod'), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['subdir_modules'])) repo = get_repository() self.assertTrue(isinstance(repo, FileRepository)) self.assertEqual( repo.repo, os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['repositorypath'])) del os.environ['EASYBUILDSOURCEPATH'] config.variables = ConfigurationVariables() os.environ['EASYBUILDINSTALLPATH'] = test_installpath self.configure(args=[]) self.assertEqual( build_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['buildpath'])) self.assertEqual( source_path(), os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['sourcepath'])) self.assertEqual( install_path(), os.path.join(test_installpath, DEFAULT_PATH_SUBDIRS['subdir_software'])) self.assertEqual( install_path(typ='mod'), os.path.join(test_installpath, DEFAULT_PATH_SUBDIRS['subdir_modules'])) repo = get_repository() self.assertTrue(isinstance(repo, FileRepository)) self.assertEqual( repo.repo, os.path.join(test_prefixpath, DEFAULT_PATH_SUBDIRS['repositorypath'])) del os.environ['EASYBUILDINSTALLPATH'] del os.environ['EASYBUILDPREFIX']