tests/test-filecache.py
changeset 20041 42deff43460a
parent 20040 ed80cecdfc57
child 20045 b3684fd2ff1a
equal deleted inserted replaced
20040:ed80cecdfc57 20041:42deff43460a
    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
   104 
   110 
   105 def setbeforeget(repo):
   111 def setbeforeget(repo):
   106     os.remove('x')
   112     os.remove('x')
   107     repo.cached = 'string set externally'
   113     repo.cached = 'string set externally'
   108     repo.invalidate()
   114     repo.invalidate()
       
   115     print "* file x doesn't exist"
   109     print repo.cached
   116     print repo.cached
   110     repo.invalidate()
   117     repo.invalidate()
   111     f = open('x', 'w')
   118     f = open('x', 'w')
   112     f.write('a')
   119     f.write('a')
   113     f.close()
   120     f.close()
       
   121     print "* file x created"
   114     print repo.cached
   122     print repo.cached
   115 
   123 
   116 print 'basic:'
   124 print 'basic:'
   117 print
   125 print
   118 basic(fakerepo())
   126 basic(fakerepo())