Mercurial > repos > yufei-luo > s_mart
diff commons/core/checker/test/Test_F_ConfigChecker.py @ 6:769e306b7933
Change the repository level.
author | yufei-luo |
---|---|
date | Fri, 18 Jan 2013 04:54:14 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commons/core/checker/test/Test_F_ConfigChecker.py Fri Jan 18 04:54:14 2013 -0500 @@ -0,0 +1,214 @@ +from commons.core.checker.ConfigChecker import ConfigChecker +from commons.core.checker.ConfigChecker import ConfigRules +from commons.core.checker.ConfigValue import ConfigValue +from commons.core.checker.RepetException import RepetException +import unittest +import os + +class Test_F_ConfigChecker(unittest.TestCase): + + #TODO: AJouter test (wrong type, etc..) + def setUp(self): + self._configFileName = "test_conf_checker" + + def tearDown(self): + os.remove(self._configFileName) + + def test_run(self): + iMock = MockConfig() + iMock.write_config(self._configFileName) + + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="dir_name", mandatory=True) + iConfigRules.addRuleOption(section="dir_name", option ="work_dir", mandatory=True) + iConfigRules.addRuleSection(section="organism", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="abbreviation", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="genus", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="species", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="common_name", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="comment") + iConfigRules.addRuleSection(section="analysis", mandatory=True, isPattern=True) + iConfigRules.addRuleOption(section="analysis", option ="name", mandatory=True) + iConfigRules.addRuleOption(section="analysis", option ="program", mandatory=True) + iConfigRules.addRuleOption(section="analysis", option ="sourcename", mandatory=True) + iConfigRules.addRuleOption(section="analysis", option ="description") + iConfigRules.addRuleOption(section="analysis", option ="gff_name") + + iConfigChecker = ConfigChecker(self._configFileName,iConfigRules) + + obsValidatedConfig = iConfigChecker.getConfig() + + expValidatedConfig = ConfigValue() + d = {"dir_name" : {"work_dir":"toto"}, + "organism" : {"abbreviation":"T.aestivum", + "genus":"triticum", + "species":"aestivum", + "common_name":"wheat", + "comment":""}, + 'analysis1': {'description': '', + 'gff_name': 'BLASTX.gff2', + 'name': 'BLASTXWheat2', + 'program': 'BLASTX2', + 'programversion': '3.32', + 'sourcename': 'dummyDesc_BLASTX2'} + } + expValidatedConfig.setdOptionsValues4Sections(d) + + self.assertEquals(expValidatedConfig, obsValidatedConfig) + + + def test_run_exception_section_missing(self): + iMock = MockConfig() + iMock.write_config_section_missing(self._configFileName) + + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="dir_name", mandatory=True) + iConfigRules.addRuleOption(section="dir_name", option ="work_dir", mandatory=True) + iConfigRules.addRuleSection(section="organism", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="abbreviation", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="genus", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="species", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="common_name", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="comment") + iConfigRules.addRuleSection(section="analysis", mandatory=True, isPattern=True) + iConfigRules.addRuleOption(section="analysis", option ="name", mandatory=True) + iConfigRules.addRuleOption(section="analysis", option ="program", mandatory=True) + iConfigRules.addRuleOption(section="analysis", option ="sourcename", mandatory=True) + iConfigRules.addRuleOption(section="analysis", option ="description") + iConfigRules.addRuleOption(section="analysis", option ="gff_name") + + iConfigChecker = ConfigChecker(self._configFileName,iConfigRules) + + expMessage = "Error in configuration file %s, following sections are missing:\n - organism\n"% self._configFileName + + try : + obsValidatedConfig = iConfigChecker.getConfig() + except RepetException, e: + obsMessage = e.getMessage() + + self.assertEquals(expMessage, obsMessage) + + + def test_run_exception_section_pattern_false(self): + iMock = MockConfig() + iMock.write_config(self._configFileName) + + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="dir_name", mandatory=True) + iConfigRules.addRuleOption(section="dir_name", option ="work_dir", mandatory=True) + iConfigRules.addRuleSection(section="organism", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="abbreviation", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="genus", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="species", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="common_name", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="comment") + iConfigRules.addRuleSection(section="analysis", mandatory=True) + iConfigRules.addRuleOption(section="analysis", option ="name", mandatory=True) + iConfigRules.addRuleOption(section="analysis", option ="program", mandatory=True) + iConfigRules.addRuleOption(section="analysis", option ="sourcename", mandatory=True) + iConfigRules.addRuleOption(section="analysis", option ="description") + iConfigRules.addRuleOption(section="analysis", option ="gff_name") + + iConfigChecker = ConfigChecker(self._configFileName,iConfigRules) + + expMessage = "Error in configuration file %s, following sections are missing:\n - analysis\n"% self._configFileName + + try : + obsValidatedConfig = iConfigChecker.getConfig() + except RepetException, e: + obsMessage = e.getMessage() + + self.assertEquals(expMessage, obsMessage) + + + def test_run_exception_option_missing(self): + iMock = MockConfig() + iMock.write_config_option_missing(self._configFileName) + + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="dir_name", mandatory=True) + iConfigRules.addRuleOption(section="dir_name", option ="work_dir", mandatory=True) + iConfigRules.addRuleSection(section="organism", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="abbreviation", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="genus", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="species", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="common_name", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="comment") + iConfigRules.addRuleSection(section="analysis", mandatory=True, isPattern=True) + iConfigRules.addRuleOption(section="analysis", option ="name", mandatory=True) + iConfigRules.addRuleOption(section="analysis", option ="program", mandatory=True) + iConfigRules.addRuleOption(section="analysis", option ="sourcename", mandatory=True) + iConfigRules.addRuleOption(section="analysis", option ="description") + iConfigRules.addRuleOption(section="analysis", option ="gff_name") + + iConfigChecker = ConfigChecker(self._configFileName,iConfigRules) + + expMessage = "Error in configuration file %s, following options are missing: \n - [organism]: abbreviation\n"% self._configFileName + + try : + obsValidatedConfig = iConfigChecker.getConfig() + except RepetException, e: + obsMessage = e.getMessage() + + self.assertEquals(expMessage, obsMessage) + +class MockConfig (object): + + def write_config(self, configFileName): + configF = open(configFileName, "w" ) + configF.write( "[dir_name]\n") + configF.write( "work_dir : toto \n") + configF.write( "\n") + configF.write( "[organism]\n") + configF.write( "abbreviation: T.aestivum\n") + configF.write( "genus: triticum\n") + configF.write( "species: aestivum\n") + configF.write( "common_name: wheat\n") + configF.write( "comment: \n") + configF.write( "[analysis1]\n") + configF.write( "name: BLASTXWheat2\n") + configF.write( "program: BLASTX2\n") + configF.write( "programversion: 3.32\n") + configF.write( "sourcename: dummyDesc_BLASTX2\n") + configF.write( "description: \n") + configF.write( "gff_name: BLASTX.gff2\n") + configF.write( "\n") + configF.close() + + def write_config_section_missing(self, configFileName): + configF = open(configFileName, "w" ) + configF.write( "[dir_name]\n") + configF.write( "work_dir : toto \n") + configF.write( "\n") + configF.write( "[analysis1]\n") + configF.write( "name: BLASTXWheat2\n") + configF.write( "program: BLASTX2\n") + configF.write( "programversion: 3.32\n") + configF.write( "sourcename: dummyDesc_BLASTX2\n") + configF.write( "description: \n") + configF.write( "gff_name: BLASTX.gff2\n") + configF.write( "\n") + configF.close() + + def write_config_option_missing(self, configFileName): + configF = open(configFileName, "w" ) + configF.write( "[dir_name]\n") + configF.write( "work_dir : toto \n") + configF.write( "\n") + configF.write( "[organism]\n") + configF.write( "genus: triticum\n") + configF.write( "species: aestivum\n") + configF.write( "common_name: wheat\n") + configF.write( "comment: \n") + configF.write( "[analysis1]\n") + configF.write( "name: BLASTXWheat2\n") + configF.write( "program: BLASTX2\n") + configF.write( "programversion: 3.32\n") + configF.write( "sourcename: dummyDesc_BLASTX2\n") + configF.write( "description: \n") + configF.write( "gff_name: BLASTX.gff2\n") + configF.write( "\n") + configF.close() + +if __name__ == "__main__": + unittest.main() \ No newline at end of file