270
270
result.addCallback(check_result)
273
def test_tweak_sets_dbus_start_script_with_no_post_install_scripts(self):
275
The L{ReleaseUpgrader.tweak} method adds to the upgrade-tool
276
configuration a little script that starts dbus after the upgrade. This
277
works even when the config file doesn't have a PostInstallScripts entry
280
config_filename = os.path.join(self.config.upgrade_tool_directory,
281
"DistUpgrade.cfg.dapper")
282
self.makeFile(path=config_filename, content="")
284
def check_result(ignored):
285
config = ConfigParser.ConfigParser()
286
config.read(config_filename)
287
self.assertEquals(config.get("Distro", "PostInstallScripts"),
289
dbus_sh = os.path.join(self.config.upgrade_tool_directory,
291
self.assertFileContent(dbus_sh,
293
"/etc/init.d/dbus start\n"
296
result = self.upgrader.tweak("dapper")
297
result.addCallback(check_result)
300
def test_default_logs_directory(self):
302
The default directory for the upgrade-tool logs is the system one.
304
self.assertEquals(self.upgrader.logs_directory,
305
"/var/log/dist-upgrade")
307
def test_default_logs_limit(self):
309
The default read limit for the upgrade-tool logs is 100000 bytes.
311
self.assertEquals(self.upgrader.logs_limit, 100000)
313
def test_make_operation_result_text(self):
315
L{ReleaseUpgrade.make_operation_result_text} aggregates the contents of
316
the process standard output, error and log files.
318
self.upgrader.logs_directory = self.makeDir()
319
self.makeFile(basename="main.log",
320
dirname=self.upgrader.logs_directory,
322
self.makeFile(basename="apt.log",
323
dirname=self.upgrader.logs_directory,
325
text = self.upgrader.make_operation_result_text("stdout", "stderr")
326
self.assertEquals(text,
327
"=== Standard output ===\n\n"
329
"=== Standard error ===\n\n"
331
"=== apt.log ===\n\n"
333
"=== main.log ===\n\n"
336
def test_make_operation_result_text_with_no_stderr(self):
338
L{ReleaseUpgrade.make_operation_result_text} skips the standard error
341
self.upgrader.logs_directory = self.makeDir()
342
text = self.upgrader.make_operation_result_text("stdout", "")
343
self.assertEquals(text,
344
"=== Standard output ===\n\n"
347
def test_make_operation_result_text_only_considers_log_files(self):
349
L{ReleaseUpgrade.make_operation_result_text} only considers log files
350
from the last upgrade-tool run, directories containing log files from
351
an older run are skipped.
353
self.upgrader.logs_directory = self.makeDir()
354
self.makeDir(dirname=self.upgrader.logs_directory)
355
text = self.upgrader.make_operation_result_text("stdout", "stderr")
356
self.assertEquals(text,
357
"=== Standard output ===\n\n"
359
"=== Standard error ===\n\n"
362
def test_make_operation_result_text_trims_long_files(self):
364
L{ReleaseUpgrade.make_operation_result_text} only reads the last
365
L{logs_limit} lines of a log file.
367
self.upgrader.logs_directory = self.makeDir()
368
self.upgrader.logs_limit = 8
369
self.makeFile(basename="main.log",
370
dirname=self.upgrader.logs_directory,
371
content="very long log")
372
text = self.upgrader.make_operation_result_text("stdout", "stderr")
373
self.assertEquals(text,
374
"=== Standard output ===\n\n"
376
"=== Standard error ===\n\n"
378
"=== main.log ===\n\n"
273
381
def test_upgrade(self):
275
383
The L{ReleaseUpgrader.upgrade} method spawns the appropropriate
276
384
upgrade-tool script and reports the result.
386
self.upgrader.logs_directory = self.makeDir()
278
387
upgrade_tool_directory = self.config.upgrade_tool_directory
279
388
upgrade_tool_filename = os.path.join(upgrade_tool_directory, "karmic")
280
389
fd = open(upgrade_tool_filename, "w")