3 from bup import metadata
8 def test__normalize_ts():
9 normalize = metadata._normalize_ts
11 for ts in ((0, 0), (-1, 0), (0, bns - 1), (-1, bns - 1)):
12 WVPASSEQ(normalize(ts), ts)
13 WVPASSEQ(normalize((0, -1)), (-1, bns - 1))
14 WVPASSEQ(normalize((-1, -1)), (-2, bns - 1))
15 WVPASSEQ(normalize((0, bns)), (1, 0))
16 WVPASSEQ(normalize((0, bns + 1)), (1, 1))
17 WVPASSEQ(normalize((0, -bns)), (-1, 0))
18 WVPASSEQ(normalize((0, -(bns + 1))), (-2, bns - 1))
19 WVPASSEQ(normalize((0, 3 * bns)), (3, 0))
20 WVPASSEQ(normalize((0, -3 * bns)), (-3, 0))
24 def test_clean_up_archive_path():
25 cleanup = metadata._clean_up_path_for_archive
26 WVPASSEQ(cleanup('foo'), 'foo')
27 WVPASSEQ(cleanup('/foo'), 'foo')
28 WVPASSEQ(cleanup('///foo'), 'foo')
29 WVPASSEQ(cleanup('/foo/bar'), 'foo/bar')
30 WVPASSEQ(cleanup('foo/./bar'), 'foo/bar')
31 WVPASSEQ(cleanup('/foo/./bar'), 'foo/bar')
32 WVPASSEQ(cleanup('/foo/./bar/././baz'), 'foo/bar/baz')
33 WVPASSEQ(cleanup('/foo/./bar///././baz'), 'foo/bar/baz')
34 WVPASSEQ(cleanup('//./foo/./bar///././baz/.///'), 'foo/bar/baz/')
35 WVPASSEQ(cleanup('./foo/./.bar'), 'foo/.bar')
36 WVPASSEQ(cleanup('./foo/.'), 'foo')
37 WVPASSEQ(cleanup('./foo/..'), '.')
38 WVPASSEQ(cleanup('//./..//.../..//.'), '.')
39 WVPASSEQ(cleanup('//./..//..././/.'), '...')
40 WVPASSEQ(cleanup('/////.'), '.')
41 WVPASSEQ(cleanup('/../'), '.')
42 WVPASSEQ(cleanup(''), '.')
46 def test_risky_path():
47 risky = metadata._risky_path
49 WVPASS(risky('///foo'))
50 WVPASS(risky('/../foo'))
51 WVPASS(risky('../foo'))
52 WVPASS(risky('foo/..'))
53 WVPASS(risky('foo/../'))
54 WVPASS(risky('foo/../bar'))
57 WVFAIL(risky('foo///'))
58 WVFAIL(risky('./foo'))
59 WVFAIL(risky('foo/.'))
60 WVFAIL(risky('./foo/.'))
61 WVFAIL(risky('foo/bar'))
62 WVFAIL(risky('foo/./bar'))
66 def test_clean_up_extract_path():
67 cleanup = metadata._clean_up_extract_path
68 WVPASSEQ(cleanup('/foo'), 'foo')
69 WVPASSEQ(cleanup('///foo'), 'foo')
70 WVFAIL(cleanup('/../foo'))
71 WVFAIL(cleanup('../foo'))
72 WVFAIL(cleanup('foo/..'))
73 WVFAIL(cleanup('foo/../'))
74 WVFAIL(cleanup('foo/../bar'))
75 WVPASSEQ(cleanup('foo'), 'foo')
76 WVPASSEQ(cleanup('foo/'), 'foo/')
77 WVPASSEQ(cleanup('foo///'), 'foo///')
78 WVPASSEQ(cleanup('./foo'), './foo')
79 WVPASSEQ(cleanup('foo/.'), 'foo/.')
80 WVPASSEQ(cleanup('./foo/.'), './foo/.')
81 WVPASSEQ(cleanup('foo/bar'), 'foo/bar')
82 WVPASSEQ(cleanup('foo/./bar'), 'foo/./bar')
83 WVPASSEQ(cleanup('/'), '.')
84 WVPASSEQ(cleanup('./'), './')
85 WVPASSEQ(cleanup('///foo/bar'), 'foo/bar')
86 WVPASSEQ(cleanup('///foo/bar'), 'foo/bar')
90 def test_from_path_error():
91 tmpdir = tempfile.mkdtemp(prefix='bup-tmetadata-')
93 path = tmpdir + '/foo'
94 subprocess.call(['mkdir', path])
95 m = metadata.from_path(path, archive_path=path, save_symlinks=True)
96 WVPASSEQ(m.path, path)
97 subprocess.call(['chmod', '000', path])
98 WVEXCEPT(metadata.MetadataAcquisitionError,
104 subprocess.call(['rm', '-rf', tmpdir])
108 def test_apply_to_path_error():
109 tmpdir = tempfile.mkdtemp(prefix='bup-tmetadata-')
111 path = tmpdir + '/foo'
112 subprocess.call(['mkdir', path])
113 m = metadata.from_path(path, archive_path=path, save_symlinks=True)
114 WVPASSEQ(m.path, path)
115 subprocess.call(['chmod', '000', tmpdir])
116 WVEXCEPT(metadata.MetadataApplicationError,
117 m.apply_to_path, path)
118 subprocess.call(['chmod', '700', tmpdir])
120 subprocess.call(['rm', '-rf', tmpdir])