comparison bitten/tests/upgrades.py @ 860:ac28bc3feb2a

Refuse to create log folder during database upgrade if the folder already exists. The existence of such a folder is an indication that a previous attempt to migrate the logs into files has failed and that the folder should be removed before continuing. See #462 for further discussion.
author hodgestar
date Sun, 17 Oct 2010 23:20:44 +0000
parents ee95915922dd
children
comparison
equal deleted inserted replaced
859:d9f4c8d7599c 860:ac28bc3feb2a
12 12
13 import warnings 13 import warnings
14 warnings.filterwarnings('ignore', '^Unknown table') 14 warnings.filterwarnings('ignore', '^Unknown table')
15 warnings.filterwarnings('ignore', '^the sets module is deprecated') 15 warnings.filterwarnings('ignore', '^the sets module is deprecated')
16 16
17 from trac.core import TracError
17 from trac.test import EnvironmentStub 18 from trac.test import EnvironmentStub
18 from trac.db import Table, Column, Index, DatabaseManager 19 from trac.db import Table, Column, Index, DatabaseManager
19 from bitten.upgrades import update_sequence, drop_index 20 from bitten.upgrades import update_sequence, drop_index
20 from bitten import upgrades, main, model 21 from bitten import upgrades, main, model
21 22
40 self.env.path = tempfile.mkdtemp() 41 self.env.path = tempfile.mkdtemp()
41 logs_dir = self.env.config.get("bitten", "logs_dir", "log/bitten") 42 logs_dir = self.env.config.get("bitten", "logs_dir", "log/bitten")
42 if os.path.isabs(logs_dir): 43 if os.path.isabs(logs_dir):
43 raise ValueError("Should not have absolute logs directory for temporary test") 44 raise ValueError("Should not have absolute logs directory for temporary test")
44 logs_dir = os.path.join(self.env.path, logs_dir) 45 logs_dir = os.path.join(self.env.path, logs_dir)
45 if not os.path.isdir(logs_dir):
46 os.makedirs(logs_dir)
47 self.logs_dir = logs_dir 46 self.logs_dir = logs_dir
48 47
49 db = self.env.get_db_cnx() 48 db = self.env.get_db_cnx()
50 cursor = db.cursor() 49 cursor = db.cursor()
51 50
325 } 324 }
326 expected_deletions = [ 325 expected_deletions = [
327 "4.log.level", 326 "4.log.level",
328 ] 327 ]
329 328
329 os.makedirs(self.logs_dir)
330 for filename, data in logfiles.items(): 330 for filename, data in logfiles.items():
331 path = os.path.join(self.logs_dir, filename) 331 path = os.path.join(self.logs_dir, filename)
332 logfile = open(path, "w") 332 logfile = open(path, "w")
333 logfile.write(data) 333 logfile.write(data)
334 logfile.close() 334 logfile.close()
369 } 369 }
370 expected_deletions = [ 370 expected_deletions = [
371 "2.log.levels", 371 "2.log.levels",
372 ] 372 ]
373 373
374 os.makedirs(self.logs_dir)
374 for filename, data in logfiles.items(): 375 for filename, data in logfiles.items():
375 path = os.path.join(self.logs_dir, filename) 376 path = os.path.join(self.logs_dir, filename)
376 logfile = open(path, "w") 377 logfile = open(path, "w")
377 logfile.write(data) 378 logfile.write(data)
378 logfile.close() 379 logfile.close()
396 self.assertTrue(logs[0].getMessage().startswith( 397 self.assertTrue(logs[0].getMessage().startswith(
397 "Deleted 1 stray log levels (0 errors)")) 398 "Deleted 1 stray log levels (0 errors)"))
398 self.assertTrue(logs[1].getMessage().startswith( 399 self.assertTrue(logs[1].getMessage().startswith(
399 "Deleted stray log levels file 2.log.levels")) 400 "Deleted stray log levels file 2.log.levels"))
400 401
402 def test_migrate_logs_to_files_with_logs_dir(self):
403 os.makedirs(self.logs_dir)
404 self.assertRaises(TracError, upgrades.migrate_logs_to_files,
405 self.env, None)
406
401 407
402 def suite(): 408 def suite():
403 suite = unittest.TestSuite() 409 suite = unittest.TestSuite()
404 suite.addTest(unittest.makeSuite(UpgradeHelperTestCase, 'test')) 410 suite.addTest(unittest.makeSuite(UpgradeHelperTestCase, 'test'))
405 suite.addTest(unittest.makeSuite(UpgradeScriptsTestCase, 'test')) 411 suite.addTest(unittest.makeSuite(UpgradeScriptsTestCase, 'test'))
Copyright (C) 2012-2017 Edgewall Software