def test_readSuccessful(self): content = """<plist version="1.0"> <dict> <key>string</key> <string>foo</string> </dict> </plist>""" self.fp.setContent(PREAMBLE + content) config = ConfigDict() writable = WritableConfig(config, self.configFile) writable.read() self.assertEquals(writable.currentConfigSubset, {"string": "foo"})
def test_convertToValue(self): self.assertEquals(True, WritableConfig.convertToValue("True")) self.assertEquals(False, WritableConfig.convertToValue("False")) self.assertEquals(1, WritableConfig.convertToValue("1")) self.assertEquals(1.2, WritableConfig.convertToValue("1.2")) self.assertEquals("xyzzy", WritableConfig.convertToValue("xyzzy")) self.assertEquals("xy.zzy", WritableConfig.convertToValue("xy.zzy"))
def command_writeConfig(self, command): """ Write config to secondary, writable plist @param command: the dictionary parsed from the plist read from stdin @type command: C{dict} """ writable = WritableConfig(config, config.WritableConfigFile) writable.read() valuesToWrite = command.get("Values", {}) # Note: values are unicode if they contain non-ascii for keyPath, value in flattenDictionary(valuesToWrite): if keyPath in WRITABLE_CONFIG_KEYS: writable.set(setKeyPath(ConfigDict(), keyPath, value)) try: writable.save(restart=False) except Exception, e: self.respond(command, {"error": str(e)})
def test_processArgs(self): """ Ensure utf-8 encoded command line args are handled properly """ content = """<plist version="1.0"> <dict> <key>key1</key> <string>before</string> </dict> </plist>""" self.fp.setContent(PREAMBLE + content) config = ConfigDict() writable = WritableConfig(config, self.configFile) writable.read() processArgs(writable, ["key1=\xf0\x9f\x92\xa3"], restart=False) writable2 = WritableConfig(config, self.configFile) writable2.read() self.assertEquals(writable2.currentConfigSubset, {'key1': u'\U0001f4a3'})
def test_updates(self): content = """<plist version="1.0"> <dict> <key>key1</key> <string>before</string> <key>key2</key> <integer>10</integer> </dict> </plist>""" self.fp.setContent(PREAMBLE + content) config = ConfigDict() writable = WritableConfig(config, self.configFile) writable.read() writable.set({"key1": "after"}) writable.set({"key2": 15}) writable.set({"key2": 20}) # override previous set writable.set({"key3": ["a", "b", "c"]}) self.assertEquals(writable.currentConfigSubset, {"key1": "after", "key2": 20, "key3": ["a", "b", "c"]}) writable.save() writable2 = WritableConfig(config, self.configFile) writable2.read() self.assertEquals(writable2.currentConfigSubset, {"key1": "after", "key2": 20, "key3": ["a", "b", "c"]})
def test_updates(self): content = """<plist version="1.0"> <dict> <key>key1</key> <string>before</string> <key>key2</key> <integer>10</integer> </dict> </plist>""" self.fp.setContent(PREAMBLE + content) config = ConfigDict() writable = WritableConfig(config, self.configFile) writable.read() writable.set({"key1": "after"}) writable.set({"key2": 15}) writable.set({"key2": 20}) # override previous set writable.set({"key3": ["a", "b", "c"]}) self.assertEquals(writable.currentConfigSubset, { "key1": "after", "key2": 20, "key3": ["a", "b", "c"] }) writable.save() writable2 = WritableConfig(config, self.configFile) writable2.read() self.assertEquals(writable2.currentConfigSubset, { "key1": "after", "key2": 20, "key3": ["a", "b", "c"] })
def test_readInvalidXML(self): self.fp.setContent("invalid") config = ConfigDict() writable = WritableConfig(config, self.configFile) self.assertRaises(ExpatError, writable.read)