4 # Sort a group list, carefully preserving comments.
7 '''Extract the numeric part of a test name if possible.'''
10 assert type(key) == str
12 # No test number at all...
13 if not key[0].isdigit():
16 # ...otherwise extract as much number as we can.
19 k = k * 10 + int(digit)
25 '''Read the group list, carefully attaching comments to the next test.'''
31 tokens = sline.split()
32 if len(tokens) == 0 or tokens[0] == '#':
35 comments.append(sline)
37 tests[tokens[0]] = (comments, tokens[1:])
42 '''Separate keys into integer and non-integer tests.'''
47 # Sort keys into integer(ish) tests and other
49 xkey = xfstest_key(key)
52 int_xkeys.append(xkey)
55 return (int_keys, int_xkeys, str_keys)
57 def write_sorted(tests, fd):
59 (comments, tokens) = tests[key]
63 fd.write('%s %s\n' % (key, ' '.join(tokens)))
64 '''Print tests (and comments) in number order.'''
66 (int_keys, ignored, str_keys) = sort_keys(tests.keys())
67 for key in sorted(int_keys, key = xfstest_key):
69 for key in sorted(str_keys):
73 if '--help' in sys.argv[1:]:
74 print('Usage: %s groupfiles' % sys.argv[0])
77 for arg in sys.argv[1:]:
78 with open(arg, 'r+') as fd:
84 if '--help' in sys.argv[1:]:
85 print('Usage: %s group[/startid] ' % sys.argv[0])
88 if len(sys.argv) != 2:
89 print('Specify exactly one group name.')
92 c = sys.argv[1].split('/')
99 with open('tests/%s/group' % group, 'r') as fd:
101 xkeys = {int(x) for x in sort_keys(x.keys())[1]}
106 print('%s/%03d' % (group, xid))
108 if __name__ == '__main__':
109 if 'nextid' in sys.argv[0]: