def test_log_file_format(self): """Test for log_file_format().""" # first test defaults -> no templating when no values are provided self.assertEqual(log_file_format(), 'easybuild-%(name)s-%(version)s-%(date)s.%(time)s.log') self.assertEqual(log_file_format(return_directory=True), 'easybuild') # test whether provided values are used to complete template ec = {'name': 'foo', 'version': '1.2.3'} res = log_file_format(ec=ec, date='20190322', timestamp='094356') self.assertEqual(res, 'easybuild-foo-1.2.3-20190322.094356.log') res = log_file_format(return_directory=True, ec=ec, date='20190322', timestamp='094356') self.assertEqual(res, 'easybuild') # partial templating is done when only some values are provided... self.assertEqual(log_file_format(ec=ec), 'easybuild-foo-1.2.3-%(date)s.%(time)s.log') res = log_file_format(date='20190322', timestamp='094356') self.assertEqual(res, 'easybuild-%(name)s-%(version)s-20190322.094356.log') # also try with a custom setting init_config(args=['--logfile-format=eb-%(name)s-%(date)s,log-%(version)s-%(date)s-%(time)s.out']) self.assertEqual(log_file_format(), 'log-%(version)s-%(date)s-%(time)s.out') self.assertEqual(log_file_format(return_directory=True), 'eb-%(name)s-%(date)s') res = log_file_format(ec=ec, date='20190322', timestamp='094356') self.assertEqual(res, 'log-1.2.3-20190322-094356.out') res = log_file_format(return_directory=True, ec=ec, date='20190322', timestamp='094356') self.assertEqual(res, 'eb-foo-20190322') # test handling of incorrect setting for --logfile-format init_config(args=['--logfile-format=easybuild,log.txt,thisiswrong']) error_pattern = "Incorrect log file format specification, should be 2-tuple" self.assertErrorRegex(EasyBuildError, error_pattern, log_file_format)
def test_log_file_format(self): """Test for log_file_format().""" # first test defaults -> no templating when no values are provided self.assertEqual(log_file_format(), 'easybuild-%(name)s-%(version)s-%(date)s.%(time)s.log') self.assertEqual(log_file_format(return_directory=True), 'easybuild') # test whether provided values are used to complete template ec = {'name': 'foo', 'version': '1.2.3'} res = log_file_format(ec=ec, date='20190322', timestamp='094356') self.assertEqual(res, 'easybuild-foo-1.2.3-20190322.094356.log') res = log_file_format(return_directory=True, ec=ec, date='20190322', timestamp='094356') self.assertEqual(res, 'easybuild') # partial templating is done when only some values are provided... self.assertEqual(log_file_format(ec=ec), 'easybuild-foo-1.2.3-%(date)s.%(time)s.log') res = log_file_format(date='20190322', timestamp='094356') self.assertEqual(res, 'easybuild-%(name)s-%(version)s-20190322.094356.log') # also try with a custom setting init_config(args=['--logfile-format=eb-%(name)s-%(date)s,log-%(version)s-%(date)s-%(time)s.out']) self.assertEqual(log_file_format(), 'log-%(version)s-%(date)s-%(time)s.out') self.assertEqual(log_file_format(return_directory=True), 'eb-%(name)s-%(date)s') res = log_file_format(ec=ec, date='20190322', timestamp='094356') self.assertEqual(res, 'log-1.2.3-20190322-094356.out') res = log_file_format(return_directory=True, ec=ec, date='20190322', timestamp='094356') self.assertEqual(res, 'eb-foo-20190322') # test handling of incorrect setting for --logfile-format init_config(args=['--logfile-format=easybuild,log.txt,thisiswrong']) error_pattern = "Incorrect log file format specification, should be 2-tuple" self.assertErrorRegex(EasyBuildError, error_pattern, log_file_format)
def test_log_path(self): """Test for log_path().""" # default self.assertEqual(log_path(), 'easybuild') # providing template values doesn't affect the default ec = {'name': 'foo', 'version': '1.2.3'} res = log_path(ec=ec) self.assertEqual(res, 'easybuild') # reconfigure with value for log directory that includes templates init_config(args=['--logfile-format=easybuild-%(name)s-%(version)s-%(date)s-%(time)s,log.txt']) regex = re.compile(r'^easybuild-foo-1\.2\.3-[0-9-]{8}-[0-9]{6}$') res = log_path(ec=ec) self.assertTrue(regex.match(res), "Pattern '%s' matches '%s'" % (regex.pattern, res)) self.assertEqual(log_file_format(), 'log.txt')
def test_log_path(self): """Test for log_path().""" # default self.assertEqual(log_path(), 'easybuild') # providing template values doesn't affect the default ec = {'name': 'foo', 'version': '1.2.3'} res = log_path(ec=ec) self.assertEqual(res, 'easybuild') # reconfigure with value for log directory that includes templates init_config(args=['--logfile-format=easybuild-%(name)s-%(version)s-%(date)s-%(time)s,log.txt']) regex = re.compile(r'^easybuild-foo-1\.2\.3-[0-9-]{8}-[0-9]{6}$') res = log_path(ec=ec) self.assertTrue(regex.match(res), "Pattern '%s' matches '%s'" % (regex.pattern, res)) self.assertEqual(log_file_format(), 'log.txt')
def test_legacy_config_file(self): """Test finding/using legacy configuration files.""" self.purge_environment() 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 init_config() 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_paths()[0], sourcepath) self.assertEqual(install_path(), os.path.join(installpath, softsuffix)) self.assertEqual(install_path(typ='mod'), os.path.join(installpath, modsuffix)) repo = init_repository(get_repository(), get_repositorypath()) 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 init_config() cfg_fn = self.configure(args=[]) # verify configuration self.assertEqual(cfg_fn, mycustomconfigfile) self.assertEqual(build_path(), buildpath) self.assertEqual(source_paths()[0], sourcepath) self.assertEqual(install_path(), os.path.join(installpath, softsuffix)) self.assertEqual(install_path(typ='mod'), os.path.join(installpath, modsuffix)) repo = init_repository(get_repository(), get_repositorypath()) 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)
def test_legacy_config_file(self): """Test finding/using legacy configuration files.""" self.purge_environment() 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 init_config() 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_paths()[0], sourcepath) self.assertEqual(install_path(), os.path.join(installpath, softsuffix)) self.assertEqual(install_path(typ='mod'), os.path.join(installpath, modsuffix)) repo = init_repository(get_repository(), get_repositorypath()) 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 init_config() cfg_fn = self.configure(args=[]) # verify configuration self.assertEqual(cfg_fn, mycustomconfigfile) self.assertEqual(build_path(), buildpath) self.assertEqual(source_paths()[0], sourcepath) self.assertEqual(install_path(), os.path.join(installpath, softsuffix)) self.assertEqual(install_path(typ='mod'), os.path.join(installpath, modsuffix)) repo = init_repository(get_repository(), get_repositorypath()) 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)