adding TestON
diff --git a/TestON/core/testparser.py b/TestON/core/testparser.py
new file mode 100644
index 0000000..f158259
--- /dev/null
+++ b/TestON/core/testparser.py
@@ -0,0 +1,134 @@
+#!/usr/bin/env python
+'''
+Created on 26-Dec-2012
+
+@author: Anil Kumar (anilkumar.s@paxterrasolutions.com)
+
+
+ TestON is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ TestON is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with TestON. If not, see <http://www.gnu.org/licenses/>.
+
+
+'''
+import re
+import sys
+class TestParser:
+ def __init__(self,testFile):
+ try :
+ testFileHandler = open(testFile, 'r')
+ except IOError:
+ print "No such file "+testFile
+ sys.exit(0)
+
+ testFileList = testFileHandler.readlines()
+ self.testscript = testFileList
+ self.caseCode = {}
+ self.caseBlock = ''
+ self.statementsList = []
+ index = 0
+ self.statementsList = []
+ #initialSpaces = len(line) -len(line.lstrip())
+ while index < len(testFileList):
+ testFileList[index] = re.sub("^\s{8}|^\s{4}", "", testFileList[index])
+ # Skip multiline comments
+ if re.match('^(\'\'\')|^(\"\"\")',testFileList[index],0) :
+ index = index + 1
+ try :
+ while not re.match('^\s*(\'\'\')|^\s*(\"\"\")',testFileList[index],0) :
+ index = index + 1
+ except IndexError,e:
+ print ''
+
+
+ # skip empty lines and single line comments
+ elif not re.match('#|^\s*$',testFileList[index],0):
+ self.statementsList.append(testFileList[index])
+ index = index + 1
+
+ def case_code(self):
+ index = 0
+ statementsList = self.statementsList
+ while index < len(statementsList):
+ #print statementsList[index]
+ m= re.match('def\s+CASE(\d+)',statementsList[index],0)
+ self.caseBlock = []
+ if m:
+ #print m.group(1)
+ index = index + 1
+ try :
+ while not re.match('\s*def\s+CASE(\d+)',statementsList[index],0) :
+ self.caseBlock.append(statementsList[index])
+ if index < len(statementsList)-1:
+ index = index + 1
+ else :
+ break
+ index = index - 1
+ except IndexError,e:
+ #print 'IndexError'
+ print ''
+
+ self.caseCode [str(m.group(1))] = self.caseBlock
+ #print "Case CODE "+self.caseCode [str(m.group(1))]
+ index = index + 1
+
+ return self.caseCode
+
+ def step_code(self,caseStatements):
+ index = 0
+ step = 0
+ stepCode = {}
+ step_flag = False
+ while index < len(caseStatements):
+ m= re.match('main\.step',caseStatements[index],0)
+ stepBlock = ''
+ if m:
+ step_flag = True
+ if step == 0 :
+ i = 0
+ block = ''
+ while i <= index :
+ block += caseStatements[i]
+ i = i + 1
+ stepCode[step] = block
+ step = step + 1
+ stepBlock= stepBlock + caseStatements[index]
+ index = index + 1
+ try :
+ while not re.match('main\.step',caseStatements[index],0) :
+ stepBlock= stepBlock + caseStatements[index]
+ if index < len(caseStatements)-1:
+ index = index + 1
+ else :
+ break
+ index = index - 1
+ except IndexError,e:
+ #print 'IndexError'
+ print ''
+ stepCode[step] = stepBlock
+ step = step + 1
+ index = index + 1
+ # If there is no step defined !!
+ if not step_flag :
+ stepCode[step] = "".join(caseStatements)
+ return stepCode
+
+ def getStepCode(self):
+ case_step_code = {}
+ case_block = self.case_code()
+
+ for case in case_block :
+ case_step_code[case] = {}
+ step_block = self.step_code(case_block[case])
+ for step in step_block :
+ case_step_code[case][step] = step_block[step]
+ return case_step_code