From 93c4e3f7fffb61c7e3ad9c7687154f5e3540a610 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Tue, 18 Nov 2008 20:57:31 +0000 Subject: [PATCH] interactive mode & dryrun step --- system/TestApiserver.py | 5 +++++ system/TestMain.py | 36 +++++++++++++++++++++++++++--------- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/system/TestApiserver.py b/system/TestApiserver.py index d4eb2c1..740ae85 100644 --- a/system/TestApiserver.py +++ b/system/TestApiserver.py @@ -63,3 +63,8 @@ class TestApiserver: self.dry_run=dry_run for (method,defaults) in server_methods: setattr(self,method,TestApiserver.Callable(self.apiserver,dry_run,method,defaults)) + + def set_dry_run (self, dry_run): + self.dry_run=dry_run + for (method,defaults) in server_methods: + getattr(self,method).dry_run = dry_run diff --git a/system/TestMain.py b/system/TestMain.py index b0db61f..2df32b8 100755 --- a/system/TestMain.py +++ b/system/TestMain.py @@ -278,16 +278,34 @@ steps refer to a method in TestPlc or to a step_* module # run the step time=strftime("%Y-%m-%d-%H-%M") if not spec['disabled'] or force or self.options.interactive: + skip_step=False if self.options.interactive: - msg="Run step %s on %s [y]/n/q ? "%(stepname,plcname) - answer=raw_input(msg).strip().lower() or "y" - answer=answer[0] - if answer in ['n']: - print '%s on %s skipped'%(stepname,plcname) - continue - elif answer in ['q','b']: - print 'Exiting' - return + prompting=True + while prompting: + msg="Run step %s on %s [r](un)/d(ry_run)/s(kip)/q(uit) ? "%(stepname,plcname) + answer=raw_input(msg).strip().lower() or "r" + answer=answer[0] + if answer in ['s','n']: # skip/no/next + print '%s on %s skipped'%(stepname,plcname) + prompting=False + skip_step=True + elif answer in ['q','b']: # quit/bye + print 'Exiting' + return + elif answer in ['d']: # dry_run + dry_run=self.options.dry_run + self.options.dry_run=True + obj.options.dry_run=True + obj.apiserver.set_dry_run(True) + step_result=method(obj) + print 'dry_run step ->',step_result + self.options.dry_run=dry_run + obj.options.dry_run=dry_run + obj.apiserver.set_dry_run(dry_run) + elif answer in ['r','y']: # run/yes + prompting=False + if skip_step: + continue try: force_msg="" if force: force_msg=" (forced)" -- 2.47.0