Mercurial > repos > yufei-luo > s_mart
diff commons/core/checker/test/Test_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_ConfigChecker.py Fri Jan 18 04:54:14 2013 -0500 @@ -0,0 +1,569 @@ +from commons.core.checker.ConfigChecker import ConfigChecker +from commons.core.checker.ConfigChecker import ConfigRules +from commons.core.checker.RepetException import RepetException +import os +import unittest + +class Test_ConfigChecker(unittest.TestCase): + + def setUp(self): + self._configFileName = "testConfigChecker.cfg" + self._iMock = MockConfig() + + def test_checkIfExistsConfigFile_file_exist(self): + f=open(self._configFileName, "w") + f.close() + + doesFileExists = True + iConfigRules = ConfigRules() + try: + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfigChecker.checkIfExistsConfigFile() + except RepetException: + doesFileExists = False + os.remove(self._configFileName) + self.assertTrue(doesFileExists) + + def test_checkIfExistsConfigFile_file_not_exist(self): + iConfigRules = ConfigRules() + expMsg ="CONFIG FILE not found - '%s'" %self._configFileName + doesFileExists = True + try: + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfigChecker.checkIfExistsConfigFile() + except RepetException, re: + doesFileExists = False + self.assertFalse(doesFileExists) + self.assertEqual(expMsg, re.getMessage()) + + def test_readConfigFile(self): + self._iMock.write_config(self._configFileName) + iConfigRules = ConfigRules() + expDictRawConfigValues = {"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'} + } + isNoExceptionRaised = True + try: + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + obsDictRawConfigValues = iConfigChecker._iRawConfig.dOptionsValues4Sections + except RepetException: + isNoExceptionRaised = False + os.remove(self._configFileName) + self.assertTrue(isNoExceptionRaised) + self.assertEquals(obsDictRawConfigValues, expDictRawConfigValues) + + def test_readConfigFile_section_define_twice(self): + self._iMock.write_case_section_define_twice(self._configFileName) + iConfigRules = ConfigRules() + expMsg = "Duplicate section exist in config file %s" %self._configFileName + expDictRawConfigValues = {"dir_name": {"work_dir":"toto"}, + "analysis1" : {"name": "BLASTXWheat2", + "program" : "BLASTX2", + "programversion" : "3.32", + "sourcename" :"dummyDesc_BLASTX2", + "description" : "", + "gff_name" :"BLASTX.gff2"} + } + doesNoExceptionRaised = True + try: + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + obsDictRawConfigValues = iConfigChecker._iRawConfig.dOptionsValues4Sections + except RepetException, re: + doesNoExceptionRaised = False + os.remove(self._configFileName) +# self.assertFalse(doesNoExceptionRaised) +# self.assertEqual(expMsg, re.getMessage()) +# + self.assertTrue(doesNoExceptionRaised) + self.assertEquals(obsDictRawConfigValues, expDictRawConfigValues) + + def test_readConfigFile_option_define_twice(self): + self._iMock.write_case_option_define_twice(self._configFileName) + iConfigRules = ConfigRules() + doesNoExceptionRaised = True + expDictRawConfigValues = {"dir_name": {"work_dir":"toto"}, + "analysis1" : {"name": "BLASTXWheat", + "program" : "BLASTX2", + "programversion" : "3.3", + "sourcename" :"dummyDesc_BLASTX", + "description" : "", + "gff_name" :"BLASTX.gff"} + } + try: + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + obsDictRawConfigValues = iConfigChecker._iRawConfig.dOptionsValues4Sections + except RepetException, re: + doesNoExceptionRaised = False + os.remove(self._configFileName) +## self.assertFalse(doesNoExceptionRaised) +## self.assertEqual(expMsg, re.getMessage()) + + self.assertTrue(doesNoExceptionRaised) + self.assertEquals(obsDictRawConfigValues, expDictRawConfigValues) + + def test_checkMandatorySections(self): + self._iMock.write_config(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="dir_name", mandatory=True) + iConfigRules.addRuleSection(section="organism", mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + areAllMandatorySectionsFound = True + try: + iConfigChecker.checkMandatorySections() + except RepetException: + areAllMandatorySectionsFound = False + os.remove(self._configFileName) + self.assertTrue(areAllMandatorySectionsFound) + + def test_checkMandatorySections_one_missing (self): + self._iMock.write_config(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="dir_name", mandatory=True) + iConfigRules.addRuleSection(section="target", mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + expMsg = "Error in configuration file %s, following sections are missing:\n - target\n"% self._configFileName + areAllMandatorySectionsFound = True + try: + iConfigChecker.checkMandatorySections() + except RepetException, re: + areAllMandatorySectionsFound = False + os.remove(self._configFileName) + self.assertFalse(areAllMandatorySectionsFound) + self.assertEquals(expMsg, re.getMessage()) + + def test_checkMandatorySections_mandatory_section_with_pattern_section_is_missing (self): + self._iMock.write_config(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="dir_name", mandatory=True) + iConfigRules.addRuleSection(section="mandatorySection", mandatory=True, isPattern = True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + expMsg = "Error in configuration file %s, following sections are missing:\n - mandatorySection\n"% self._configFileName + areAllMandatorySectionsFound = True + try: + iConfigChecker.checkMandatorySections() + except RepetException, re: + areAllMandatorySectionsFound = False + os.remove(self._configFileName) + self.assertFalse(areAllMandatorySectionsFound) + self.assertEquals(expMsg, re.getMessage()) + + def test_checkMandatorySections_mandatory_section_is_pattern (self): + self._iMock.write_case_pattern_rule(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="dir_name", mandatory=True) + iConfigRules.addRuleSection(section="analysis[0-9]*", mandatory=True, isPattern = True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + areAllMandatorySectionsFound = True + try: + iConfigChecker.checkMandatorySections() + except RepetException: + areAllMandatorySectionsFound = False + os.remove(self._configFileName) + self.assertTrue(areAllMandatorySectionsFound) + + def test_checkMandatoryOptions_in_mandatory_section (self): + self._iMock.write_config(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="organism", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="genus", mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + areAllMandatoryOptionsFound = True + try: + iConfigChecker.checkMandatoryOptions() + except RepetException: + areAllMandatoryOptionsFound = False + os.remove(self._configFileName) + self.assertTrue(areAllMandatoryOptionsFound) + + def test_checkMandatoryOptions_in_mandatory_section_option_is_missing (self): + self._iMock.write_config(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="organism", mandatory=True) + iConfigRules.addRuleOption(section="organism", option ="MissingOption", mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + expMsg = "Error in configuration file %s, following options are missing: \n - [organism]: MissingOption\n" % self._configFileName + areAllMandatoryOptionsFound = True + try: + iConfigChecker.checkMandatoryOptions() + except RepetException, re: + areAllMandatoryOptionsFound = False + os.remove(self._configFileName) + self.assertFalse(areAllMandatoryOptionsFound) + self.assertEquals(expMsg, re.getMessage()) + + def test_checkMandatoryOptions_in_non_mandatory_section_and_section_and_option_exist (self): + self._iMock.write_config(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleOption(section="organism", option ="genus", mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + areAllMandatoryOptionsFound = True + try: + iConfigChecker.checkMandatoryOptions() + except RepetException: + areAllMandatoryOptionsFound = False + os.remove(self._configFileName) + self.assertTrue(areAllMandatoryOptionsFound) + + def test_checkMandatoryOptions_in_non_mandatory_section_and_section_exist_option_is_missing (self): + self._iMock.write_config(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleOption(section="organism", option ="MissingOption", mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + expMsg = "Error in configuration file %s, following options are missing: \n - [organism]: MissingOption\n" % self._configFileName + areAllMandatoryOptionsFound = True + try: + iConfigChecker.checkMandatoryOptions() + except RepetException, re: + areAllMandatoryOptionsFound = False + os.remove(self._configFileName) + self.assertFalse(areAllMandatoryOptionsFound) + self.assertEquals(expMsg,re.getMessage()) + + def test_checkMandatoryOptions_in_non_mandatory_section_and_section_does_not_exist (self): + self._iMock.write_config(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleOption(section="NonExistingAndNonMandatorySection", option ="genus", mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + areAllMandatoryOptionsFound = True + try: + iConfigChecker.checkMandatoryOptions() + except RepetException: + areAllMandatoryOptionsFound = False + os.remove(self._configFileName) + self.assertTrue(areAllMandatoryOptionsFound) + + def test_checkMandatoryOptions_with_Pattern_rules_in_section (self): + self._iMock.write_case_pattern_rule(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="analysis", isPattern=True) + iConfigRules.addRuleOption(section="analysis", option ="name", mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + areAllMandatoryOptionsFound = True + try: + iConfigChecker.checkMandatoryOptions() + except RepetException: + areAllMandatoryOptionsFound = False + os.remove(self._configFileName) + self.assertTrue(areAllMandatoryOptionsFound) + + def test_checkMandatoryOptions_with_pattern_rules_in_option_section_is_mandatory (self): + self._iMock.write_case_pattern_rule(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="section_with_option_pattern", mandatory=True) + iConfigRules.addRuleOption(section="section_with_option_pattern", option ="option", isPattern= True, mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + areAllMandatoryOptionsFound = True + try: + iConfigChecker.checkMandatoryOptions() + except RepetException: + areAllMandatoryOptionsFound = False + os.remove(self._configFileName) + self.assertTrue(areAllMandatoryOptionsFound) + + def test_checkMandatoryOptions_with_pattern_rules_in_option_in_mandatory_section_option_is_missing (self): + self._iMock.write_case_pattern_rule(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="section_with_option_pattern", mandatory=True) + iConfigRules.addRuleOption(section="section_with_option_pattern", option ="MissingOption", isPattern= True, mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + expMsg = "Error in configuration file %s, following options are missing: \n - [section_with_option_pattern]: MissingOption\n" % self._configFileName + areAllMandatoryOptionsFound = True + try: + iConfigChecker.checkMandatoryOptions() + except RepetException, re: + areAllMandatoryOptionsFound = False + os.remove(self._configFileName) + self.assertFalse(areAllMandatoryOptionsFound) + self.assertEquals(expMsg, re.getMessage()) + + def test_checkMandatoryOptions_with_pattern_rules_in_non_mandatory_section_and_section_and_option_exist (self): + self._iMock.write_case_pattern_rule(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleOption(section="section_with_option_pattern", option ="option", isPattern= True, mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + areAllMandatoryOptionsFound = True + try: + iConfigChecker.checkMandatoryOptions() + except RepetException: + areAllMandatoryOptionsFound = False + os.remove(self._configFileName) + self.assertTrue(areAllMandatoryOptionsFound) + + def test_checkMandatoryOptions_with_pattern_rules_in_non_mandatory_section_and_section_exist_option_is_missing (self): + self._iMock.write_case_pattern_rule(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleOption(section="section_with_option_pattern", option ="MissingOption", isPattern= True, mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + expMsg = "Error in configuration file %s, following options are missing: \n - [section_with_option_pattern]: MissingOption\n" % self._configFileName + areAllMandatoryOptionsFound = True + try: + iConfigChecker.checkMandatoryOptions() + except RepetException, re: + areAllMandatoryOptionsFound = False + os.remove(self._configFileName) + self.assertFalse(areAllMandatoryOptionsFound) + self.assertEquals(expMsg,re.getMessage()) + + def test_checkMandatoryOptions_with_pattern_rules_in_non_mandatory_section_and_section_does_not_exist (self): + self._iMock.write_case_pattern_rule(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleOption(section="non_mandatory_section", option ="MissingOption", isPattern= True, mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + areAllMandatoryOptionsFound = True + try: + iConfigChecker.checkMandatoryOptions() + except RepetException: + areAllMandatoryOptionsFound = False + os.remove(self._configFileName) + self.assertTrue(areAllMandatoryOptionsFound) + + def test_checkMandatoryOptions_with_pattern_rules_for_both_section_and_option (self): + self._iMock.write_case_pattern_rule(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleSection(section="section_with_option_pattern", isPattern=True) + iConfigRules.addRuleOption(section="section_with_option_pattern", option ="option", isPattern= True, mandatory=True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + areAllMandatoryOptionsFound = True + try: + iConfigChecker.checkMandatoryOptions() + except RepetException: + areAllMandatoryOptionsFound = False + os.remove(self._configFileName) + self.assertTrue(areAllMandatoryOptionsFound) + + def test_checkMandatoryOptions_case(self): + self._iMock.write_config_case(self._configFileName) + iConfigRules = ConfigRules() + iConfigRules.addRuleSection("dir_name", True) + iConfigRules.addRuleSection("organism", True) + iConfigRules.addRuleOption("organism", "min_SSR_coverage", True) + iConfigChecker = ConfigChecker(self._configFileName, iConfigRules) + iConfig = iConfigChecker.readConfigFile() + iConfigChecker.setRawConfig(iConfig) + iConfigChecker.extendConfigRulesWithPatternRules() + areAllMandatorySectionsFound = True + try: + iConfigChecker.checkMandatoryOptions() + except RepetException: + areAllMandatorySectionsFound = False + os.remove(self._configFileName) + self.assertTrue(areAllMandatorySectionsFound) + +#TODO Test de extendConfigRulesWithPatternRules et de applyRuleToRawValue +# option avec une liste de valeurs possibles dans un ensemble +# option type=string type="num" type="date"???. +#option define twice and options use in other + +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_case_section_define_twice(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: BLASTXWheat\n") + configF.write( "program: BLASTX\n") + configF.write( "programversion: 3.3\n") + configF.write( "sourcename: dummyDesc_BLASTX\n") + configF.write( "description: \n") + configF.write( "gff_name: BLASTX.gff\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_case_option_define_twice(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: BLASTXWheat\n") + configF.write( "program: BLASTX\n") + configF.write( "programversion: 3.3\n") + configF.write( "sourcename: dummyDesc_BLASTX\n") + configF.write( "program: BLASTX2\n") + configF.write( "description: \n") + configF.write( "gff_name: BLASTX.gff\n") + configF.write( "\n") + configF.write( "\n") + configF.close() + + #configuration file with section with option depends on presence of other options + def write_with_one_option_depends_of_an_other_one(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( "\n") + configF.write( "[analysis1]\n") + configF.write( "name: BLASTXWheat\n") + configF.write( "program: BLASTX\n") + configF.write( "programversion: 3.3\n") + configF.write( "sourcename: src_BLASTX\n") + configF.write( "description: \n") + configF.write( "gff_name: BLASTX.gff\n") + configF.write( "\n") + configF.write( "[analysis2]\n") + configF.write( "name: GMHMMWheat\n") + configF.write( "program: GMHMM\n") + configF.write( "programversion: 4.3\n") + configF.write( "sourcename: src_GMHMM\n") + configF.write( "description: \n") + configF.write( "gff_name: GMHMM.gff\n") + configF.write( "\n") + configF.write( "[target]\n") + configF.write( "target_used: yes\n") + configF.write( "target_used_list: target.lst\n") + configF.close() + + def write_case_pattern_rule(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( "\n") + configF.write( "[analysis1]\n") + configF.write( "name: BLASTXWheat\n") + configF.write( "program: BLASTX\n") + configF.write( "programversion: 3.3\n") + configF.write( "sourcename: src_BLASTX\n") + configF.write( "description: \n") + configF.write( "gff_name: BLASTX.gff\n") + configF.write( "\n") + configF.write( "[analysis2]\n") + configF.write( "name: GMHMMWheat\n") + configF.write( "program: GMHMM\n") + configF.write( "programversion: 4.3\n") + configF.write( "sourcename: src_GMHMM\n") + configF.write( "description: \n") + configF.write( "gff_name: GMHMM.gff\n") + configF.write( "\n") + configF.write( "[target]\n") + configF.write( "target_used: yes\n") + configF.write( "target_used_list: target.lst\n") + configF.write( "\n") + configF.write( "[section_with_option_pattern]\n") + configF.write( "option1: value1\n") + configF.write( "option2: value2\n") + configF.write( "[second_section_with_option_pattern]\n") + configF.write( "option1: value1\n") + configF.write( "option2: value2\n") + configF.close() + + def write_config_case(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( "min_SSR_coverage: 0.50\n") + configF.write( "\n") + configF.close() + +if __name__ == "__main__": + unittest.main() \ No newline at end of file