# Part of the A-A-P recipe executive: Testing of user scopes # Copyright (C) 2002-2003 Stichting NLnet Labs # Permission to copy and use this file is specified in the file COPYING. # If this file is missing you can find it here: http://www.a-a-p.org/COPYING import sys, os, stat, shutil, string def runaap(args): res = os.system("%s ..%sMain.py %s" % (sys.argv[1], os.sep, args)) if res: print "Aap exited with error value %d" % res return res os.chdir("rectest") # Create a recipe to test whether the recipe scope is passed to build commands # and reading a local variable before it is written results in a warning. rec1 = "rectest1.aap" rec2 = "rectest2.aap" aapout = "rectest.aap.out" def cleanup(): for n in [ rec1, rec2, aapout ]: try: os.remove(n) except: pass cleanup() f = open(rec1, "w") f.write(""" var1 = toplevel sc1.var1 = scope1 @try: var1.test = some @except: :print correctly caught scope error :child %s :print from child: $sc2.var1 @try: :print $sc1 @except: :print correctly caught scope used as var all: sc3.var1 = all :update some :print all: $sc4.var1 """ % (rec2)) f.close() # Included recipe. f = open(rec2, "w") f.write(""" sc2.var1 = child :print child: $var1 $sc1.var1 some {virtual}: :print some: $var1 $sc1.var1 $sc2.var1 $sc3.var1 sc4.var1 = some """) f.close() def check_contents(fname, expected): f = open(fname) actual = f.read() f.close() if actual != expected: print ('File contents wrong for "%s":\n%s\n--- instead of ---\n%s\n---' % (fname, actual, expected)) return 1 return 0 # The first time running should result in two files being copied. res = runaap("-f %s > %s" % (rec1, aapout)) failed = res + check_contents(aapout, """correctly caught scope error child: toplevel scope1 from child: child correctly caught scope used as var some: toplevel scope1 child all all: some """) cleanup() sys.exit(failed) # vim: set sw=4 et sts=4 tw=79 fo+=l: