global_config_unittest.py revision dca34e1b122659ecc4eaf885805a95a7e18f57e0
1#!/usr/bin/python2.4
2
3import os, sys
4import tempfile
5import unittest
6import types
7import global_config
8
9
10
11global_config_ini_contents = """
12[SECTION_A]
13value_1: 6.0
14value_2: hello
15value_3: true
16value_4: FALSE
17value_5: tRuE
18value_6: falsE
19
20[SECTION_B]
21value_1: -5
22value_2: 2.3
23value_3: 0
24value_4: 7
25
26[SECTION_C]
27value_1: nobody@localhost
28"""
29
30shadow_config_ini_contents = """
31[SECTION_C]
32value_1: somebody@remotehost
33"""
34
35
36def create_config_files():
37	(fp, global_file) = tempfile.mkstemp(".ini", text=True)
38	os.write(fp, global_config_ini_contents)
39	os.close(fp)
40
41	(fp, shadow_file) = tempfile.mkstemp(".ini", text=True)
42	os.write(fp, shadow_config_ini_contents)
43	os.close(fp)
44
45	return (global_file, shadow_file)
46
47
48class global_config_test(unittest.TestCase):
49	# grab the singelton
50	conf = global_config.global_config
51
52	def setUp(self):
53		# set the config files to our test files
54		(self.global_file, self.shadow_file) = create_config_files()
55		self.conf.set_config_files(self.global_file, self.shadow_file)
56
57
58	def tearDown(self):
59		os.remove(self.global_file)
60		os.remove(self.shadow_file)
61
62
63	def testFloat(self):
64		val = self.conf.get_config_value("SECTION_A", "value_1", float)
65		self.assertEquals(type(val), types.FloatType)
66		self.assertEquals(val, 6.0)
67
68
69	def testInt(self):
70		val = self.conf.get_config_value("SECTION_B", "value_1", int)
71		self.assertEquals(type(val), types.IntType)
72		self.assertTrue(val < 0)
73		val = self.conf.get_config_value("SECTION_B", "value_3", int)
74		self.assertEquals(val, 0)
75		val = self.conf.get_config_value("SECTION_B", "value_4", int)
76		self.assertTrue(val > 0)
77
78
79	def testString(self):
80		val = self.conf.get_config_value("SECTION_A", "value_2")
81		self.assertEquals(type(val),types.StringType)
82		self.assertEquals(val, "hello")
83
84
85	def testOverride(self):
86		val = self.conf.get_config_value("SECTION_C", "value_1")
87		self.assertEquals(val, "somebody@remotehost")
88
89
90	def testException(self):
91		error = 0
92		try:
93			val = self.conf.get_config_value("SECTION_B",
94							"value_2", int)
95		except:
96			error = 1
97		self.assertEquals(error, 1)
98
99
100	def testBoolean(self):
101		val = self.conf.get_config_value("SECTION_A", "value_3", bool)
102		self.assertEquals(val, True)
103		val = self.conf.get_config_value("SECTION_A", "value_4", bool)
104		self.assertEquals(val, False)
105		val = self.conf.get_config_value("SECTION_A", "value_5", bool)
106		self.assertEquals(val, True)
107		val = self.conf.get_config_value("SECTION_A", "value_6", bool)
108		self.assertEquals(val, False)
109
110
111	def testDefaults(self):
112		val = self.conf.get_config_value("MISSING", "foo", float, 3.6)
113		self.assertEquals(val, 3.6)
114		val = self.conf.get_config_value("SECTION_A", "novalue", str,
115							"default")
116		self.assertEquals(val, "default")
117
118
119# this is so the test can be run in standalone mode
120if __name__ == '__main__':
121	unittest.main()
122