#!/usr/bin/env python # -*- coding: Latin-1 -*- ## def syntax(): print "syntax: python runner.py Win32|x64|all" ## r"""runner.py - run some tests on the exiv2 build""" ## import sys import os.path ## def Q(path): return '"' + path + '"' ## ## def System(cmd): # print "System ",cmd sys.stdout.flush() os.system(cmd) ## def exe(path,option): """exe - handle exiv2.exe file""" if os.path.basename(path)=='exiv2.exe': # print "testing ",path testimages=os.path.realpath('testimages') tif=os.path.join(testimages,'test.tiff') png=os.path.join(testimages,'test.png') jpg=os.path.join(testimages,'test.jpg') System(path + " -V") System(path + " -pt "+Q(tif) + '2>NUL | grep Original') System(path + " -pt "+Q(png) + '2>NUL | grep Original') System(path + " -pt "+Q(jpg) + '2>NUL | grep Original') System(path + " -pt "+Q(jpg) ) ## ## def dll(path,option): """dll - handle a .dll file""" if os.path.basename(path) in ('exiv2.exe,exiv2.dll','exiv2d.dll','libexpat.dll','zlib1.dll','zlib1d.dll'): # print "testing ",path bits=32 if path.find('Win32')>=0 else 64 depends='tools/bin/depends%d.exe' % (bits) depends=os.path.realpath( depends ) System(depends + ' -q ' + path + ' | sort') ## ## def visit(myData, directoryName, filesInDirectory): # called for each dir """visit - called by os.path.walk""" # print "in visitor",directoryName, "myData = ",myData # print "filesInDirectory => ",filesInDirectory for filename in filesInDirectory: # do non-dir files here pathname = os.path.join(directoryName, filename) if not os.path.isdir(pathname): global paths paths.append(pathname) ## ## def handle(paths,handlers): for path in sorted(paths): ext=os.path.splitext(path)[1].lower() if handlers.has_key(ext): handlers[ext](path,option) ## ## def runner(option): """runner -option == None, means both x64 and Win32""" if option in set(['x64','Win32',None]): directory = os.path.abspath(os.path.dirname(sys.argv[0])) directory = os.path.join(directory,"bin") if option: directory = os.path.join(directory,option) global paths paths=[] os.path.walk(directory, visit, None) handle(paths,{ '.exe' : exe } ) handle(paths,{ '.dll' : dll } ) handle(paths,{ '.exe' : dll } ) else: syntax() ## ## if __name__ == '__main__': argc = len(sys.argv) syntaxError = argc < 2 if not syntaxError: option='all' if argc>1: option=sys.argv[1].lower() options = { 'x64' : 'x64' , 'x86' : 'Win32' , 'win32' : 'Win32' , 'all' : None , 'both' : None } syntaxError = not options.has_key(option) if not syntaxError: runner(options[option]) if syntaxError: syntax() # That's all Folks! ##