Beispiel #1
0
	def load_config_and_cmd_line(self, argv=sys.argv[1:]):
		# we scan the command line first in case the user wants to
		# override the default config file location
		args, left_over = self.cmd_parser.parse_known_args(args=argv, namespace=SeqalConfig.Args())

		# load the config for this program, if the file exists
		config = SealConfigFile()

		# was a config file different from the default specified on the command line?
		try:
			if args.seal_config != self.cmd_parser.get_default("seal_config"):
				# in this case, make sure it exists and is readable
				if not os.path.exists(args.seal_config):
					raise SeqalConfigError("The specified Seal config file %s doens't exist" % args.seal_config)
				if not os.access(args.seal_config, os.R_OK):
					raise SeqalConfigError("The specified Seal config file %s isn't readable" % args.seal_config)
				config.read(args.seal_config) # no problems.  Load the file.
			else:
				# check the default path.  If the file exists and is readable we'll load it
				if os.path.exists(args.seal_config):
					if os.access(args.seal_config, os.R_OK):
						config.read(args.seal_config)
					else:
						print >>sys.stderr, "WARNING:  Seal config file %s exists but isn't readable" % args.seal_config
		except FormatError as e: # catch errors from parsing the config file
			raise SeqalConfigError("Error in Seal configuration file %s\n%s" % (args.seal_config, str(e)))

		# override configuration properties from file with the ones
		# provided on the command line.
		for name, value in config.items(SeqalConfig.ConfigSection):
			if not args.properties.has_key(name):
				args.properties[name] = value

		return args, left_over
	def setUp(self):
		self.emptyConfig = SealConfigFile()
		self.config = SealConfigFile()
Beispiel #3
0
 def setUp(self):
     self.emptyConfig = SealConfigFile()
     self.config = SealConfigFile()
class TestSealConfigFile(unittest.TestCase):

	CfgDefaultWithTitle = \
"""[DEFAULT]
key1:value1
key2:value2
"""

	CfgSection1 = \
"""[DEFAULT]
key1:value1
key2:value2
[ Section1 ]
keyS1: valueS1
"""

	CfgSection2 = \
"""[DEFAULT]
key1:value1
key2:value2
[ Section1 ]
keyS1: valueS1
[ Section2 ]
keyS2: valueS2
"""

	def setUp(self):
		self.emptyConfig = SealConfigFile()
		self.config = SealConfigFile()

	def test_empty(self):
		self.assertFalse( self.emptyConfig.has_section("bla") )
		self.assertTrue( self.emptyConfig.has_section("DEFAULT") )
		self.assertEqual(0, len(self.emptyConfig.sections()) )
		self.assertEqual(0, len(self.emptyConfig.items("non existent")))

	def test_default(self):
		self.config.readfp(io.BytesIO(self.__class__.CfgDefaultWithTitle))
		self.assertTrue( self.config.has_section("DEFAULT") )
		self.assertTrue( self.config.has_section("default") )
		self.assertTrue( self.config.has_section("deFAult") )

		items = self.config.items("anything")
		self.assertEqual(2, len(items))
		kv = dict(items)
		self.assertEqual(2, len(kv))
		self.assertEqual("value1", kv.get("key1"))
		self.assertEqual("value2", kv.get("key2"))

	def test_equals(self):
		self.config.readfp( io.BytesIO("key1=value1\n") )
		self.assertEqual("value1", self.config.get("default", "key1"))

	def test_colon(self):
		self.config.readfp( io.BytesIO("key1:value1\n") )
		self.assertEqual("value1", self.config.get("default", "key1"))

	def test_trim_key(self):
		self.config.readfp( io.BytesIO("    key1          :value1\n") )
		self.assertEqual("value1", self.config.get("default", "key1"))

	def test_trim_value(self):
		self.config.readfp( io.BytesIO("key1:     value1       \n") )
		self.assertEqual("value1", self.config.get("default", "key1"))

	def test_section1(self):
		self.config.readfp( io.BytesIO(self.__class__.CfgSection1) )
		self.assertEqual("value1", self.config.get("Section1", "key1"))
		self.assertEqual("valueS1", self.config.get("Section1", "keyS1"))

		kv = dict(self.config.items("Section1"))
		# make sure the iterator goes through all k-v pairs, even the ones inherited from DEFAULT
		self.assertEqual(3, len(kv))
		self.assertEqual("value1", kv.get("key1"))
		self.assertEqual("value2", kv.get("key2"))
		self.assertEqual("valueS1", kv.get("keyS1"))

	def test_section2(self):
		self.config.readfp( io.BytesIO(self.__class__.CfgSection2) )
		self.assertEqual("value1", self.config.get("Section1", "key1"))
		self.assertEqual("valueS1", self.config.get("Section1", "keyS1"))
		self.assertTrue( self.config.get("Section2", "keyS1") is None)
		self.assertEqual("valueS2", self.config.get("Section2", "keyS2"))

	def test_section_that_doesnt_exist(self):
		self.config.readfp( io.BytesIO(self.__class__.CfgSection1) )
		self.assertFalse( self.config.has_section("MySection") )
		self.assertTrue( self.config.get("MySection", "option") is None )

	def test_space_in_section_name(self):
		self.assertRaises(FormatError, self.config.readfp, io.BytesIO("[ Section 1 ]") )

	def test_hash_comment(self):
		self.config.readfp( io.BytesIO(" #key1=value1\nkey2=value2;\n") )
		self.assertTrue( self.config.get("default", "key1") is None)
		self.assertEqual("value2;", self.config.get("default", "key2"))

	def test_semi_colon_comment(self):
		self.config.readfp( io.BytesIO(" ;key1=value1\nkey2=value2;\n") )
		self.assertTrue( self.config.get("default", "key1") is None)
		self.assertEqual("value2;", self.config.get("default", "key2"))
