1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
from __future__ import generators
import unittest
execfile("commontest.py")
rbexec("destructive_stepping.py")
class DSTest(unittest.TestCase):
def setUp(self):
self.lc = Globals.local_connection
self.noperms = RPath(self.lc, "testfiles/noperms")
Globals.change_source_perms = 1
self.iteration_dir = RPath(self.lc, "testfiles/iteration-test")
def testDSIter(self):
"""Testing destructive stepping iterator from baserp"""
for i in range(2):
ds_iter = DestructiveStepping.Iterate_with_Finalizer(
self.noperms, 1)
noperms = ds_iter.next()
assert noperms.isdir() and noperms.getperms() == 0
bar = ds_iter.next()
assert bar.isreg() and bar.getperms() == 0
barbuf = bar.open("rb").read()
assert len(barbuf) > 0
foo = ds_iter.next()
assert foo.isreg() and foo.getperms() == 0
assert foo.getmtime() < 1000300000
fuz = ds_iter.next()
assert fuz.isreg() and fuz.getperms() == 0200
fuzbuf = fuz.open("rb").read()
assert len(fuzbuf) > 0
self.assertRaises(StopIteration, ds_iter.next)
def testIterate_from(self):
"""Tests basic iteration by Iterate_from"""
iter = DestructiveStepping.Iterate_from(self.iteration_dir, 1)
l = []
for rp in iter: l.append(rp.index)
assert l == [(),
('1',),
('2',),
('3',), ('3','2'), ('3','3'),
('4',),
('5',), ('5','1'), ('5','2'), ('5','2','1'),
('6',), ('6','3'),
('6','3','1'), ('6','3','2'), ('6','4'),
('7',)], l
def testIterate_from_index(self):
"""Test iteration from a given index"""
iter = DestructiveStepping.Iterate_from(self.iteration_dir, 1, ('3',))
l = []
for rp in iter: l.append(rp.index)
assert l == [('3','2'), ('3','3'),
('4',),
('5',), ('5','1'), ('5','2'), ('5','2','1'),
('6',), ('6','3'),
('6','3','1'), ('6','3','2'), ('6','4'),
('7',)], l
iter = DestructiveStepping.Iterate_from(self.iteration_dir, 1,
('6','3'))
l = []
for rp in iter: l.append(rp.index)
assert l == [('6','3','1'), ('6','3','2'), ('6', '4'),
('7',)], l
if __name__ == "__main__": unittest.main()
|