Bug #609: --check and --regression should build only the required binaries
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Mon Sep 07 11:59:10 2009 +0100 (5 months ago)
changeset 4760f774ff724ee4
parent 4759 a18ac083ec51
child 4761 8c0b3a413f4b
Bug #609: --check and --regression should build only the required binaries
regression.py
wscript
     1.1 --- a/regression.py	Mon Sep 07 11:45:05 2009 +0200
     1.2 +++ b/regression.py	Mon Sep 07 11:59:10 2009 +0100
     1.3 @@ -91,10 +91,32 @@
     1.4          self.env = env
     1.5          super(regression_test_task, self).__init__(generator=self, env=env)
     1.6          self.test_name = test_name
     1.7 +
     1.8 +        assert self.test_name.startswith('test-')
     1.9 +        short_name = self.test_name[len('test-'):]
    1.10 +
    1.11          self.test_scripts_dir = test_scripts_dir
    1.12          self.build_traces_dir = build_traces_dir
    1.13          self.reference_traces_dir = reference_traces
    1.14  
    1.15 +        sys.path.insert(0, self.test_scripts_dir)
    1.16 +        try:
    1.17 +            mod = __import__(self.test_name, globals(), locals(), [])
    1.18 +        finally:
    1.19 +            sys.path.remove(self.test_scripts_dir)
    1.20 +        self.mod = mod
    1.21 +        if hasattr(mod, 'may_run'):
    1.22 +            reason_cannot_run = mod.may_run(self.env, Options.options)
    1.23 +        else:
    1.24 +            reason_cannot_run = None
    1.25 +        if not reason_cannot_run:
    1.26 +            pyscript = getattr(mod, "pyscript", None)
    1.27 +            if pyscript:
    1.28 +                Options.options.compile_targets += ',ns3module'
    1.29 +            else:
    1.30 +                program = getattr(mod, "program", short_name)
    1.31 +                Options.options.compile_targets += ',' + program
    1.32 +
    1.33      def __str__(self):
    1.34          return 'regression-test (%s)\n' % self.test_name
    1.35  
    1.36 @@ -103,15 +125,9 @@
    1.37  
    1.38      def run(self):
    1.39          """Run a single test"""
    1.40 -        sys.path.insert(0, self.test_scripts_dir)
    1.41 -        try:
    1.42 -            mod = __import__(self.test_name, globals(), locals(), [])
    1.43 -        finally:
    1.44 -            sys.path.remove(self.test_scripts_dir)
    1.45 -
    1.46          assert self.test_name.startswith('test-')
    1.47          short_name = self.test_name[len('test-'):]
    1.48 -
    1.49 +        mod = self.mod
    1.50          trace_dir_name = getattr(mod, "trace_dir_name", None)
    1.51          if trace_dir_name is None:
    1.52              trace_dir_name = "%s.ref" % short_name
     2.1 --- a/wscript	Mon Sep 07 11:45:05 2009 +0200
     2.2 +++ b/wscript	Mon Sep 07 11:59:10 2009 +0100
     2.3 @@ -542,11 +542,10 @@
     2.4          # When --run'ing a program, tell WAF to only build that program,
     2.5          # nothing more; this greatly speeds up compilation when all you
     2.6          # want to do is run a test program.
     2.7 -        if not Options.options.compile_targets:
     2.8 -            Options.options.compile_targets = os.path.basename(program_name)
     2.9 -            for gen in bld.all_task_gen:
    2.10 -                if type(gen).__name__ in ['ns3header_taskgen', 'ns3moduleheader_taskgen']:
    2.11 -                    gen.post()
    2.12 +        Options.options.compile_targets += ',' + os.path.basename(program_name)
    2.13 +        for gen in bld.all_task_gen:
    2.14 +            if type(gen).__name__ in ['ns3header_taskgen', 'ns3moduleheader_taskgen']:
    2.15 +                gen.post()
    2.16  
    2.17      if Options.options.regression or Options.options.regression_generate:
    2.18          regression_traces = env['REGRESSION_TRACES']
    2.19 @@ -556,6 +555,7 @@
    2.20          regression.run_regression(bld, regression_traces)
    2.21  
    2.22      if Options.options.check:
    2.23 +        Options.options.compile_targets += ',run-tests,ns3module'
    2.24          _run_check(bld)
    2.25  
    2.26