diff --git a/reframe/utility/__init__.py b/reframe/utility/__init__.py index 577a0b364f..e4fb29c398 100644 --- a/reframe/utility/__init__.py +++ b/reframe/utility/__init__.py @@ -765,7 +765,7 @@ def _rl_encode(seq): def _parse_node(nodename): - m = re.search(r'(^\D+)(\d+)', nodename) + m = re.search(r'(.*\D)(\d+)', nodename) if m is None: basename = nodename width = 0 diff --git a/unittests/test_utility.py b/unittests/test_utility.py index e85c1bdd6e..b0e997b8bc 100644 --- a/unittests/test_utility.py +++ b/unittests/test_utility.py @@ -1784,6 +1784,10 @@ def test_nodelist_abbrev(): assert nodelist([]) == '' assert nodelist(['nid001']) == 'nid001' + # Test host names with numbers in their basename (see GH #2357) + nodes = [f'c2-01-{n:02}' for n in range(100)] + assert nodelist(nodes) == 'c2-01-[00-99]' + # Test node duplicates assert nodelist(['nid001', 'nid001', 'nid002']) == 'nid001,nid00[1-2]'