diff --git a/easybuild/framework/easyblock.py b/easybuild/framework/easyblock.py index df88ad9ffd..0f4b02b9b1 100644 --- a/easybuild/framework/easyblock.py +++ b/easybuild/framework/easyblock.py @@ -311,6 +311,9 @@ def __init__(self, ec, logfile=None): # initialize logger self._init_log() + # number of iterations + self.iter_cnt = self.det_iter_cnt() + # try and use the specified group (if any) group_name = build_option('group') group_spec = self.cfg['group'] @@ -2387,7 +2390,8 @@ def handle_iterate_opts(self): self.log.debug("Iterating opt %s: %s", opt, self.iter_opts[opt]) if self.iter_opts: - print_msg("starting iteration #%s ..." % self.iter_idx, log=self.log, silent=self.silent) + print_msg(f"starting iteration {self.iter_idx + 1}/{self.iter_cnt} ...", log=self.log, + silent=self.silent) self.log.info("Current iteration index: %s", self.iter_idx) # pop first element from all iterative easyconfig parameters as next value to use @@ -2429,7 +2433,7 @@ def det_iter_cnt(self): # we need to take into account that builddependencies is always a list # we're only iterating over it if it's a list of lists - builddeps = self.cfg['builddependencies'] + builddeps = self.cfg.get_ref('builddependencies') if all(isinstance(x, list) for x in builddeps): iter_opt_counts.append(len(builddeps)) @@ -4794,7 +4798,7 @@ def run_all_steps(self, run_test_cases): if self.cfg['stop'] == 'cfg': return True - steps = self.get_steps(run_test_cases=run_test_cases, iteration_count=self.det_iter_cnt()) + steps = self.get_steps(run_test_cases=run_test_cases, iteration_count=self.iter_cnt) # figure out how many steps will actually be run (not be skipped) step_cnt = 0 diff --git a/test/framework/easyblock.py b/test/framework/easyblock.py index 737be6ecbc..65a57cc6e7 100644 --- a/test/framework/easyblock.py +++ b/test/framework/easyblock.py @@ -1191,7 +1191,7 @@ def test_handle_iterate_opts(self): stdout = self.get_stdout() self.mock_stdout(False) self.assertEqual(eb.iter_idx, 0) - self.assertEqual(stdout, "== starting iteration #0 ...\n") + self.assertEqual(stdout, "== starting iteration 1/3 ...\n") self.assertEqual(eb.cfg.iterating, True) self.assertEqual(eb.cfg.iterate_options, ['configopts']) self.assertEqual(eb.cfg['configopts'], "--opt1 --anotheropt") @@ -1205,7 +1205,7 @@ def test_handle_iterate_opts(self): stdout = self.get_stdout() self.mock_stdout(False) self.assertEqual(eb.iter_idx, 1) - self.assertEqual(stdout, "== starting iteration #1 ...\n") + self.assertEqual(stdout, "== starting iteration 2/3 ...\n") self.assertEqual(eb.cfg.iterating, True) self.assertEqual(eb.cfg.iterate_options, ['configopts']) # preconfigopts should have been restored (https://github.com/easybuilders/easybuild-framework/pull/4848) @@ -1218,7 +1218,7 @@ def test_handle_iterate_opts(self): stdout = self.get_stdout() self.mock_stdout(False) self.assertEqual(eb.iter_idx, 2) - self.assertEqual(stdout, "== starting iteration #2 ...\n") + self.assertEqual(stdout, "== starting iteration 3/3 ...\n") self.assertEqual(eb.cfg.iterating, True) self.assertEqual(eb.cfg.iterate_options, ['configopts']) self.assertEqual(eb.cfg['configopts'], "--opt3 --optbis")