#!/usr/bin/env python suba = 'subA' subb = 'subB' newa = 'newsubA' newb = 'newsubB' main_script=""" import foo print foo.function() """ fooA_script=""" def function(): return 'OK' """ fooB_script=""" import sys,os,traceback def function(): mydir = os.path.basename(os.getcwd()) exc = 'Trigger' try: raise exc except exc: tb = traceback.extract_tb(sys.exc_info()[2]) filename = tb[0][0] if filename.find(mydir)> -1: return 'OK' else: raise "Traceback filename not in dir `%s'"%mydir, filename """ import os,shutil,sys shutil.rmtree(suba, 1) shutil.rmtree(subb, 1) shutil.rmtree(newa, 1) shutil.rmtree(newb, 1) os.mkdir(suba) os.mkdir(subb) m = open(os.path.join(suba, 'main.py'), 'w') m.write(main_script) m.close() m = open(os.path.join(subb, 'main.py'), 'w') m.write(main_script) m.close() f = open(os.path.join(suba, 'foo.py'), 'w') f.write(fooA_script) f.close() f = open(os.path.join(subb, 'foo.py'), 'w') f.write(fooB_script) f.close() origdir = os.getcwd() def runtest(dir): origdir = os.getcwd() try: os.chdir(dir) sys.stdout.write('Running test in %s ... '%dir) sys.stdout.flush() os.system('python main.py') finally: os.chdir(origdir) def runtests(dirs): for dir in dirs: runtest(dir) ## First run to get the foo.pyc files in each dir runtests([suba, subb]) ## Now switch the directories print '---Swapping dirs---' os.rename(suba, newa) os.rename(subb, newb) ## Now run in each dir again runtests([newa, newb])

AltStyle によって変換されたページ (->オリジナル) /