diff --git a/pykat/testing/web/web_interface.py b/pykat/testing/web/web_interface.py index 20a9052de017d2b6610561e83f9245c762f862d9..fd0f9cee632e16853172703e3abaafb247005ac6 100644 --- a/pykat/testing/web/web_interface.py +++ b/pykat/testing/web/web_interface.py @@ -39,35 +39,37 @@ class FinesseProcessWatcher(Thread): self.process_to_watch = process def run(self): - global schedule_lock,current_test,scheduled_tests, watcher - - if self.process_to_watch is None: - return - - #if type(self.process_to_watch) is not finesse_test.FinesseTestProcess: - # raise Exception("Tried to watch something which wasn't a FinesseTestProcess") - - print "Watcher is watching", self.process_to_watch - - self.process_to_watch.join() - - print "Watcher is continuing" - - # once done check if any other tests need to be ran - schedule_lock.acquire() + try: + global schedule_lock,current_test,scheduled_tests, watcher + + if self.process_to_watch is None: + return + + #if type(self.process_to_watch) is not finesse_test.FinesseTestProcess: + # raise Exception("Tried to watch something which wasn't a FinesseTestProcess") - if len(scheduled_tests) > 0: - print "Watcher starting next test" - current_test = scheduled_tests.pop(0) - watcher = FinesseProcessWatcher() - watcher.setProcessToWatch(current_test) - watcher.start() - current_test.start() - else: - print "Watcher found no more tests to run" - current_test = None + print "Watcher is watching", self.process_to_watch + self.process_to_watch.start() + self.process_to_watch.join() + print "Watcher is continuing" + + try: + # once done check if any other tests need to be ran + schedule_lock.acquire() - schedule_lock.release() + if len(scheduled_tests) > 0: + print "Watcher starting next test" + current_test = scheduled_tests.pop(0) + watcher = FinesseProcessWatcher() + watcher.setProcessToWatch(current_test) + watcher.start() + else: + print "Watcher found no more tests to run" + current_test = None + watcher = None + finally: + schedule_lock.release() + @app.route('/finesse/cancel_test_<id>', methods=["POST"]) def finesse_cancel_test(id): @@ -150,12 +152,11 @@ def finesse_start_test(): if current_test is None: print "running test" current_test = test + # create watcher thread which will start the test + # when ready watcher = FinesseProcessWatcher() watcher.setProcessToWatch(test) watcher.start() - - test.start() - else: print "queuing test" scheduled_tests.append(test) diff --git a/setup.py b/setup.py index 3e27ce123771b46eb6e0e986484a3b1ba049cbfb..f16d43750fbc563e5230425c01f5f046e75812c5 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ REQUIREMENTS = [i.strip() for i in open("requirements.txt").readlines()] setup( name='PyKat', - version='0.0.2', + version='0.0.3', author='Daniel Brown', author_email='ddb@star.sr.bham.ac.uk', packages=['pykat','pykat.gui','pykat.gui.resources'],