forked from aosabook/500lines
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_integration.py
More file actions
73 lines (60 loc) · 1.93 KB
/
Copy pathtest_integration.py
File metadata and controls
73 lines (60 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import os
import os.path
import shutil
import subprocess
import tempfile
from nose.tools import assert_raises, eq_
import dbdb
import dbdb.tool
class TestDatabase(object):
def setup(self):
self.temp_dir = tempfile.mkdtemp()
self.new_tempfile_name = os.path.join(self.temp_dir, 'new.db')
self.tempfile_name = os.path.join(self.temp_dir, 'exisitng.db')
open(self.tempfile_name, 'w').close()
def teardown(self):
shutil.rmtree(self.temp_dir, ignore_errors=True)
def test_new_database_file(self):
db = dbdb.connect(self.new_tempfile_name)
db['a'] = 'aye'
db.commit()
db.close()
def test_persistence(self):
db = dbdb.connect(self.tempfile_name)
db['b'] = 'bee'
db['a'] = 'aye'
db['c'] = 'see'
db.commit()
db['d'] = 'dee'
eq_(len(db), 4)
db.close()
db = dbdb.connect(self.tempfile_name)
eq_(db['a'], 'aye')
eq_(db['b'], 'bee')
eq_(db['c'], 'see')
with assert_raises(KeyError):
db['d']
eq_(len(db), 3)
db.close()
class TestTool(object):
def setup(self):
with tempfile.NamedTemporaryFile(delete=False) as temp_f:
self.tempfile_name = temp_f.name
def teardown(self):
os.remove(self.tempfile_name)
def _tool(self, *args):
return subprocess.check_output(
['python', '-m', 'dbdb.tool', self.tempfile_name] + list(args),
stderr=subprocess.STDOUT,
)
def test_get_non_existent(self):
self._tool('set', 'a', b'b')
self._tool('delete', 'a')
with assert_raises(subprocess.CalledProcessError) as raised:
self._tool('get', 'a')
eq_(raised.exception.returncode, dbdb.tool.BAD_KEY)
def test_tool(self):
expected = b'b'
self._tool('set', 'a', expected)
actual = self._tool('get', 'a')
eq_(actual, expected)