Re: [galaxy-dev] Unclear API and Twill test failure for undefined datatype

2014-04-16 Thread John Chilton
Thanks for the report Peter.

That API error message is really very unclear - I think this
https://bitbucket.org/galaxy/galaxy-central/commits/7c6fce1fd9e7f7adb4811cd92a56cdff05ea748d
should make it slightly less unclear what is going on and I have
created a Trello card here https://trello.com/c/iCdW0pt9 laying out
how to make the error message even less bad.

-John

On Tue, Apr 15, 2014 at 10:00 AM, Peter Cock p.j.a.c...@googlemail.com wrote:
 Hi all,

 I am using TravisCI for testing my Galaxy Tools developed
 on GitHub, see:
 http://blastedbio.blogspot.co.uk/2013/09/using-travis-ci-for-testing-galaxy-tools.html

 Currently this uses a hard coded datatypes_conf.xml file consisting
 of the local datatypes in use (e.g. BLAST databases) plus a cut down
 list those core dataypes also being used (e.g. FASTA).

 The following test run failed because one of the newly added tests
 used sam format, which was not defined:

 https://travis-ci.org/peterjc/pico_galaxy/builds/23041174

 I've added the SAM definition now, the reason for this email
 is to suggest clearer error messages from the test framework
 for undefined dataypes.

 Currently Twill (default) said:

 ==
 ERROR: test_tool_01 (functional.test_toolbox.TestForTool_samtools_depad)
 BAM mapping statistics ( samtools_depad )  Test-2
 --
 Traceback (most recent call last):
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/test/functional/test_toolbox.py,
 line 106, in test_tool
 self.do_it( td )
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/test/functional/test_toolbox.py,
 line 29, in do_it
 stage_data_in_history( galaxy_interactor, testdef.test_data(),
 test_history, shed_tool_id )
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/test/base/interactor.py,
 line 30, in stage_data_in_history
 upload_waits.append( galaxy_interactor.stage_data_async(
 test_data, history, shed_tool_id ) )
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/test/base/interactor.py,
 line 336, in stage_data_async
 wait=(not async) )
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/test/base/twilltestcase.py,
 line 209, in upload_file
 self.refresh_form( file_type, ftype )  # Refresh, to support
 composite files
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/test/base/twilltestcase.py,
 line 1369, in refresh_form
 tc.fv( f.name, control.name, value )
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/eggs/twill-0.9-py2.7.egg/twill/commands.py,
 line 450, in formvalue
 set_form_control_value(control, value)
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/eggs/twill-0.9-py2.7.egg/twill/utils.py,
 line 190, in set_form_control_value
 raise ClientForm.ItemNotFoundError('cannot find value/label %s
 in list control' % (val,))
 ItemNotFoundError: cannot find value/label sam in list control



 Similarly unclear, the API test framework said:

 galaxy.web.framework: ERROR: Uncaught exception in exposed API method:
 Traceback (most recent call last):
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/lib/galaxy/web/framework/__init__.py,
 line 199, in decorator
 rval = func( self, trans, *args, **kwargs)
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/lib/galaxy/webapps/galaxy/api/tools.py,
 line 130, in create
 template, vars = tool.handle_input( trans, incoming,
 history=target_history, process_state=process_state, source=json )
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/lib/galaxy/tools/__init__.py,
 line 1921, in handle_input
 errors, params = self.__check_param_values( trans, incoming,
 state, old_errors, process_state, history=history, source=source )
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/lib/galaxy/tools/__init__.py,
 line 2029, in __check_param_values
 errors = self.populate_state( trans, inputs, state.inputs,
 incoming, history, source=source )
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/lib/galaxy/tools/__init__.py,
 line 2136, in populate_state
 current_case = input.get_current_case( value, trans )
   File 
 /home/travis/build/peterjc/pico_galaxy/galaxy-central-master/lib/galaxy/tools/parameters/grouping.py,
 line 462, in get_current_case
 raise Exception( No case matched value:, self.name, str_value )
 Exception: ('No case matched value:', 'files_metadata', u'sam')
 requests.packages.urllib3.connectionpool: DEBUG: POST /api/tools
 HTTP/1.1 500 None


 In both cases, I would prefer something like a ValueError
 explicitly saying the problem is an undefined dataype
 (in this case, sam was not defined).

 This will be most useful when dealing with 3rd party tools
 using 3rd part datatype 

[galaxy-dev] Unclear API and Twill test failure for undefined datatype

2014-04-15 Thread Peter Cock
Hi all,

I am using TravisCI for testing my Galaxy Tools developed
on GitHub, see:
http://blastedbio.blogspot.co.uk/2013/09/using-travis-ci-for-testing-galaxy-tools.html

Currently this uses a hard coded datatypes_conf.xml file consisting
of the local datatypes in use (e.g. BLAST databases) plus a cut down
list those core dataypes also being used (e.g. FASTA).

The following test run failed because one of the newly added tests
used sam format, which was not defined:

https://travis-ci.org/peterjc/pico_galaxy/builds/23041174

I've added the SAM definition now, the reason for this email
is to suggest clearer error messages from the test framework
for undefined dataypes.

Currently Twill (default) said:

==
ERROR: test_tool_01 (functional.test_toolbox.TestForTool_samtools_depad)
BAM mapping statistics ( samtools_depad )  Test-2
--
Traceback (most recent call last):
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/test/functional/test_toolbox.py,
line 106, in test_tool
self.do_it( td )
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/test/functional/test_toolbox.py,
line 29, in do_it
stage_data_in_history( galaxy_interactor, testdef.test_data(),
test_history, shed_tool_id )
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/test/base/interactor.py,
line 30, in stage_data_in_history
upload_waits.append( galaxy_interactor.stage_data_async(
test_data, history, shed_tool_id ) )
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/test/base/interactor.py,
line 336, in stage_data_async
wait=(not async) )
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/test/base/twilltestcase.py,
line 209, in upload_file
self.refresh_form( file_type, ftype )  # Refresh, to support
composite files
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/test/base/twilltestcase.py,
line 1369, in refresh_form
tc.fv( f.name, control.name, value )
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/eggs/twill-0.9-py2.7.egg/twill/commands.py,
line 450, in formvalue
set_form_control_value(control, value)
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/eggs/twill-0.9-py2.7.egg/twill/utils.py,
line 190, in set_form_control_value
raise ClientForm.ItemNotFoundError('cannot find value/label %s
in list control' % (val,))
ItemNotFoundError: cannot find value/label sam in list control



Similarly unclear, the API test framework said:

galaxy.web.framework: ERROR: Uncaught exception in exposed API method:
Traceback (most recent call last):
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/lib/galaxy/web/framework/__init__.py,
line 199, in decorator
rval = func( self, trans, *args, **kwargs)
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/lib/galaxy/webapps/galaxy/api/tools.py,
line 130, in create
template, vars = tool.handle_input( trans, incoming,
history=target_history, process_state=process_state, source=json )
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/lib/galaxy/tools/__init__.py,
line 1921, in handle_input
errors, params = self.__check_param_values( trans, incoming,
state, old_errors, process_state, history=history, source=source )
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/lib/galaxy/tools/__init__.py,
line 2029, in __check_param_values
errors = self.populate_state( trans, inputs, state.inputs,
incoming, history, source=source )
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/lib/galaxy/tools/__init__.py,
line 2136, in populate_state
current_case = input.get_current_case( value, trans )
  File 
/home/travis/build/peterjc/pico_galaxy/galaxy-central-master/lib/galaxy/tools/parameters/grouping.py,
line 462, in get_current_case
raise Exception( No case matched value:, self.name, str_value )
Exception: ('No case matched value:', 'files_metadata', u'sam')
requests.packages.urllib3.connectionpool: DEBUG: POST /api/tools
HTTP/1.1 500 None


In both cases, I would prefer something like a ValueError
explicitly saying the problem is an undefined dataype
(in this case, sam was not defined).

This will be most useful when dealing with 3rd party tools
using 3rd part datatype definitions.

Thanks,

Peter
___
Please keep all replies on the list by using reply all
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:
  http://lists.bx.psu.edu/

To search Galaxy mailing lists use the unified search at:
  http://galaxyproject.org/search/mailinglists/