You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.6 KiB
Python
83 lines
1.6 KiB
Python
#! /usr/bin/env python
|
|
# encoding: utf-8
|
|
# Thomas Nagy, 2016 (ita)
|
|
|
|
top = '.'
|
|
out = 'build'
|
|
|
|
import functools
|
|
from waflib import Utils, Logs
|
|
|
|
def configure(conf):
|
|
pass
|
|
|
|
def fun1():
|
|
return 0
|
|
|
|
def fun2(arg1, arg2):
|
|
return 1
|
|
|
|
def fun(arg1, arg2, task, one=1, two=2):
|
|
print(arg1, arg2, task, one, two)
|
|
|
|
par1 = functools.partial(fun, 'arg1')
|
|
par2 = functools.partial(par1, 'arg2', one=11, two=22)
|
|
|
|
def fun3():
|
|
return 32
|
|
par3 = functools.partial(par1, 'arg2', one=11, two=22)
|
|
|
|
def build(bld):
|
|
|
|
bld.failure = 0
|
|
def disp(color, result):
|
|
Logs.pprint(color, result)
|
|
if color == 'RED':
|
|
bld.failure=1
|
|
def stop_status(bld):
|
|
if bld.failure:
|
|
bld.fatal('One or several test failed, check the outputs above')
|
|
bld.add_post_fun(stop_status)
|
|
|
|
def simple_hash(fun):
|
|
status = ''
|
|
try:
|
|
Utils.h_cmd(fun)
|
|
except Exception as e:
|
|
status = str(e)
|
|
return status
|
|
|
|
def hash_test(name, fun):
|
|
ret = simple_hash(fun)
|
|
if not ret:
|
|
color = "GREEN"
|
|
else:
|
|
color = "RED"
|
|
ret = ret or 'ok'
|
|
disp(color, '%s\t\t%s' % (name, ret))
|
|
|
|
hash_test('simple function 1', fun1)
|
|
hash_test('simple function 2', fun1)
|
|
hash_test('simple partial', par1)
|
|
hash_test('nested partial', par2)
|
|
|
|
def hash_twice(name, fun):
|
|
try:
|
|
ret1 = Utils.h_cmd(fun)
|
|
ret2 = Utils.h_cmd(fun)
|
|
except Exception as e:
|
|
msg = str(e)
|
|
color = 'RED'
|
|
else:
|
|
if ret1 == ret2:
|
|
msg = 'ok %r' % ret1
|
|
color = 'GREEN'
|
|
else:
|
|
msg = '%r != %r' % (ret1, ret2)
|
|
color = 'RED'
|
|
disp(color, '%s\t\t%s' % (name, msg))
|
|
|
|
hash_twice('consistent on fun3', fun3)
|
|
hash_twice('consistent on par3', par3)
|
|
|