From c1b6226d40b7fd2acd10454015195d7ede4bb64d Mon Sep 17 00:00:00 2001 From: Nate Coraor Date: Fri, 4 Apr 2008 15:40:28 +0000 Subject: [PATCH] When running functional tests, display the tool's stderr when a job ends in error. --- lib/galaxy/web/controllers/dataset.py | 7 +++++++ test/base/twilltestcase.py | 12 ++++++++++-- test/functional/__init__.py | 11 ++++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/galaxy/web/controllers/dataset.py b/lib/galaxy/web/controllers/dataset.py index 60940cee468..344538fccc7 100644 --- a/lib/galaxy/web/controllers/dataset.py +++ b/lib/galaxy/web/controllers/dataset.py @@ -50,6 +50,13 @@ class DatasetInterface( BaseController ): dataset = model.Dataset.get( id ) return trans.fill_template( "dataset/errors.tmpl", dataset=dataset ) + @web.expose + def stderr( self, trans, id ): + dataset = model.Dataset.get( id ) + job = dataset.creating_job_associations[0].job + trans.response.set_content_type( 'text/plain' ) + return job.stderr + @web.expose def report_error( self, trans, id, email="no email provided", message="" ): smtp_server = trans.app.config.smtp_server diff --git a/test/base/twilltestcase.py b/test/base/twilltestcase.py index fc1bc6d775e..0ab6fa182f2 100644 --- a/test/base/twilltestcase.py +++ b/test/base/twilltestcase.py @@ -210,9 +210,17 @@ class TwillTestCase( unittest.TestCase ): self.visit_page( "history_available" ) """Functions associated with datasets (history items) and meta data""" + def get_job_stderr( self, id ): + self.visit_page( "dataset/stderr?id=%s" % id ) + return self.last_page() + def _assert_dataset_state( self, elem, state ): - assert elem.get( 'state' ) == state, \ - "Expecting dataset state '%s' but is '%s'. Dataset blurb: %s" % ( state, elem.get('state'), elem.text.strip() ) + if elem.get( 'state' ) != state: + errmsg = "Expecting dataset state '%s' but is '%s'. Dataset blurb: %s\n\n" % ( state, elem.get('state'), elem.text.strip() ) + errmsg += "---------------------- >> begin tool stderr << -----------------------\n" + errmsg += self.get_job_stderr( elem.get( 'id' ) ) + "\n" + errmsg += "----------------------- >> end tool stderr << ------------------------\n" + raise AssertionError( errmsg ) def check_metadata_for_string( self, patt, hid=None ): """Looks for 'patt' in the edit page when editing a dataset""" diff --git a/test/functional/__init__.py b/test/functional/__init__.py index 424a60c2c4d..6943bcb5909 100644 --- a/test/functional/__init__.py +++ b/test/functional/__init__.py @@ -52,9 +52,18 @@ def setup(): database_connection = os.environ['GALAXY_TEST_DBURI'] else: database_connection = 'sqlite:///' + os.path.join( db_path, 'universe.sqlite' ) + if 'GALAXY_TEST_RUNNERS' in os.environ: + start_job_runners = os.environ['GALAXY_TEST_RUNNERS'] + else: + start_job_runners = None + if 'GALAXY_TEST_DEF_RUNNER' in os.environ: + default_cluster_job_runner = os.environ['GALAXY_TEST_DEF_RUNNER'] + else: + default_cluster_job_runner = 'local:///' app = UniverseApplication( job_queue_workers = 5, - use_pbs = ( 'GALAXY_TEST_USE_PBS' in os.environ ), + start_job_runners = start_job_runners, + default_cluster_job_runner = default_cluster_job_runner, template_path = "templates", database_connection = database_connection, file_path = file_path,