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):
|