Revision a9d68e40 test/ganeti.utils.io_unittest.py
b/test/ganeti.utils.io_unittest.py | ||
---|---|---|
234 | 234 |
|
235 | 235 |
class TestWriteFile(unittest.TestCase): |
236 | 236 |
def setUp(self): |
237 |
self.tmpdir = None |
|
237 | 238 |
self.tfile = tempfile.NamedTemporaryFile() |
238 | 239 |
self.did_pre = False |
239 | 240 |
self.did_post = False |
240 | 241 |
self.did_write = False |
241 | 242 |
|
243 |
def tearDown(self): |
|
244 |
if self.tmpdir: |
|
245 |
shutil.rmtree(self.tmpdir) |
|
246 |
|
|
242 | 247 |
def markPre(self, fd): |
243 | 248 |
self.did_pre = True |
244 | 249 |
|
... | ... | |
260 | 265 |
self.assertRaises(errors.ProgrammerError, utils.WriteFile, |
261 | 266 |
self.tfile.name, data="test", atime=0) |
262 | 267 |
|
263 |
def testCalls(self): |
|
264 |
utils.WriteFile(self.tfile.name, fn=self.markWrite, |
|
265 |
prewrite=self.markPre, postwrite=self.markPost) |
|
268 |
def testPreWrite(self): |
|
269 |
utils.WriteFile(self.tfile.name, data="", prewrite=self.markPre) |
|
266 | 270 |
self.assertTrue(self.did_pre) |
271 |
self.assertFalse(self.did_post) |
|
272 |
self.assertFalse(self.did_write) |
|
273 |
|
|
274 |
def testPostWrite(self): |
|
275 |
utils.WriteFile(self.tfile.name, data="", postwrite=self.markPost) |
|
276 |
self.assertFalse(self.did_pre) |
|
267 | 277 |
self.assertTrue(self.did_post) |
278 |
self.assertFalse(self.did_write) |
|
279 |
|
|
280 |
def testWriteFunction(self): |
|
281 |
utils.WriteFile(self.tfile.name, fn=self.markWrite) |
|
282 |
self.assertFalse(self.did_pre) |
|
283 |
self.assertFalse(self.did_post) |
|
268 | 284 |
self.assertTrue(self.did_write) |
269 | 285 |
|
270 | 286 |
def testDryRun(self): |
... | ... | |
293 | 309 |
finally: |
294 | 310 |
os.close(fd) |
295 | 311 |
|
312 |
def testNoLeftovers(self): |
|
313 |
self.tmpdir = tempfile.mkdtemp() |
|
314 |
self.assertEqual(utils.WriteFile(utils.PathJoin(self.tmpdir, "test"), |
|
315 |
data="abc"), |
|
316 |
None) |
|
317 |
self.assertEqual(os.listdir(self.tmpdir), ["test"]) |
|
318 |
|
|
319 |
def testFailRename(self): |
|
320 |
self.tmpdir = tempfile.mkdtemp() |
|
321 |
target = utils.PathJoin(self.tmpdir, "target") |
|
322 |
os.mkdir(target) |
|
323 |
self.assertRaises(OSError, utils.WriteFile, target, data="abc") |
|
324 |
self.assertTrue(os.path.isdir(target)) |
|
325 |
self.assertEqual(os.listdir(self.tmpdir), ["target"]) |
|
326 |
self.assertFalse(os.listdir(target)) |
|
327 |
|
|
328 |
def testFailRenameDryRun(self): |
|
329 |
self.tmpdir = tempfile.mkdtemp() |
|
330 |
target = utils.PathJoin(self.tmpdir, "target") |
|
331 |
os.mkdir(target) |
|
332 |
self.assertEqual(utils.WriteFile(target, data="abc", dry_run=True), None) |
|
333 |
self.assertTrue(os.path.isdir(target)) |
|
334 |
self.assertEqual(os.listdir(self.tmpdir), ["target"]) |
|
335 |
self.assertFalse(os.listdir(target)) |
|
336 |
|
|
337 |
def testBackup(self): |
|
338 |
self.tmpdir = tempfile.mkdtemp() |
|
339 |
testfile = utils.PathJoin(self.tmpdir, "test") |
|
340 |
|
|
341 |
self.assertEqual(utils.WriteFile(testfile, data="foo", backup=True), None) |
|
342 |
self.assertEqual(utils.ReadFile(testfile), "foo") |
|
343 |
self.assertEqual(os.listdir(self.tmpdir), ["test"]) |
|
344 |
|
|
345 |
# Write again |
|
346 |
assert os.path.isfile(testfile) |
|
347 |
self.assertEqual(utils.WriteFile(testfile, data="bar", backup=True), None) |
|
348 |
self.assertEqual(utils.ReadFile(testfile), "bar") |
|
349 |
self.assertEqual(len(glob.glob("%s.backup*" % testfile)), 1) |
|
350 |
self.assertTrue("test" in os.listdir(self.tmpdir)) |
|
351 |
self.assertEqual(len(os.listdir(self.tmpdir)), 2) |
|
352 |
|
|
353 |
# Write again as dry-run |
|
354 |
assert os.path.isfile(testfile) |
|
355 |
self.assertEqual(utils.WriteFile(testfile, data="000", backup=True, |
|
356 |
dry_run=True), |
|
357 |
None) |
|
358 |
self.assertEqual(utils.ReadFile(testfile), "bar") |
|
359 |
self.assertEqual(len(glob.glob("%s.backup*" % testfile)), 1) |
|
360 |
self.assertTrue("test" in os.listdir(self.tmpdir)) |
|
361 |
self.assertEqual(len(os.listdir(self.tmpdir)), 2) |
|
362 |
|
|
296 | 363 |
|
297 | 364 |
class TestFileID(testutils.GanetiTestCase): |
298 | 365 |
def testEquality(self): |
Also available in: Unified diff