Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions semidbm/compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@


DATA_OPEN_FLAGS = os.O_RDWR | os.O_CREAT | os.O_APPEND
DATA_OPENRO_FLAGS = os.O_RDONLY
if sys.platform.startswith('win'):
# On windows we need to specify that we should be
# reading the file as a binary file so it doesn't
# change any line ending characters.
DATA_OPEN_FLAGS = DATA_OPEN_FLAGS | os.O_BINARY
DATA_OPENRO_FLAGS = DATA_OPENRO_FLAGS | os.O_BINARY
8 changes: 8 additions & 0 deletions semidbm/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,14 @@ def __delitem__(self, key):
def __setitem__(self, key, value):
self._method_not_allowed('setitem')

def _load_db(self):
self._index = self._load_index(self._data_filename)
self._data_fd = os.open(self._data_filename, compat.DATA_OPENRO_FLAGS)
self._current_offset = os.lseek(self._data_fd, 0, os.SEEK_END)

def _write_headers(self, filename):
pass

def sync(self):
self._method_not_allowed('sync')

Expand Down
5 changes: 5 additions & 0 deletions test_semidbm.py
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,11 @@ def test_remap_required(self):


class TestReadOnlyMode(SemiDBMTest):
def setUp(self):
super(TestReadOnlyMode, self).setUp()
db = semidbm.open(self.dbdir, 'c')
db.close()

def open_db_file(self, **kwargs):
return semidbm.open(self.dbdir, 'r', **kwargs)

Expand Down