# Part of the A-A-P recipe executive: Testing of command block sections
# 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
#
# This test checks that the following works properly:
# - A command block with sections executed when building is done.
# - A command block with sections executed when building is not done.
#
import sys, os, re, glob, shutil
def runaap(args):
return os.system("%s ..%sMain.py %s" % (sys.argv[1], os.sep, args))
os.chdir("rectest")
# Create a recipe, run it and check the output.
rec = "rectest.aap"
out = "rectest.out"
inp = "rectest.in"
outp1 = "rectest.copy"
outp2 = "rectestcopy"
def cleanup():
for file in [ rec, out, inp, outp1, outp2 ]:
try:
os.remove(file)
except:
pass
try:
for dir in glob.glob('build-*'):
shutil.rmtree(dir)
except:
pass
cleanup()
# Create the recipe.
f = open(rec, "w")
f.write("""
:rule %%.copy : %%.in
# comment
>always
# comment
:print always done
>build
:copy $source $target
:print build done
>nobuild # comment
:print nobuild done
>always
:print always again
>build
:print build again
all: %s %s
:print PASS
%s : %s
>build
:copy $source $target
>always
:print always in depend
>nobuild
:print nobuild in depend
""" % (outp1, outp2, outp2, inp))
f.close()
# Create the source file.
f = open(inp, "w")
f.write("""
int foo() {return 0;}
""")
f.close()
# Run it, the "build" sections will be executed.
res1 = runaap("-f %s >%s" % (rec, out))
f = open(out)
actual = f.read()
f.close()
expected = """always done
Aap: Copied "%s" to "%s"
build done
always again
build again
Aap: Copied "%s" to "%s"
always in depend
PASS
""" % (inp, outp1, inp, outp2)
if actual != expected:
print 'Aap failed to behave as expected - output was:'
print actual
print 'Instead of:'
print expected
res1 = 1
# Run it again, now the "nobuild" sections will be executed.
res2 = runaap("-f %s >%s" % (rec, out))
f = open(out)
actual = f.read()
f.close()
expected = """always done
nobuild done
always again
always in depend
nobuild in depend
PASS
"""
if actual != expected:
print 'Aap failed to behave as expected - output was:'
print actual
print 'Instead of:'
print expected
resw = 1
cleanup()
sys.exit(res1 + res2)
# vim: set sw=4 et sts=4 tw=79 fo+=l:
|