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