stif/TestEngine/src/TestEngine.cpp
branchRCL_3
changeset 8 cfe32394fcd5
parent 0 a03f92240627
child 10 381827f66490
--- a/stif/TestEngine/src/TestEngine.cpp	Mon Mar 15 12:46:13 2010 +0200
+++ b/stif/TestEngine/src/TestEngine.cpp	Thu Apr 01 00:00:49 2010 +0300
@@ -1351,7 +1351,12 @@
 
         SetLoggerSettings( loggerSettings ) ;
 
-        ReadTestModulesL( parser );
+        TRAP(r, ReadTestModulesL( parser ));
+        if(r != KErrNone)
+            {
+            __TRACE(KError, (CStifLogger::ERed, _L("Reading test modules finished with error [%d]"), r));
+            User::Leave(r);
+            }
 
         CleanupStack::PopAndDestroy( settings );
         CleanupStack::PopAndDestroy( parser );
@@ -1830,8 +1835,11 @@
 
     sectionParser = aParser->SectionL(aSectionStart, aSectionEnd);
 
+    TBool sectionOK;
+
     while(sectionParser)
         {
+        sectionOK = ETrue;
         __TRACE(KInit, (_L("Found '%S' and '%S' sections"), &aSectionStart, &aSectionEnd));
         CleanupStack::PushL(sectionParser);
         __TRACE(KInit, (_L("Starting to read module information")));
@@ -1842,121 +1850,130 @@
         CleanupStack::PushL(item);
         if(!item)
             {
-            CleanupStack::PopAndDestroy(item);
-            __TRACE(KError, (CStifLogger::ERed, _L("'%S' not found from Module section"), &KModuleName));
-            LeaveIfErrorWithNotify(KErrNotFound);
+            __TRACE(KError, (CStifLogger::ERed, _L("'%S' not found from Module section. Skipping whole section."), &KModuleName));
+            sectionOK = EFalse;
             }
         else
             {
             __TRACE(KInit, (_L("'%S' found"), &KModuleName));
             }
 
-        TPtrC name;
         TName moduleName;
         TInt ret(KErrNone);
-        ret = item->GetString(KModuleName, name);
-        if(ret != KErrNone)
-            {
-            CleanupStack::PopAndDestroy(item);
-            __TRACE(KError, (CStifLogger::ERed, _L("Module name parsing left with error %d"), ret));
-            LeaveIfErrorWithNotify(ret);
-            }
-        else
+
+        if(sectionOK)
             {
-            __TRACE(KInit, (_L("Module '%S' found from ini-file"), &name));
-            moduleName.Copy(name);
-            moduleName.LowerCase();
-            ret = aModuleList->AddTestModule(moduleName);
-            if(ret != KErrNone && ret != KErrAlreadyExists)
+            TPtrC name;
+            ret = item->GetString(KModuleName, name);
+            if(ret != KErrNone)
+                {
+                __TRACE(KError, (CStifLogger::ERed, _L("Module name parsing ended with error [%d]. Skipping whole section"), ret));
+                sectionOK = EFalse;
+                }
+            else
                 {
-                CleanupStack::PopAndDestroy(item);
-                __TRACE(KError, (CStifLogger::ERed, _L("Could not add module to list of modules. Error %d"), ret));
-                LeaveIfErrorWithNotify(ret);
-				}
+                __TRACE(KInit, (_L("Module '%S' found from ini-file"), &name));
+                moduleName.Copy(name);
+                moduleName.LowerCase();
+                ret = aModuleList->AddTestModule(moduleName);
+                if(ret != KErrNone && ret != KErrAlreadyExists)
+                    {
+                    CleanupStack::PopAndDestroy(item);
+                    __TRACE(KError, (CStifLogger::ERed, _L("Could not add module to list of modules. Error %d"), ret));
+                    LeaveIfErrorWithNotify(ret);
+                    }
+                }
             }
         CleanupStack::PopAndDestroy(item);
 
         //Get pointer to added module
