Skip to content

Commit edb4e06

Browse files
authored
Merge pull request #4919 from smoors/num_iter
add total iteration count to trace output
2 parents 94e4a1c + 3e90216 commit edb4e06

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

easybuild/framework/easyblock.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,9 @@ def __init__(self, ec, logfile=None):
311311
# initialize logger
312312
self._init_log()
313313

314+
# number of iterations
315+
self.iter_cnt = self.det_iter_cnt()
316+
314317
# try and use the specified group (if any)
315318
group_name = build_option('group')
316319
group_spec = self.cfg['group']
@@ -2387,7 +2390,8 @@ def handle_iterate_opts(self):
23872390
self.log.debug("Iterating opt %s: %s", opt, self.iter_opts[opt])
23882391

23892392
if self.iter_opts:
2390-
print_msg("starting iteration #%s ..." % self.iter_idx, log=self.log, silent=self.silent)
2393+
print_msg(f"starting iteration {self.iter_idx + 1}/{self.iter_cnt} ...", log=self.log,
2394+
silent=self.silent)
23912395
self.log.info("Current iteration index: %s", self.iter_idx)
23922396

23932397
# pop first element from all iterative easyconfig parameters as next value to use
@@ -2429,7 +2433,7 @@ def det_iter_cnt(self):
24292433

24302434
# we need to take into account that builddependencies is always a list
24312435
# we're only iterating over it if it's a list of lists
2432-
builddeps = self.cfg['builddependencies']
2436+
builddeps = self.cfg.get_ref('builddependencies')
24332437
if all(isinstance(x, list) for x in builddeps):
24342438
iter_opt_counts.append(len(builddeps))
24352439

@@ -4789,7 +4793,7 @@ def run_all_steps(self, run_test_cases):
47894793
if self.cfg['stop'] == 'cfg':
47904794
return True
47914795

4792-
steps = self.get_steps(run_test_cases=run_test_cases, iteration_count=self.det_iter_cnt())
4796+
steps = self.get_steps(run_test_cases=run_test_cases, iteration_count=self.iter_cnt)
47934797

47944798
# figure out how many steps will actually be run (not be skipped)
47954799
step_cnt = 0

test/framework/easyblock.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1191,7 +1191,7 @@ def test_handle_iterate_opts(self):
11911191
stdout = self.get_stdout()
11921192
self.mock_stdout(False)
11931193
self.assertEqual(eb.iter_idx, 0)
1194-
self.assertEqual(stdout, "== starting iteration #0 ...\n")
1194+
self.assertEqual(stdout, "== starting iteration 1/3 ...\n")
11951195
self.assertEqual(eb.cfg.iterating, True)
11961196
self.assertEqual(eb.cfg.iterate_options, ['configopts'])
11971197
self.assertEqual(eb.cfg['configopts'], "--opt1 --anotheropt")
@@ -1205,7 +1205,7 @@ def test_handle_iterate_opts(self):
12051205
stdout = self.get_stdout()
12061206
self.mock_stdout(False)
12071207
self.assertEqual(eb.iter_idx, 1)
1208-
self.assertEqual(stdout, "== starting iteration #1 ...\n")
1208+
self.assertEqual(stdout, "== starting iteration 2/3 ...\n")
12091209
self.assertEqual(eb.cfg.iterating, True)
12101210
self.assertEqual(eb.cfg.iterate_options, ['configopts'])
12111211
# preconfigopts should have been restored (https://github.com/easybuilders/easybuild-framework/pull/4848)
@@ -1218,7 +1218,7 @@ def test_handle_iterate_opts(self):
12181218
stdout = self.get_stdout()
12191219
self.mock_stdout(False)
12201220
self.assertEqual(eb.iter_idx, 2)
1221-
self.assertEqual(stdout, "== starting iteration #2 ...\n")
1221+
self.assertEqual(stdout, "== starting iteration 3/3 ...\n")
12221222
self.assertEqual(eb.cfg.iterating, True)
12231223
self.assertEqual(eb.cfg.iterate_options, ['configopts'])
12241224
self.assertEqual(eb.cfg['configopts'], "--opt3 --optbis")

0 commit comments

Comments
 (0)