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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 TestCaseInTempDir, TestSkipped, TestCase
25
from bzrlib.tests import OsFifoFeature, TestCaseInTempDir, TestCase
29
return sha.new(t).hexdigest()
29
return osutils.sha(t).hexdigest()
112
112
def test_hashcache_raise(self):
113
113
"""check that hashcache can raise BzrError"""
114
self.requireFeature(OsFifoFeature)
114
115
hc = self.make_hashcache()
115
if not hasattr(os, 'mkfifo'):
116
raise TestSkipped('filesystem fifos not supported on this system')
118
117
# It's possible that the system supports fifos but the filesystem
119
118
# can't. In that case we should skip at this point. But in fact
140
139
abspath = './' + filename
141
140
self._files[abspath] = (file_contents, self._clock)
143
def _fingerprint(self, abspath):
142
def _fingerprint(self, abspath, fs=None):
144
143
entry = self._files[abspath]
145
144
return (len(entry[0]),
146
145
entry[1], entry[1],
148
147
stat.S_IFREG | 0600)
150
def _really_sha1_file(self, abspath):
149
def _really_sha1_file(self, abspath, filters):
151
150
if abspath in self._files:
152
151
return sha1(self._files[abspath][0])
174
173
self.assertEquals(hc.get_sha1('foo'), sha1('hello'))
175
174
self.assertEquals(hc.miss_count, 1)
176
175
self.assertEquals(hc.hit_count, 0)
177
# if we try again it's still too new;
176
# if we try again it's still too new;
178
177
self.assertEquals(hc.get_sha1('foo'), sha1('hello'))
179
178
self.assertEquals(hc.miss_count, 2)
180
179
self.assertEquals(hc.hit_count, 0)