#! /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)