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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# Copyright (C) 2018 Patrick Totzke
# This file is released under the GNU GPL, version 3 or a later revision.
# For further details see the COPYING file
"""Test suite for alot.db.manager module."""
import tempfile
import textwrap
import os
import shutil
import unittest
from unittest import mock
from alot.db import manager
from alot.settings.const import settings
from notmuch import Database
from .. import utilities
class TestIsSubdirOf(unittest.TestCase):
def test_both_paths_absolute_matching(self):
superpath = '/a/b'
subpath = '/a/b/c/d.rst'
result = manager._is_subdir_of(subpath, superpath)
self.assertTrue(result)
def test_both_paths_absolute_not_matching(self):
superpath = '/a/z'
subpath = '/a/b/c/d.rst'
result = manager._is_subdir_of(subpath, superpath)
self.assertFalse(result)
def test_both_paths_relative_matching(self):
superpath = 'a/b'
subpath = 'a/b/c/d.rst'
result = manager._is_subdir_of(subpath, superpath)
self.assertTrue(result)
def test_both_paths_relative_not_matching(self):
superpath = 'a/z'
subpath = 'a/b/c/d.rst'
result = manager._is_subdir_of(subpath, superpath)
self.assertFalse(result)
def test_relative_path_and_absolute_path_matching(self):
superpath = 'a/b'
subpath = os.path.join(os.getcwd(), 'a/b/c/d.rst')
result = manager._is_subdir_of(subpath, superpath)
self.assertTrue(result)
class TestDBManager(utilities.TestCaseClassCleanup):
@classmethod
def setUpClass(cls):
# create temporary notmuch config
with tempfile.NamedTemporaryFile(mode='w+', delete=False) as f:
f.write(textwrap.dedent("""\
[maildir]
synchronize_flags = true
"""))
cls.notmuch_config_path = f.name
cls.addClassCleanup(os.unlink, f.name)
# define an empty notmuch database in a temporary directory
cls.dbpath = tempfile.mkdtemp()
cls.db = Database(path=cls.dbpath, create=True)
cls.db.close()
cls.manager = manager.DBManager(cls.dbpath)
# clean up temporary database
cls.addClassCleanup(cls.manager.kill_search_processes)
cls.addClassCleanup(shutil.rmtree, cls.dbpath)
# let global settings manager read our temporary notmuch config
settings.read_notmuch_config(cls.notmuch_config_path)
def test_save_named_query(self):
alias = 'key'
querystring = 'query string'
self.manager.save_named_query(alias, querystring)
self.manager.flush()
named_queries_dict = self.manager.get_named_queries()
self.assertDictEqual(named_queries_dict, {alias: querystring})
|