summaryrefslogtreecommitdiffstats
path: root/tests/test-framework/checker/testrunner/testrunner.py
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@nokia.com>2011-03-08 20:46:27 +0100
committerTim Jenssen <tim.jenssen@nokia.com>2011-03-09 11:05:24 +0100
commit64391c88c7e1421dd146b528c4395c68049c4adb (patch)
treea9aca3608c546b134ad6d7d2ea8d164d0b008af0 /tests/test-framework/checker/testrunner/testrunner.py
parent76122d63eced0b083e3c2e701c069aa2a8db360f (diff)
moved some directories and adjusted the README
- also removed some unused projects under examples(updater, updaterplugin) - adjusted pro files to the new structure
Diffstat (limited to 'tests/test-framework/checker/testrunner/testrunner.py')
-rw-r--r--tests/test-framework/checker/testrunner/testrunner.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/tests/test-framework/checker/testrunner/testrunner.py b/tests/test-framework/checker/testrunner/testrunner.py
new file mode 100644
index 000000000..fcef00b02
--- /dev/null
+++ b/tests/test-framework/checker/testrunner/testrunner.py
@@ -0,0 +1,90 @@
+# -*- coding: utf-8 -*-
+import files, os, string, platform
+from testexception import TestException
+
+if ( platform.system() == "Windows" ):
+ import registry
+
+def makeAbsolutePath( path, relativeTo ):
+ if os.path.isabs( path ) or relativeTo == None:
+ return path
+ else:
+ return relativeTo + os.sep + path
+
+
+class TestRunner:
+ def __init__( self, testDir, basedir, result ):
+ self._testDir = testDir
+ self._basedir = basedir
+ self._result = result
+
+ def checkFile( self, name, size=-1, expectedMd5=None ):
+ try:
+ files.checkFileImpl( name, size, expectedMd5 )
+ except TestException as e:
+ self._result.addFailed( name, e.value )
+
+ def checkFileList( self, path ):
+ lineNum = 0
+ haveError = False
+ with open( path, 'r' ) as f:
+ while True:
+ line = f.readline()
+ lineNum += 1
+ if not line:
+ break
+ line = string.strip( line )
+ if len( line ) == 0:
+ continue
+ segments = string.split( line, ';' )
+ if len( segments ) == 3:
+ fp = makeAbsolutePath( segments[0], self._basedir )
+ try:
+ fs = int( segments[1] )
+ except ValueError:
+ fs = -1 #TODO handle error
+ femd5 = segments[2]
+ femd5 = string.strip( femd5 )
+ self.checkFile( fp, fs, femd5 )
+ else:
+ self._result.addFailed( path + '_' + str( lineNum ), "Could not parse file list entry: " + line )
+ haveError = True
+ if not haveError:
+ self._result.addPassed( path, "" )
+
+ def checkRegistryList( self, path ):
+ haveError = False
+ lineNum = 0
+ with open( path, 'r' ) as f:
+ while True:
+ lineNum += 1
+ line = f.readline()
+ if not line:
+ break
+ line = string.strip( line )
+ if len( line ) == 0:
+ continue
+ segments = string.split( line, ';' )
+ if len( segments ) == 3:
+ key = segments[0].strip()
+ value = segments[1].strip()
+ expectedData = segments[2].strip()
+ registry.checkKey( key, value, expectedData )
+ else:
+ self._result.addFailed( path + '_' + str( lineNum ), "Could not parse registry list entry: " + line )
+ haveError = True
+ if not haveError:
+ self._result.addPassed( path, "" )
+
+ def run( self ):
+ fileLists = files.locateFiles( self._testDir, "*.filelist" )
+ for i in fileLists:
+ self.checkFileList( i )
+
+ if ( platform.system() == "Windows" ):
+ registryLists = files.locateFiles( self._testDir, "*.registrylist" )
+ for i in registryLists:
+ self.checkRegistryList( i )
+
+ # run all .py's in testdir
+ # execute all filelists