~ubuntu-branches/ubuntu/utopic/taskcoach/utopic-proposed

« back to all changes in this revision

Viewing changes to tests/unittests/persistenceTests/AutoBackupTest.py

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2014-08-15 14:54:44 UTC
  • mfrom: (8.1.7 sid)
  • Revision ID: package-import@ubuntu.com-20140815145444-qm2ya2zvy1pyrcl5
Tags: 1.4.0-1ubuntu1
* Merge with Debian; remaining changes:
  - Let the autopkg test depend on language-pack-en.
  - Build-depend on language-pack-en.
* Build using python-wxgtk3.0.
* Don't use /usr/share/pyshared anymore, it's gone.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
17
'''
18
18
 
19
 
import test
 
19
import test, os, shutil, bz2
20
20
from taskcoachlib import persistence, config
21
21
from taskcoachlib.domain import date, task
22
22
 
23
23
 
24
24
class DummyFile(object):
25
25
    encoding = 'utf-8'
 
26
    name = 'whatever.tsk'
26
27
    
27
28
    def close(self, *args, **kwargs): # pylint: disable=W0613
28
29
        pass
39
40
        return DummyFile()
40
41
    
41
42
    def _read(self, *args, **kwargs): # pylint: disable=W0613
42
 
        return [task.Task()], [], [], None, None
 
43
        return [task.Task()], [], [], None, dict(), None
43
44
    
44
45
    def exists(self):
45
46
        return True
46
47
    
47
48
    def filename(self):
48
49
        return super(DummyTaskFile, self).filename() or 'whatever.tsk'
49
 
            
 
50
 
 
51
 
 
52
class LocalSettings(config.Settings):
 
53
    def __init__(self, *args, **kwargs):
 
54
        self.__path = os.path.join(os.getcwd(), 'testdata')
 
55
        if os.path.exists(self.__path):
 
56
            shutil.rmtree(self.__path)
 
57
        os.mkdir(self.__path)
 
58
        super(LocalSettings, self).__init__(*args, **kwargs)
 
59
 
 
60
    def _pathToDataDir(self, *args, **kwargs):
 
61
        return self.__path, False
 
62
 
50
63
 
51
64
class AutoBackupTest(test.TestCase):
52
65
    # pylint: disable=E1101,E1002,W0232
53
66
    def setUp(self):
54
67
        super(AutoBackupTest, self).setUp()
55
 
        task.Task.settings = self.settings = config.Settings(load=False)
 
68
        task.Task.settings = self.settings = LocalSettings(load=False)
56
69
        self.taskFile = DummyTaskFile()
57
70
        self.backup = persistence.AutoBackup(self.settings, copyfile=self.onCopyFile)
58
71
        self.copyCalled = False
59
 
        
 
72
 
 
73
    def tearDown(self):
 
74
        super(AutoBackupTest, self).tearDown()
 
75
        self.taskFile.close()
 
76
        self.taskFile.stop()
 
77
        if os.path.exists('test.tsk'):
 
78
            os.remove('test.tsk')
 
79
 
60
80
    def onCopyFile(self, *args): # pylint: disable=W0613
61
81
        self.copyCalled = True
62
82
 
88
108
            [self.backup.backupFilename(self.taskFile, now=lambda: date.DateTime(2000,1,1,1,1,1))]
89
109
        files.sort()
90
110
        return files
91
 
        
 
111
 
 
112
    def testBackupMigrationManifest(self):
 
113
        self.taskFile.setFilename('test.tsk')
 
114
        self.backup.onTaskFileRead(self.taskFile)
 
115
        with file(os.path.join(self.settings.pathToBackupsDir(), 'backups.xml'), 'rb') as fp:
 
116
            content = fp.read()
 
117
        self.assertEqual(content, '<backupfiles><file sha="13cf6835565aaf4ab1f78e922b9917f9a4c7a856">test.tsk</file></backupfiles>')
 
118
 
 
119
    def testBackupMigration(self):
 
120
        self.taskFile.setFilename('test.tsk')
 
121
        with file('test.20140715-010203.tsk.bak', 'wb') as fp:
 
122
            fp.write('Hello, world')
 
123
        self.backup.onTaskFileRead(self.taskFile)
 
124
        self.failIf(os.path.exists('test.20140715-010203.tsk.bak'))
 
125
 
 
126
        backupName = os.path.join(self.settings.pathToBackupsDir(), '13cf6835565aaf4ab1f78e922b9917f9a4c7a856', '20140715010203.bak')
 
127
        self.failUnless(os.path.exists(backupName))
 
128
        self.assertEqual(bz2.BZ2File(backupName).read(), 'Hello, world')
 
129
 
92
130
    def testNoBackupFiles(self):
93
131
        self.assertEqual([], self.backup.backupFiles(self.taskFile, glob=lambda pattern: []))
94
132
 
116
154
 
117
155
    def testBackupFilename(self):
118
156
        now = date.DateTime(2004,1,1)
119
 
        self.assertEqual('whatever.20040101-000000.tsk.bak', 
120
 
            self.backup.backupFilename(self.taskFile, lambda: now)) # pylint: disable=W0212
121
 
        
122
 
    def testBackupFilenameOfBackupFilename(self):
123
 
        self.taskFile.setFilename('whatever.20040101-000000.tsk.bak')
124
 
        now = date.DateTime(2004,1,2)
125
 
        self.assertEqual('whatever.20040101-000000.20040102-000000.tsk.bak', 
 
157
        self.assertEqual(os.path.join(self.settings.pathToBackupsDir(), 'c81e25c3e04922232ab8eb87be8337c806a44209', '20040101000000.bak'),
126
158
            self.backup.backupFilename(self.taskFile, lambda: now)) # pylint: disable=W0212
127
159
 
128
160
    def testCreateBackupOnSave(self):
129
 
        self.settings.set('file', 'backup', 'True')
 
161
        self.taskFile.save()
 
162
        self.copyCalled = False
130
163
        self.taskFile.tasks().append(task.Task())
131
164
        self.taskFile.save()
132
165
        self.failUnless(self.copyCalled)
133
166
 
134
 
    def testCreateBackupOnSave_ButBackupOff(self):
135
 
        self.settings.set('file', 'backup', 'False')
136
 
        self.taskFile.tasks().append(task.Task())
137
 
        self.taskFile.save()
138
 
        self.failIf(self.copyCalled)
139
 
 
140
167
    def testDontCreateBackupOnOpen(self):
141
 
        self.settings.set('file', 'backup', 'True')
142
168
        self.taskFile.load()
143
169
        self.failIf(self.copyCalled)
144
170
        
145
171
    def testDontCreateBackupWhenSettingFilename(self):
146
 
        self.settings.set('file', 'backup', 'True')
147
172
        self.taskFile.setFilename('newname.tsk')
148
173
        self.failIf(self.copyCalled)
149
174