diff options
author | Steven Knight <knight@baldmt.com> | 2009-12-10 03:42:30 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2009-12-10 03:42:30 (GMT) |
commit | e8551494b473640e3310c8acf87bddaaf9804613 (patch) | |
tree | 752358a6720d64a6737668780d3d531a86d5ee1c /QMTest | |
parent | adce42a8c1bd40f25af344cfce98ed26656cbea4 (diff) | |
download | SCons-e8551494b473640e3310c8acf87bddaaf9804613.zip SCons-e8551494b473640e3310c8acf87bddaaf9804613.tar.gz SCons-e8551494b473640e3310c8acf87bddaaf9804613.tar.bz2 |
Infrastructure to support calibration runs of TimeSCons tests, which
only run a full build and report back the values of any variables
affecting the configuration, and the elapsed time of the full build.
Diffstat (limited to 'QMTest')
-rw-r--r-- | QMTest/TestSCons.py | 54 |
1 files changed, 47 insertions, 7 deletions
diff --git a/QMTest/TestSCons.py b/QMTest/TestSCons.py index 929567d..002baaa 100644 --- a/QMTest/TestSCons.py +++ b/QMTest/TestSCons.py @@ -997,8 +997,23 @@ class TimeSCons(TestSCons): directory containing the executing script to the temporary working directory. """ + self.variables = kw.get('variables') + if self.variables is not None: + for variable, value in self.variables.items(): + value = os.environ.get(variable, value) + try: + value = int(value) + except ValueError: + try: + value = float(value) + except ValueError: + pass + self.variables[variable] = value + del kw['variables'] + if not kw.has_key('verbose'): kw['verbose'] = True + # TODO(1.5) #TestSCons.__init__(self, *args, **kw) apply(TestSCons.__init__, (self,)+args, kw) @@ -1028,13 +1043,24 @@ class TimeSCons(TestSCons): The elapsed time to execute each build is printed after it has finished. """ - # TODO(1.5) - #self.help(*args, **kw) - #self.full(*args, **kw) - #self.null(*args, **kw) - apply(self.help, args, kw) - apply(self.full, args, kw) - apply(self.null, args, kw) + if not kw.has_key('options') and self.variables: + options = [] + for variable, value in self.variables.items(): + options.append('%s=%s' % (variable, value)) + kw['options'] = ' '.join(options) + calibrate = os.environ.get('TIMESCONS_CALIBRATE') + if calibrate in (None, '0'): + # TODO(1.5) + #self.help(*args, **kw) + #self.full(*args, **kw) + #self.null(*args, **kw) + apply(self.help, args, kw) + apply(self.full, args, kw) + apply(self.null, args, kw) + else: + # TODO(1.5) + #self.calibration(*args, **kw) + apply(self.calibration, args, kw) def trace(self, graph, name, value, units, sort=None): fmt = "TRACE: graph=%s name=%s value=%s units=%s" @@ -1081,6 +1107,20 @@ class TimeSCons(TestSCons): sys.stdout.write(self.stdout()) self.report_traces('full', self.stdout()) + def calibration(self, *args, **kw): + """ + Runs a full build of SCons, but only reports calibration + information (the variable(s) that were set for this configuration, + and the elapsed time to run. + """ + # TODO(1.5) + #self.run(*args, **kw) + apply(self.run, args, kw) + if self.variables: + for variable, value in self.variables.items(): + sys.stdout.write('VARIABLE: %s=%s\n' % (variable, value)) + sys.stdout.write('ELAPSED: %s\n' % self.elapsed_time()) + def null(self, *args, **kw): """ Runs an up-to-date null build of SCons. |