~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_hashcache.py

  • Committer: Jelmer Vernooij
  • Date: 2011-02-26 15:39:49 UTC
  • mto: (5691.1.1 bzr.dev)
  • mto: This revision was merged to the branch mainline in revision 5692.
  • Revision ID: jelmer@samba.org-20110226153949-o0fk909b30g7z570
Fix the use of "bzr tags" in branches with ghosts in their mainline /and/ tags on revisions not in the branch ancestry.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006 Canonical Ltd
 
1
# Copyright (C) 2005-2009, 2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
import os
18
 
import sha
19
18
import stat
20
 
import sys
21
19
import time
22
20
 
 
21
from bzrlib import osutils
23
22
from bzrlib.errors import BzrError
24
23
from bzrlib.hashcache import HashCache
25
 
from bzrlib.tests import TestCaseInTempDir, TestSkipped, TestCase
 
24
from bzrlib.tests import (
 
25
    OsFifoFeature,
 
26
    TestCaseInTempDir,
 
27
    )
26
28
 
27
29
 
28
30
def sha1(t):
29
 
    return sha.new(t).hexdigest()
 
31
    return osutils.sha(t).hexdigest()
30
32
 
31
33
 
32
34
def pause():
111
113
 
112
114
    def test_hashcache_raise(self):
113
115
        """check that hashcache can raise BzrError"""
 
116
        self.requireFeature(OsFifoFeature)
114
117
        hc = self.make_hashcache()
115
 
        if not hasattr(os, 'mkfifo'):
116
 
            raise TestSkipped('filesystem fifos not supported on this system')
117
118
        os.mkfifo('a')
118
119
        # It's possible that the system supports fifos but the filesystem
119
120
        # can't.  In that case we should skip at this point.  But in fact
140
141
        abspath = './' + filename
141
142
        self._files[abspath] = (file_contents, self._clock)
142
143
 
143
 
    def _fingerprint(self, abspath):
 
144
    def _fingerprint(self, abspath, fs=None):
144
145
        entry = self._files[abspath]
145
146
        return (len(entry[0]),
146
147
                entry[1], entry[1],
147
148
                10, 20,
148
149
                stat.S_IFREG | 0600)
149
150
 
150
 
    def _really_sha1_file(self, abspath):
 
151
    def _really_sha1_file(self, abspath, filters):
151
152
        if abspath in self._files:
152
153
            return sha1(self._files[abspath][0])
153
154
        else:
159
160
    def pretend_to_sleep(self, secs):
160
161
        self._clock += secs
161
162
 
162
 
    
 
163
 
163
164
class TestHashCacheFakeFilesystem(TestCaseInTempDir):
164
165
    """Tests the hashcache using a simulated OS.
165
166
    """
174
175
        self.assertEquals(hc.get_sha1('foo'), sha1('hello'))
175
176
        self.assertEquals(hc.miss_count, 1)
176
177
        self.assertEquals(hc.hit_count, 0)
177
 
        # if we try again it's still too new; 
 
178
        # if we try again it's still too new;
178
179
        self.assertEquals(hc.get_sha1('foo'), sha1('hello'))
179
180
        self.assertEquals(hc.miss_count, 2)
180
181
        self.assertEquals(hc.hit_count, 0)