~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_hashcache.py

[merge] Jamie Wilkinson, don't export .bzrignore

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
 
from bzrlib.selftest import InTempDir
 
17
import os
 
18
import sys
 
19
import time
 
20
from bzrlib.tests import TestCaseInTempDir
18
21
 
19
22
 
20
23
 
24
27
 
25
28
 
26
29
def pause():
27
 
    import time
 
30
    if False:
 
31
        return
 
32
    if sys.platform in ('win32', 'cygwin'):
 
33
        time.sleep(3)
 
34
        return
28
35
    # allow it to stabilize
29
36
    start = int(time.time())
30
37
    while int(time.time()) == start:
31
38
        time.sleep(0.2)
32
39
    
33
40
 
34
 
class TestHashCache(InTempDir):
 
41
class TestHashCache(TestCaseInTempDir):
35
42
 
36
43
    def test_hashcache(self):
37
44
        """Functional tests for hashcache"""
38
45
        from bzrlib.hashcache import HashCache
39
46
        import os
40
 
        import time
41
47
 
42
48
        # make a dummy bzr directory just to hold the cache
43
49
        os.mkdir('.bzr')
44
 
        hc = HashCache('.')
 
50
        hc = HashCache(u'.')
45
51
 
46
52
        file('foo', 'wb').write('hello')
47
53
        os.mkdir('subdir')
55
61
        # check we hit without re-reading
56
62
        self.assertEquals(hc.get_sha1('foo'),
57
63
                          'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d')
58
 
        self.assertEquals(hc.miss_count, 1)
59
 
        self.assertEquals(hc.hit_count, 1)
 
64
        ##self.assertEquals(hc.miss_count, 1)
 
65
        ##self.assertEquals(hc.hit_count, 1)
60
66
 
61
67
        # check again without re-reading
62
68
        self.assertEquals(hc.get_sha1('foo'),
63
69
                          'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d')
64
 
        self.assertEquals(hc.miss_count, 1)
65
 
        self.assertEquals(hc.hit_count, 2)
 
70
        ##self.assertEquals(hc.miss_count, 1)
 
71
        ##self.assertEquals(hc.hit_count, 2)
66
72
 
67
73
        # write new file and make sure it is seen
68
74
        file('foo', 'wb').write('goodbye')
69
75
        pause()
70
76
        self.assertEquals(hc.get_sha1('foo'),
71
77
                          '3c8ec4874488f6090a157b014ce3397ca8e06d4f')
72
 
        self.assertEquals(hc.miss_count, 2)
 
78
        ##self.assertEquals(hc.miss_count, 2)
73
79
 
74
80
        # quickly write new file of same size and make sure it is seen
75
81
        # this may rely on detection of timestamps that are too close
95
101
 
96
102
        # should now be safe to cache it if we reread them
97
103
        self.assertEquals(hc.get_sha1('foo'), sha1('g00dbye'))
98
 
        self.assertEquals(len(hc._cache), 1)
 
104
        ##self.assertEquals(len(hc._cache), 1)
99
105
        self.assertEquals(hc.get_sha1('foo2'), sha1('new content'))
100
 
        self.assertEquals(len(hc._cache), 2)
 
106
        ##self.assertEquals(len(hc._cache), 2)
101
107
 
102
108
        # write out, read back in and check that we don't need to
103
109
        # re-read any files
104
110
        hc.write()
105
111
        del hc
106
112
 
107
 
        hc = HashCache('.')
 
113
        hc = HashCache(u'.')
108
114
        hc.read()
109
115
 
110
 
        self.assertEquals(len(hc._cache), 2)
 
116
        ##self.assertEquals(len(hc._cache), 2)
111
117
        self.assertEquals(hc.get_sha1('foo'), sha1('g00dbye'))
112
 
        self.assertEquals(hc.hit_count, 1)
113
 
        self.assertEquals(hc.miss_count, 0)
 
118
        ##self.assertEquals(hc.hit_count, 1)
 
119
        ##self.assertEquals(hc.miss_count, 0)
114
120
        self.assertEquals(hc.get_sha1('foo2'), sha1('new content'))