1
1
# Copyright (C) 2005, 2006 Canonical Ltd
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
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
11
# GNU General Public License for more details.
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
from bzrlib import osutils
23
23
from bzrlib.errors import BzrError
24
24
from bzrlib.hashcache import HashCache
25
from bzrlib.tests import OsFifoFeature, TestCaseInTempDir, TestCase
25
from bzrlib.tests import TestCaseInTempDir, TestSkipped, TestCase
29
return osutils.sha(t).hexdigest()
29
return sha.new(t).hexdigest()
112
112
def test_hashcache_raise(self):
113
113
"""check that hashcache can raise BzrError"""
114
self.requireFeature(OsFifoFeature)
115
114
hc = self.make_hashcache()
115
if not hasattr(os, 'mkfifo'):
116
raise TestSkipped('filesystem fifos not supported on this system')
117
118
# It's possible that the system supports fifos but the filesystem
118
119
# can't. In that case we should skip at this point. But in fact
139
140
abspath = './' + filename
140
141
self._files[abspath] = (file_contents, self._clock)
142
def _fingerprint(self, abspath, fs=None):
143
def _fingerprint(self, abspath):
143
144
entry = self._files[abspath]
144
145
return (len(entry[0]),
145
146
entry[1], entry[1],
147
148
stat.S_IFREG | 0600)
149
def _really_sha1_file(self, abspath, filters):
150
def _really_sha1_file(self, abspath):
150
151
if abspath in self._files:
151
152
return sha1(self._files[abspath][0])
173
174
self.assertEquals(hc.get_sha1('foo'), sha1('hello'))
174
175
self.assertEquals(hc.miss_count, 1)
175
176
self.assertEquals(hc.hit_count, 0)
176
# if we try again it's still too new;
177
# if we try again it's still too new;
177
178
self.assertEquals(hc.get_sha1('foo'), sha1('hello'))
178
179
self.assertEquals(hc.miss_count, 2)
179
180
self.assertEquals(hc.hit_count, 0)