~ubuntu-branches/ubuntu/saucy/clinica/saucy

« back to all changes in this revision

Viewing changes to waflib/Tools/waf_unit_test.py

  • Committer: Package Import Robot
  • Author(s): Leonardo Robol
  • Date: 2013-07-15 11:27:05 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20130715112705-3jskr3zv254a2qf2
Tags: 0.3.0-1
* New upstream version of Clinica.
* Remove explicit dependency on valac-0.16 (Closes: #709719)
* Correct FTBFS (Closes: #707361)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#! /usr/bin/env python
2
 
# encoding: utf-8
3
 
# WARNING! Do not edit! http://waf.googlecode.com/git/docs/wafbook/single.html#_obtaining_the_waf_file
4
 
 
5
 
import os,sys
6
 
from waflib.TaskGen import feature,after_method
7
 
from waflib import Utils,Task,Logs,Options
8
 
testlock=Utils.threading.Lock()
9
 
def make_test(self):
10
 
        if getattr(self,'link_task',None):
11
 
                self.create_task('utest',self.link_task.outputs)
12
 
class utest(Task.Task):
13
 
        color='PINK'
14
 
        after=['vnum','inst']
15
 
        vars=[]
16
 
        def runnable_status(self):
17
 
                ret=super(utest,self).runnable_status()
18
 
                if ret==Task.SKIP_ME:
19
 
                        if getattr(Options.options,'all_tests',False):
20
 
                                return Task.RUN_ME
21
 
                return ret
22
 
        def run(self):
23
 
                filename=self.inputs[0].abspath()
24
 
                self.ut_exec=getattr(self,'ut_exec',[filename])
25
 
                if getattr(self.generator,'ut_fun',None):
26
 
                        self.generator.ut_fun(self)
27
 
                try:
28
 
                        fu=getattr(self.generator.bld,'all_test_paths')
29
 
                except AttributeError:
30
 
                        fu=os.environ.copy()
31
 
                        self.generator.bld.all_test_paths=fu
32
 
                        lst=[]
33
 
                        for g in self.generator.bld.groups:
34
 
                                for tg in g:
35
 
                                        if getattr(tg,'link_task',None):
36
 
                                                lst.append(tg.link_task.outputs[0].parent.abspath())
37
 
                        def add_path(dct,path,var):
38
 
                                dct[var]=os.pathsep.join(Utils.to_list(path)+[os.environ.get(var,'')])
39
 
                        if Utils.is_win32:
40
 
                                add_path(fu,lst,'PATH')
41
 
                        elif sys.platform=='darwin':
42
 
                                add_path(fu,lst,'DYLD_LIBRARY_PATH')
43
 
                                add_path(fu,lst,'LD_LIBRARY_PATH')
44
 
                        else:
45
 
                                add_path(fu,lst,'LD_LIBRARY_PATH')
46
 
                cwd=getattr(self.generator,'ut_cwd','')or self.inputs[0].parent.abspath()
47
 
                proc=Utils.subprocess.Popen(self.ut_exec,cwd=cwd,env=fu,stderr=Utils.subprocess.PIPE,stdout=Utils.subprocess.PIPE)
48
 
                (stdout,stderr)=proc.communicate()
49
 
                tup=(filename,proc.returncode,stdout,stderr)
50
 
                self.generator.utest_result=tup
51
 
                testlock.acquire()
52
 
                try:
53
 
                        bld=self.generator.bld
54
 
                        Logs.debug("ut: %r",tup)
55
 
                        try:
56
 
                                bld.utest_results.append(tup)
57
 
                        except AttributeError:
58
 
                                bld.utest_results=[tup]
59
 
                finally:
60
 
                        testlock.release()
61
 
def summary(bld):
62
 
        lst=getattr(bld,'utest_results',[])
63
 
        if lst:
64
 
                Logs.pprint('CYAN','execution summary')
65
 
                total=len(lst)
66
 
                tfail=len([x for x in lst if x[1]])
67
 
                Logs.pprint('CYAN','  tests that pass %d/%d'%(total-tfail,total))
68
 
                for(f,code,out,err)in lst:
69
 
                        if not code:
70
 
                                Logs.pprint('CYAN','    %s'%f)
71
 
                Logs.pprint('CYAN','  tests that fail %d/%d'%(tfail,total))
72
 
                for(f,code,out,err)in lst:
73
 
                        if code:
74
 
                                Logs.pprint('CYAN','    %s'%f)
75
 
def options(opt):
76
 
        opt.add_option('--alltests',action='store_true',default=False,help='Exec all unit tests',dest='all_tests')
77
 
 
78
 
feature('test')(make_test)
79
 
after_method('apply_link')(make_test)
 
 
b'\\ No newline at end of file'