diff options
author | Tim Jenssen <tim.jenssen@nokia.com> | 2011-03-08 20:46:27 +0100 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@nokia.com> | 2011-03-09 11:05:24 +0100 |
commit | 64391c88c7e1421dd146b528c4395c68049c4adb (patch) | |
tree | a9aca3608c546b134ad6d7d2ea8d164d0b008af0 /tests/test-framework/checker/testrunner/testrunner.py | |
parent | 76122d63eced0b083e3c2e701c069aa2a8db360f (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.py | 90 |
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 |