[CalendarServer-changes] [9377] CalendarServer/trunk/contrib/migration
source_changes at macosforge.org
source_changes at macosforge.org
Wed Jun 20 11:06:18 PDT 2012
Revision: 9377
http://trac.macosforge.org/projects/calendarserver/changeset/9377
Author: sagen at apple.com
Date: 2012-06-20 11:06:18 -0700 (Wed, 20 Jun 2012)
Log Message:
-----------
Don't choke on invalid launchd plists
Modified Paths:
--------------
CalendarServer/trunk/contrib/migration/calendarmigrator.py
CalendarServer/trunk/contrib/migration/test/test_migrator.py
Modified: CalendarServer/trunk/contrib/migration/calendarmigrator.py
===================================================================
--- CalendarServer/trunk/contrib/migration/calendarmigrator.py 2012-06-20 18:05:22 UTC (rev 9376)
+++ CalendarServer/trunk/contrib/migration/calendarmigrator.py 2012-06-20 18:06:18 UTC (rev 9377)
@@ -242,7 +242,8 @@
log("serveradmin exited with %d" % (ret,))
-def isServiceDisabled(source, service):
+def isServiceDisabled(source, service, launchdOverrides=LAUNCHD_OVERRIDES,
+ launchdPrefsDir=LAUNCHD_PREFS_DIR):
"""
Returns whether or not a service is disabled
@@ -251,19 +252,28 @@
@return: True if service is disabled, False if enabled
"""
- overridesPath = os.path.join(source, LAUNCHD_OVERRIDES)
+ overridesPath = os.path.join(source, launchdOverrides)
if os.path.isfile(overridesPath):
- overrides = readPlist(overridesPath)
try:
+ overrides = readPlist(overridesPath)
+ except Exception, e:
+ raise ServiceStateError("Could not parse %s : %s" %
+ (overridesPath, str(e)))
+
+ try:
return overrides[service]['Disabled']
except KeyError:
# Key is not in the overrides.plist, continue on
pass
- prefsPath = os.path.join(source, LAUNCHD_PREFS_DIR, "%s.plist" % service)
+ prefsPath = os.path.join(source, launchdPrefsDir, "%s.plist" % service)
if os.path.isfile(prefsPath):
- prefs = readPlist(prefsPath)
try:
+ prefs = readPlist(prefsPath)
+ except Exception, e:
+ raise ServiceStateError("Could not parse %s : %s" %
+ (prefsPath, str(e)))
+ try:
return prefs['Disabled']
except KeyError:
return False
Modified: CalendarServer/trunk/contrib/migration/test/test_migrator.py
===================================================================
--- CalendarServer/trunk/contrib/migration/test/test_migrator.py 2012-06-20 18:05:22 UTC (rev 9376)
+++ CalendarServer/trunk/contrib/migration/test/test_migrator.py 2012-06-20 18:06:18 UTC (rev 9377)
@@ -16,7 +16,8 @@
import twistedcaldav.test.util
from contrib.migration.calendarmigrator import (
- mergePlist, examinePreviousSystem, relocateData, relativize
+ mergePlist, examinePreviousSystem, relocateData, relativize, isServiceDisabled,
+ ServiceStateError
)
import contrib.migration.calendarmigrator
@@ -1487,6 +1488,58 @@
self.assertEquals(da.mkdir(t), None)
+ def test_isServiceDisabledTrue(self):
+ CONTENTS = """<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>foo</key>
+ <dict>
+ <key>Disabled</key>
+ <true/>
+ </dict>
+</dict>
+</plist>
+"""
+ t = self.mktemp()
+ f = open(t, "w")
+ f.write(CONTENTS)
+ f.close()
+ self.assertTrue(isServiceDisabled("", "foo", t))
+
+ def test_isServiceDisabledFalse(self):
+ CONTENTS = """<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>foo</key>
+ <dict>
+ <key>Disabled</key>
+ <false/>
+ </dict>
+</dict>
+</plist>
+"""
+ t = self.mktemp()
+ f = open(t, "w")
+ f.write(CONTENTS)
+ f.close()
+ self.assertFalse(isServiceDisabled("", "foo", t))
+
+ def test_isServiceDisabledError(self):
+ CONTENTS = """This is not a plist """
+ t = self.mktemp()
+ f = open(t, "w")
+ f.write(CONTENTS)
+ f.close()
+ try:
+ isServiceDisabled("", "foo", t)
+ except ServiceStateError:
+ pass
+ else:
+ self.fail(msg="Didn't raise ServiceStateError")
+
+
class StubDiskAccessor(object):
"""
A stub which allows testing without actually having real files
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120620/ee6b55f6/attachment.html>
More information about the calendarserver-changes
mailing list