29 delattr(self, k) |
29 delattr(self, k) |
30 except AttributeError: |
30 except AttributeError: |
31 pass |
31 pass |
32 |
32 |
33 def basic(repo): |
33 def basic(repo): |
34 # file doesn't exist, calls function |
34 print "* file doesn't exist" |
|
35 # calls function |
35 repo.cached |
36 repo.cached |
36 |
37 |
37 repo.invalidate() |
38 repo.invalidate() |
38 # file still doesn't exist, uses cache |
39 print "* file still doesn't exist" |
|
40 # uses cache |
39 repo.cached |
41 repo.cached |
40 |
42 |
41 # create empty file |
43 # create empty file |
42 f = open('x', 'w') |
44 f = open('x', 'w') |
43 f.close() |
45 f.close() |
44 repo.invalidate() |
46 repo.invalidate() |
|
47 print "* empty file x created" |
45 # should recreate the object |
48 # should recreate the object |
46 repo.cached |
49 repo.cached |
47 |
50 |
48 f = open('x', 'w') |
51 f = open('x', 'w') |
49 f.write('a') |
52 f.write('a') |
50 f.close() |
53 f.close() |
51 repo.invalidate() |
54 repo.invalidate() |
|
55 print "* file x changed size" |
52 # should recreate the object |
56 # should recreate the object |
53 repo.cached |
57 repo.cached |
54 |
58 |
55 repo.invalidate() |
59 repo.invalidate() |
56 # stats file again, nothing changed, reuses object |
60 print "* nothing changed with file x" |
|
61 # stats file again, reuses object |
57 repo.cached |
62 repo.cached |
58 |
63 |
59 # atomic replace file, size doesn't change |
64 # atomic replace file, size doesn't change |
60 # hopefully st_mtime doesn't change as well so this doesn't use the cache |
65 # hopefully st_mtime doesn't change as well so this doesn't use the cache |
61 # because of inode change |
66 # because of inode change |
62 f = scmutil.opener('.')('x', 'w', atomictemp=True) |
67 f = scmutil.opener('.')('x', 'w', atomictemp=True) |
63 f.write('b') |
68 f.write('b') |
64 f.close() |
69 f.close() |
65 |
70 |
66 repo.invalidate() |
71 repo.invalidate() |
|
72 print "* file x changed inode" |
67 repo.cached |
73 repo.cached |
68 |
74 |
69 def fakeuncacheable(): |
75 def fakeuncacheable(): |
70 def wrapcacheable(orig, *args, **kwargs): |
76 def wrapcacheable(orig, *args, **kwargs): |
71 return False |
77 return False |