-        CTestModuleInfo* moduleInfo = aModuleList->GetModule(moduleName);
-        if(!moduleInfo)
-            {
-            __TRACE(KError, (CStifLogger::ERed, _L("Could not add get module info from list")));
-            LeaveIfErrorWithNotify(KErrNotFound);
-			}
-
-        // Get ini file, if it exists
-        __TRACE(KInit, (_L("Start parsing ini file")));
-        _LIT(KIniFile, "IniFile=");
-        item = sectionParser->GetItemLineL(KIniFile);
-        if(item)
+        if(sectionOK)
             {
-            __TRACE(KInit, (_L("'%S' found"), &KIniFile));
-            CleanupStack::PushL(item);
-            TPtrC iniFile;
-            ret = item->GetString(KIniFile, iniFile);
-            if(ret == KErrNone)
+            CTestModuleInfo* moduleInfo = aModuleList->GetModule(moduleName);
+            if(!moduleInfo)
+                {
+                __TRACE(KError, (CStifLogger::ERed, _L("Could not add get module info from list")));
+                LeaveIfErrorWithNotify(KErrNotFound);
+                }
+    
+            // Get ini file, if it exists
+            __TRACE(KInit, (_L("Start parsing ini file")));
+            _LIT(KIniFile, "IniFile=");
+            item = sectionParser->GetItemLineL(KIniFile);
+            if(item)
                 {
-                // Module inifile (might be empty) OK
-                TFileName filename;
-                filename.Copy(iniFile);
-                TStifUtil::CorrectFilePathL( filename );
-                filename.LowerCase();
-                __TRACE(KInit, (CStifLogger::EBold, _L("Initialization file '%S' found, file can be empty"), &iniFile));
-                moduleInfo->SetIniFile(filename);
+                __TRACE(KInit, (_L("'%S' found"), &KIniFile));
+                CleanupStack::PushL(item);
+                TPtrC iniFile;
+                ret = item->GetString(KIniFile, iniFile);
+                if(ret == KErrNone)
+                    {
+                    // Module inifile (might be empty) OK
+                    TFileName filename;
+                    filename.Copy(iniFile);
+                    TStifUtil::CorrectFilePathL( filename );
+                    filename.LowerCase();
+                    __TRACE(KInit, (CStifLogger::EBold, _L("Initialization file '%S' found, file can be empty"), &iniFile));
+                    moduleInfo->SetIniFile(filename);
+                    }
+                else
+                    {
+                    __TRACE(KInit, (_L("Initialization file not found")));
+                    }
+                CleanupStack::PopAndDestroy(item);
                 }
             else
                 {
-                __TRACE(KInit, (_L("Initialization file not found")));
+                __TRACE(KInit, (_L("'%S' not found"), &KIniFile));
                 }
-            CleanupStack::PopAndDestroy(item);
+    
+            // Get config (testcase) file
+            __TRACE(KInit, (_L("Start parsing cfg files")));
+            TPtrC cfgTag;
+            for(TInt i = 0; i < 2; i++)
+                {
+                //Set tag for config files
+                if(i == 0)
+                    {
+                    cfgTag.Set(_L("ConfigFile="));
+                    }
+                    else
+                    {
+                    cfgTag.Set(_L("TestCaseFile="));
+                    }
+                //Read data
+                item = sectionParser->GetItemLineL(cfgTag);
+                while(item)
+                    {
+                    CleanupStack::PushL(item);
+                    __TRACE(KInit, (_L("Item '%S' found"), &cfgTag));
+                    TPtrC cfgFile;
+                    ret = item->GetString(cfgTag, cfgFile);
+                    if(ret == KErrNone)
+                        {
+                        TFileName ifile;
+                        ifile.Copy(cfgFile);
+                        TStifUtil::CorrectFilePathL( ifile );
+                        ifile.LowerCase();
+                        __TRACE(KInit, (_L("Configuration file '%S' found"), &ifile));
+                        moduleInfo->AddCfgFile(ifile);
+                        }
+                    else
+                        {
+                        __TRACE(KInit, (_L("Configuration file not found")));
+                        }
+                    CleanupStack::PopAndDestroy(item);
+                    item = sectionParser->GetNextItemLineL(cfgTag);
+                    }
+                }
+    
+            __TRACE(KInit, (_L("Module '%S' information read correctly"), &moduleName));
             }
         else
             {
-            __TRACE(KInit, (_L("'%S' not found"), &KIniFile));
+            __TRACE(KError, (_L("Module '%S' information skipped"), &moduleName));
             }
 
-        // Get config (testcase) file
-        __TRACE(KInit, (_L("Start parsing cfg files")));
-        TPtrC cfgTag;
-        for(TInt i = 0; i < 2; i++)
-            {
-            //Set tag for config files
-            if(i == 0)
-                {
-                cfgTag.Set(_L("ConfigFile="));
-                }
-                else
-                {
-                cfgTag.Set(_L("TestCaseFile="));
-                }
-            //Read data
-            item = sectionParser->GetItemLineL(cfgTag);
-            while(item)
-                {
-                CleanupStack::PushL(item);
-                __TRACE(KInit, (_L("Item '%S' found"), &cfgTag));
-                TPtrC cfgFile;
-                ret = item->GetString(cfgTag, cfgFile);
-                if(ret == KErrNone)
-                    {
-                    TFileName ifile;
-                    ifile.Copy(cfgFile);
-                    TStifUtil::CorrectFilePathL( ifile );
-                    ifile.LowerCase();
-                    __TRACE(KInit, (_L("Configuration file '%S' found"), &ifile));
-                    moduleInfo->AddCfgFile(ifile);
-                    }
-                else
-                    {
-                    __TRACE(KInit, (_L("Configuration file not found")));
-                    }
-                CleanupStack::PopAndDestroy(item);
-                item = sectionParser->GetNextItemLineL(cfgTag);
-                }
-            }
-
-        __TRACE(KInit, (_L("Module '%S' information read correctly"), &moduleName));
-
         // Get next section...
         CleanupStack::PopAndDestroy(sectionParser);
         sectionParser = aParser->NextSectionL(aSectionStart, aSectionEnd);
@@ -1998,7 +2015,12 @@
     _LIT(KTestModuleEnd, "[End_Module]");
 
     __TRACE(KInit, (_L("Starting to search module sections")));
-    ParseTestModulesL(aParser, moduleList, KTestModuleStart, KTestModuleEnd);
+    TRAPD(err, ParseTestModulesL(aParser, moduleList, KTestModuleStart, KTestModuleEnd));
+    if(err != KErrNone)
+        {
+        __TRACE(KError, (CStifLogger::ERed, _L("Parsing test modules returned error [%d]"), err));
+        User::Leave(err);
+        }
     __TRACE(KInit, (CStifLogger::EBold, _L("End parsing test modules")));
     __TRACE(KInit, (_L("")));