6
|
1 from commons.core.checker.ConfigChecker import ConfigChecker
|
|
2 from commons.core.checker.ConfigChecker import ConfigRules
|
|
3 from commons.core.checker.ConfigValue import ConfigValue
|
|
4 from commons.core.checker.RepetException import RepetException
|
|
5 import unittest
|
|
6 import os
|
|
7
|
|
8 class Test_F_ConfigChecker(unittest.TestCase):
|
|
9
|
|
10 #TODO: AJouter test (wrong type, etc..)
|
|
11 def setUp(self):
|
|
12 self._configFileName = "test_conf_checker"
|
|
13
|
|
14 def tearDown(self):
|
|
15 os.remove(self._configFileName)
|
|
16
|
|
17 def test_run(self):
|
|
18 iMock = MockConfig()
|
|
19 iMock.write_config(self._configFileName)
|
|
20
|
|
21 iConfigRules = ConfigRules()
|
|
22 iConfigRules.addRuleSection(section="dir_name", mandatory=True)
|
|
23 iConfigRules.addRuleOption(section="dir_name", option ="work_dir", mandatory=True)
|
|
24 iConfigRules.addRuleSection(section="organism", mandatory=True)
|
|
25 iConfigRules.addRuleOption(section="organism", option ="abbreviation", mandatory=True)
|
|
26 iConfigRules.addRuleOption(section="organism", option ="genus", mandatory=True)
|
|
27 iConfigRules.addRuleOption(section="organism", option ="species", mandatory=True)
|
|
28 iConfigRules.addRuleOption(section="organism", option ="common_name", mandatory=True)
|
|
29 iConfigRules.addRuleOption(section="organism", option ="comment")
|
|
30 iConfigRules.addRuleSection(section="analysis", mandatory=True, isPattern=True)
|
|
31 iConfigRules.addRuleOption(section="analysis", option ="name", mandatory=True)
|
|
32 iConfigRules.addRuleOption(section="analysis", option ="program", mandatory=True)
|
|
33 iConfigRules.addRuleOption(section="analysis", option ="sourcename", mandatory=True)
|
|
34 iConfigRules.addRuleOption(section="analysis", option ="description")
|
|
35 iConfigRules.addRuleOption(section="analysis", option ="gff_name")
|
|
36
|
|
37 iConfigChecker = ConfigChecker(self._configFileName,iConfigRules)
|
|
38
|
|
39 obsValidatedConfig = iConfigChecker.getConfig()
|
|
40
|
|
41 expValidatedConfig = ConfigValue()
|
|
42 d = {"dir_name" : {"work_dir":"toto"},
|
|
43 "organism" : {"abbreviation":"T.aestivum",
|
|
44 "genus":"triticum",
|
|
45 "species":"aestivum",
|
|
46 "common_name":"wheat",
|
|
47 "comment":""},
|
|
48 'analysis1': {'description': '',
|
|
49 'gff_name': 'BLASTX.gff2',
|
|
50 'name': 'BLASTXWheat2',
|
|
51 'program': 'BLASTX2',
|
|
52 'programversion': '3.32',
|
|
53 'sourcename': 'dummyDesc_BLASTX2'}
|
|
54 }
|
|
55 expValidatedConfig.setdOptionsValues4Sections(d)
|
|
56
|
|
57 self.assertEquals(expValidatedConfig, obsValidatedConfig)
|
|
58
|
|
59
|
|
60 def test_run_exception_section_missing(self):
|
|
61 iMock = MockConfig()
|
|
62 iMock.write_config_section_missing(self._configFileName)
|
|
63
|
|
64 iConfigRules = ConfigRules()
|
|
65 iConfigRules.addRuleSection(section="dir_name", mandatory=True)
|
|
66 iConfigRules.addRuleOption(section="dir_name", option ="work_dir", mandatory=True)
|
|
67 iConfigRules.addRuleSection(section="organism", mandatory=True)
|
|
68 iConfigRules.addRuleOption(section="organism", option ="abbreviation", mandatory=True)
|
|
69 iConfigRules.addRuleOption(section="organism", option ="genus", mandatory=True)
|
|
70 iConfigRules.addRuleOption(section="organism", option ="species", mandatory=True)
|
|
71 iConfigRules.addRuleOption(section="organism", option ="common_name", mandatory=True)
|
|
72 iConfigRules.addRuleOption(section="organism", option ="comment")
|
|
73 iConfigRules.addRuleSection(section="analysis", mandatory=True, isPattern=True)
|
|
74 iConfigRules.addRuleOption(section="analysis", option ="name", mandatory=True)
|
|
75 iConfigRules.addRuleOption(section="analysis", option ="program", mandatory=True)
|
|
76 iConfigRules.addRuleOption(section="analysis", option ="sourcename", mandatory=True)
|
|
77 iConfigRules.addRuleOption(section="analysis", option ="description")
|
|
78 iConfigRules.addRuleOption(section="analysis", option ="gff_name")
|
|
79
|
|
80 iConfigChecker = ConfigChecker(self._configFileName,iConfigRules)
|
|
81
|
|
82 expMessage = "Error in configuration file %s, following sections are missing:\n - organism\n"% self._configFileName
|
|
83
|
|
84 try :
|
|
85 obsValidatedConfig = iConfigChecker.getConfig()
|
|
86 except RepetException, e:
|
|
87 obsMessage = e.getMessage()
|
|
88
|
|
89 self.assertEquals(expMessage, obsMessage)
|
|
90
|
|
91
|
|
92 def test_run_exception_section_pattern_false(self):
|
|
93 iMock = MockConfig()
|
|
94 iMock.write_config(self._configFileName)
|
|
95
|
|
96 iConfigRules = ConfigRules()
|
|
97 iConfigRules.addRuleSection(section="dir_name", mandatory=True)
|
|
98 iConfigRules.addRuleOption(section="dir_name", option ="work_dir", mandatory=True)
|
|
99 iConfigRules.addRuleSection(section="organism", mandatory=True)
|
|
100 iConfigRules.addRuleOption(section="organism", option ="abbreviation", mandatory=True)
|
|
101 iConfigRules.addRuleOption(section="organism", option ="genus", mandatory=True)
|
|
102 iConfigRules.addRuleOption(section="organism", option ="species", mandatory=True)
|
|
103 iConfigRules.addRuleOption(section="organism", option ="common_name", mandatory=True)
|
|
104 iConfigRules.addRuleOption(section="organism", option ="comment")
|
|
105 iConfigRules.addRuleSection(section="analysis", mandatory=True)
|
|
106 iConfigRules.addRuleOption(section="analysis", option ="name", mandatory=True)
|
|
107 iConfigRules.addRuleOption(section="analysis", option ="program", mandatory=True)
|
|
108 iConfigRules.addRuleOption(section="analysis", option ="sourcename", mandatory=True)
|
|
109 iConfigRules.addRuleOption(section="analysis", option ="description")
|
|
110 iConfigRules.addRuleOption(section="analysis", option ="gff_name")
|
|
111
|
|
112 iConfigChecker = ConfigChecker(self._configFileName,iConfigRules)
|
|
113
|
|
114 expMessage = "Error in configuration file %s, following sections are missing:\n - analysis\n"% self._configFileName
|
|
115
|
|
116 try :
|
|
117 obsValidatedConfig = iConfigChecker.getConfig()
|
|
118 except RepetException, e:
|
|
119 obsMessage = e.getMessage()
|
|
120
|
|
121 self.assertEquals(expMessage, obsMessage)
|
|
122
|
|
123
|
|
124 def test_run_exception_option_missing(self):
|
|
125 iMock = MockConfig()
|
|
126 iMock.write_config_option_missing(self._configFileName)
|
|
127
|
|
128 iConfigRules = ConfigRules()
|
|
129 iConfigRules.addRuleSection(section="dir_name", mandatory=True)
|
|
130 iConfigRules.addRuleOption(section="dir_name", option ="work_dir", mandatory=True)
|
|
131 iConfigRules.addRuleSection(section="organism", mandatory=True)
|
|
132 iConfigRules.addRuleOption(section="organism", option ="abbreviation", mandatory=True)
|
|
133 iConfigRules.addRuleOption(section="organism", option ="genus", mandatory=True)
|
|
134 iConfigRules.addRuleOption(section="organism", option ="species", mandatory=True)
|
|
135 iConfigRules.addRuleOption(section="organism", option ="common_name", mandatory=True)
|
|
136 iConfigRules.addRuleOption(section="organism", option ="comment")
|
|
137 iConfigRules.addRuleSection(section="analysis", mandatory=True, isPattern=True)
|
|
138 iConfigRules.addRuleOption(section="analysis", option ="name", mandatory=True)
|
|
139 iConfigRules.addRuleOption(section="analysis", option ="program", mandatory=True)
|
|
140 iConfigRules.addRuleOption(section="analysis", option ="sourcename", mandatory=True)
|
|
141 iConfigRules.addRuleOption(section="analysis", option ="description")
|
|
142 iConfigRules.addRuleOption(section="analysis", option ="gff_name")
|
|
143
|
|
144 iConfigChecker = ConfigChecker(self._configFileName,iConfigRules)
|
|
145
|
|
146 expMessage = "Error in configuration file %s, following options are missing: \n - [organism]: abbreviation\n"% self._configFileName
|
|
147
|
|
148 try :
|
|
149 obsValidatedConfig = iConfigChecker.getConfig()
|
|
150 except RepetException, e:
|
|
151 obsMessage = e.getMessage()
|
|
152
|
|
153 self.assertEquals(expMessage, obsMessage)
|
|
154
|
|
155 class MockConfig (object):
|
|
156
|
|
157 def write_config(self, configFileName):
|
|
158 configF = open(configFileName, "w" )
|
|
159 configF.write( "[dir_name]\n")
|
|
160 configF.write( "work_dir : toto \n")
|
|
161 configF.write( "\n")
|
|
162 configF.write( "[organism]\n")
|
|
163 configF.write( "abbreviation: T.aestivum\n")
|
|
164 configF.write( "genus: triticum\n")
|
|
165 configF.write( "species: aestivum\n")
|
|
166 configF.write( "common_name: wheat\n")
|
|
167 configF.write( "comment: \n")
|
|
168 configF.write( "[analysis1]\n")
|
|
169 configF.write( "name: BLASTXWheat2\n")
|
|
170 configF.write( "program: BLASTX2\n")
|
|
171 configF.write( "programversion: 3.32\n")
|
|
172 configF.write( "sourcename: dummyDesc_BLASTX2\n")
|
|
173 configF.write( "description: \n")
|
|
174 configF.write( "gff_name: BLASTX.gff2\n")
|
|
175 configF.write( "\n")
|
|
176 configF.close()
|
|
177
|
|
178 def write_config_section_missing(self, configFileName):
|
|
179 configF = open(configFileName, "w" )
|
|
180 configF.write( "[dir_name]\n")
|
|
181 configF.write( "work_dir : toto \n")
|
|
182 configF.write( "\n")
|
|
183 configF.write( "[analysis1]\n")
|
|
184 configF.write( "name: BLASTXWheat2\n")
|
|
185 configF.write( "program: BLASTX2\n")
|
|
186 configF.write( "programversion: 3.32\n")
|
|
187 configF.write( "sourcename: dummyDesc_BLASTX2\n")
|
|
188 configF.write( "description: \n")
|
|
189 configF.write( "gff_name: BLASTX.gff2\n")
|
|
190 configF.write( "\n")
|
|
191 configF.close()
|
|
192
|
|
193 def write_config_option_missing(self, configFileName):
|
|
194 configF = open(configFileName, "w" )
|
|
195 configF.write( "[dir_name]\n")
|
|
196 configF.write( "work_dir : toto \n")
|
|
197 configF.write( "\n")
|
|
198 configF.write( "[organism]\n")
|
|
199 configF.write( "genus: triticum\n")
|
|
200 configF.write( "species: aestivum\n")
|
|
201 configF.write( "common_name: wheat\n")
|
|
202 configF.write( "comment: \n")
|
|
203 configF.write( "[analysis1]\n")
|
|
204 configF.write( "name: BLASTXWheat2\n")
|
|
205 configF.write( "program: BLASTX2\n")
|
|
206 configF.write( "programversion: 3.32\n")
|
|
207 configF.write( "sourcename: dummyDesc_BLASTX2\n")
|
|
208 configF.write( "description: \n")
|
|
209 configF.write( "gff_name: BLASTX.gff2\n")
|
|
210 configF.write( "\n")
|
|
211 configF.close()
|
|
212
|
|
213 if __name__ == "__main__":
|
|
214 unittest.main() |