Beispiel #5
0
class TestSealConfigFile(unittest.TestCase):

    CfgDefaultWithTitle = \
   """[DEFAULT]
key1:value1
key2:value2
"""

    CfgSection1 = \
   """[DEFAULT]
key1:value1
key2:value2
[ Section1 ]
keyS1: valueS1
"""

    CfgSection2 = \
   """[DEFAULT]
key1:value1
key2:value2
[ Section1 ]
keyS1: valueS1
[ Section2 ]
keyS2: valueS2
"""

    def setUp(self):
        self.emptyConfig = SealConfigFile()
        self.config = SealConfigFile()

    def test_empty(self):
        self.assertFalse(self.emptyConfig.has_section("bla"))
        self.assertTrue(self.emptyConfig.has_section("DEFAULT"))
        self.assertEqual(0, len(self.emptyConfig.sections()))
        self.assertEqual(0, len(self.emptyConfig.items("non existent")))

    def test_default(self):
        self.config.readfp(io.BytesIO(self.__class__.CfgDefaultWithTitle))
        self.assertTrue(self.config.has_section("DEFAULT"))
        self.assertTrue(self.config.has_section("default"))
        self.assertTrue(self.config.has_section("deFAult"))

        items = self.config.items("anything")
        self.assertEqual(2, len(items))
        kv = dict(items)
        self.assertEqual(2, len(kv))
        self.assertEqual("value1", kv.get("key1"))
        self.assertEqual("value2", kv.get("key2"))

    def test_equals(self):
        self.config.readfp(io.BytesIO("key1=value1\n"))
        self.assertEqual("value1", self.config.get("default", "key1"))

    def test_colon(self):
        self.config.readfp(io.BytesIO("key1:value1\n"))
        self.assertEqual("value1", self.config.get("default", "key1"))

    def test_trim_key(self):
        self.config.readfp(io.BytesIO("    key1          :value1\n"))
        self.assertEqual("value1", self.config.get("default", "key1"))

    def test_trim_value(self):
        self.config.readfp(io.BytesIO("key1:     value1       \n"))
        self.assertEqual("value1", self.config.get("default", "key1"))

    def test_section1(self):
        self.config.readfp(io.BytesIO(self.__class__.CfgSection1))
        self.assertEqual("value1", self.config.get("Section1", "key1"))
        self.assertEqual("valueS1", self.config.get("Section1", "keyS1"))

        kv = dict(self.config.items("Section1"))
        # make sure the iterator goes through all k-v pairs, even the ones inherited from DEFAULT
        self.assertEqual(3, len(kv))
        self.assertEqual("value1", kv.get("key1"))
        self.assertEqual("value2", kv.get("key2"))
        self.assertEqual("valueS1", kv.get("keyS1"))

    def test_section2(self):
        self.config.readfp(io.BytesIO(self.__class__.CfgSection2))
        self.assertEqual("value1", self.config.get("Section1", "key1"))
        self.assertEqual("valueS1", self.config.get("Section1", "keyS1"))
        self.assertTrue(self.config.get("Section2", "keyS1") is None)
        self.assertEqual("valueS2", self.config.get("Section2", "keyS2"))

    def test_section_that_doesnt_exist(self):
        self.config.readfp(io.BytesIO(self.__class__.CfgSection1))
        self.assertFalse(self.config.has_section("MySection"))
        self.assertTrue(self.config.get("MySection", "option") is None)

    def test_space_in_section_name(self):
        self.assertRaises(FormatError, self.config.readfp,
                          io.BytesIO("[ Section 1 ]"))

    def test_hash_comment(self):
        self.config.readfp(io.BytesIO(" #key1=value1\nkey2=value2;\n"))
        self.assertTrue(self.config.get("default", "key1") is None)
        self.assertEqual("value2;", self.config.get("default", "key2"))

    def test_semi_colon_comment(self):
        self.config.readfp(io.BytesIO(" ;key1=value1\nkey2=value2;\n"))
        self.assertTrue(self.config.get("default", "key1") is None)
        self.assertEqual("value2;", self.config.get("default", "key2"))