]> arthur.barton.de Git - bup.git/blob - t/make-random-paths
Split src tree python use to config/bin/python and dev/bup-python
[bup.git] / t / make-random-paths
1 #!/bin/sh
2 """": # -*-python-*-
3 bup_python="$(dirname "$0")/../dev/bup-python" || exit $?
4 exec "$bup_python" "$0" ${1+"$@"}
5 """
6 # end of bup preamble
7
8 from __future__ import absolute_import, print_function
9
10 from os.path import abspath, dirname
11 from random import randint
12 from sys import argv, exit, stderr, stdout
13 import errno, re, sys
14
15 script_home = abspath(dirname(sys.argv[0] or '.'))
16 sys.path[:0] = [abspath(script_home + '/../lib'), abspath(script_home + '/..')]
17
18 from bup.compat import fsencode, range
19
20
21 def usage(out=stdout):
22     print('Usage:', argv[0], 'NUM', 'DEST_DIR', file=out)
23
24 def misuse():
25     usage(stderr)
26     exit(2)
27
28 if sys.version_info[0] >= 3:
29     def bytes_from_ints(ints):
30         return bytes(ints)
31 else:
32     def bytes_from_ints(ints):
33         return ''.join([chr(x) for x in ints])
34
35 invalid_fragments = re.compile(br'(\x00|[./]|\.\.)')
36
37 def random_filename():
38     n = randint(1, 32)
39     def random_candidate():
40         return invalid_fragments.sub(b'', bytes_from_ints([randint(1, 255)
41                                                            for x in range(n)]))
42     candidate = random_candidate()
43     while not candidate:
44         candidate = random_candidate()
45     return candidate
46
47 if len(argv) != 3:
48     misuse()
49
50 count, dest = argv[1:]
51 count = int(count)
52
53 i = 0
54 while i < count:
55     with open(fsencode(dest) + b'/' + random_filename(), 'w') as _:
56         i += 1