srcanamdw_os/leavescan/test/LET/case2tef.py
changeset 0 83f4b4db085c
child 18 99082257a271
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/srcanamdw_os/leavescan/test/LET/case2tef.py	Tue Feb 02 01:39:43 2010 +0200
@@ -0,0 +1,200 @@
+#!/usr/bin/python
+import string
+import sys
+import os
+import re
+import time
+import sys
+import csv
+
+class TestcaseConfig:
+	def __init__(self):
+		self.desc =''
+		self.option =''
+		self.expect =''
+		self.warnItems =[]
+		self.author = ''
+		self.type = ''
+		self.date =''
+	def printSelf(self):
+		print 'desc:'+self.desc
+		print 'option:'+self.option
+		print 'author:'+self.author
+		print 'type:'+self.type
+		print 'date:'+self.date
+		print 'expect:'+self.expect
+		print 'check:'
+		for warnItem in self.warnItems:
+			print '	line:'+str(warnItem.line)
+			printType = 0;
+			if len(warnItem.checkExist)>0:
+				print '		checkExist'
+				printType +=1;
+				for checkWord in warnItem.checkExist:
+					print '				'+checkWord
+			if len(warnItem.checkNoExist)>0:
+				print '		checkNoExist'
+				printType +=1;
+				for checkWord in warnItem.checkNoExist:
+					print '				'+checkWord
+			if printType == 0:
+
+				print  '	nothing to check'
+
+class CheckPoint:
+	def __init__(self):
+		self.line = -1
+		self.checkExist=[]
+		self.checkNoExist=[]
+	def setCheckPoint(self,warnString):
+		warnString=warnString.strip()
+		if len(warnString)<=0:
+			return 
+		keywordList = warnString.split(',')
+		for keyword in keywordList:
+			keyword = keyword.strip()
+			if keyword[0]=='+':
+				self.checkExist.append(keyword[1:])
+			elif keyword[0]=='-':
+				self.checkNoExist.append(keyword[1:])
+			else:
+				self.checkExist.append(keyword)
+
+	def toString(self):
+		printType = 0;
+		res=''
+		res = res+'line:'+ str(self.line)+'\n'
+		if len(self.checkExist)>0:
+			res =res + '		checkExist\n'
+			printType +=1;
+			for checkWord in self.checkExist:
+				res =res+ '				'+checkWord+'\n'
+		if len(self.checkNoExist)>0:
+			res =res+ '		checkNoExist\n'
+			printType +=1;
+			for checkWord in self.checkNoExist:
+				res=res+ '				'+checkWord+'\n'
+		if printType == 0:
+			res=res+  '	nothing to check\n'
+		return res
+
+def get_case_name(value):
+	while value.find('\\\\') != -1:
+        	value = value.replace('\\\\', '\\')
+        	continue
+	while value.find('//') != -1:
+		value = value.replace('//', '\\')
+        	continue
+        while value.find('/') != -1:
+            	value = value.replace('/', '\\')
+            	continue
+	pos = value.rfind('\\')
+	value =  value[pos+1:]
+	pos = value.find('.')
+	return value[:pos]
+
+def get_testcase_config(fileName):
+	file = open(fileName,"r")
+	fileLine = 0
+	testcaseConfig = TestcaseConfig()
+	for line in file.readlines():
+		if not line.endswith('\\'):
+			fileLine += 1
+		line = line.strip()
+		scommnet = line.find('//')
+		if scommnet == 0:
+			if (line.find('desc:'))>0:
+				desc = line[line.find('desc:')+5:].strip()
+				testcaseConfig.desc=desc
+			elif line.find('option:')>0:
+				option = line[line.find('option:')+7:].strip()
+				testcaseConfig.option=option
+			elif line.find('expect file:')>0:
+				expect = line[line.find('expect file:')+12:].strip()
+				#get the content of the file
+				data = open(expect,"r")
+				for dataline in data.readlines():
+					testcaseConfig.expect += dataline
+			elif line.find('expect:')>0:
+				expect = line[line.find('expect:')+7:].strip()
+				testcaseConfig.expect=expect
+			elif line.find('author:')>0:
+				expect = line[line.find('author:')+7:].strip()
+				testcaseConfig.author=expect
+			elif line.find('type:')>0:
+				expect = line[line.find('type:')+5:].strip()
+				testcaseConfig.type=expect
+			elif line.find('date:')>0:
+				expect = line[line.find('date:')+5:].strip()
+				testcaseConfig.date=expect
+
+		if scommnet >=0:
+			line =line[scommnet+2:]
+			if line.find('check:')>=0:
+				line = line[line.find('check:')+6:].strip()
+				warnItem = CheckPoint()
+				warnItem.setCheckPoint(line)
+				warnItem.line = fileLine
+				testcaseConfig.warnItems.append(warnItem)
+	return testcaseConfig
+
+
+def comment_string(value):
+	lines = value.splitlines()
+	result = ''
+	for line in lines:
+		if line.find('@SYM')==0:
+			result += '//! ' + line+'\n'
+		else:	
+			result += '//!                           ' + line+'\n'
+	return result
+
+if __name__ == '__main__':
+	argv = sys.argv[1:]
+	if len(argv) >=1:
+		input_file_name = argv[0]
+	else:
+		print 'case2tef file_list_file'
+	if input_file_name == '-':
+		input_file = sys.stdin 
+	elif os.path.exists(input_file_name) and os.path.isfile(input_file_name):
+		input_file = open(input_file_name)
+	else:
+		input_file = None
+	if not input_file == None:
+		lines = input_file.readlines()
+		for line in lines:
+			while line.find('\n') != -1:
+        			line = line.replace('\n', '')
+        			continue
+
+			testcase_config =get_testcase_config(line)
+			case_name = get_case_name(line)
+			res = 'START_TESTCASE                '+case_name+'\n'
+			body = '@SYMTestCaseID            '    +case_name+'\n'
+			body+= '@SYMTestCaseDesc          '    +testcase_config.desc+'\n'
+			body+= '@SYMTestPriority          '    +'HIGH'+'\n'
+			body+= '@SYMTestActions           '    +'run LeaveScan command line'
+			if not testcase_config.option=='':
+				body+=' with option:'+testcase_config.option
+			body+='\n'
+			body+= '@SYMTestExpectedResults   '    +'Check the follwing:'+'\n'
+			if not testcase_config.expect=='':
+				body+='Output is:\n'
+				body+=testcase_config.expect+'\n'
+			if len(testcase_config.warnItems)>0:
+				body+='check the keyword of output\n'
+				for warnItem in testcase_config.warnItems:
+					body+= warnItem.toString()
+			body+= ''
+			body+= '@SYMTestType              '    +testcase_config.type+'\n'
+			body+= '@SYMCreationDate          '    +testcase_config.date+'\n'
+			body+= '@SYMAuthor                '    +testcase_config.author+'\n'
+			res += comment_string(body)
+			res += 'END_TESTCASE                  '+case_name+'\n'
+			res += '\n'
+			print res
+
+
+
+