# Part of the A-A-P recipe executive: Testing of :produce # 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 # # Note: this requires a working C compiler # import sys, os, shutil, glob def runaap(args): return os.system("%s ..%sMain.py %s" % (sys.argv[1], os.sep, args)) os.chdir("rectest") # Create a recipe with a different filetype for the target, so that a different # build action will be used. # Check that the right action is used. rec = "rectest.aap" inp = "rectest.c" prog = "rectestprog" myprog = "myrectestprog.exe" out = "rectest.out" msg = "Building %s done." % myprog def cleanup(): for file in [ rec, inp, prog, out, myprog ]: try: os.remove(file) except: pass try: for dir in glob.glob('build-*'): shutil.rmtree(dir) except: pass cleanup() f = open(rec, "w") f.write(""" targetattr = {targetsuffix = .exe} {targetprefix = my} {buildaction = dobuild} :produce myproggy {objectsuffix = $OBJSUF} {objecttype = object} $targetattr %s : %s :action dobuild myproggy object :do build {filetype = program} $source :print Building $-target done. """ % (prog, inp)) f.close() f = open(inp, "w") f.write(""" #include int main() { printf("Hello World!\\n"); return 0;} """) f.close() def doit(text): res = runaap("-f %s" % rec) f = open("AAPDIR/log") actual = f.read() f.close() import string if string.find(actual, text) < 0: res = 1 print 'Did not find remark in log file: "%s"' % text return res # Compile the program. res = doit(msg) cleanup() sys.exit(res) # vim: set sw=4 et sts=4 tw=79 fo+=l: