1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/2df57338a595/
Changeset: 2df57338a595
User: inithello
Date: 2013-04-24 20:55:53
Summary: Account for the scenario where a test status is not present in the tool_test_errors dict.
Affected #: 1 file
diff -r 1a915a754396da8ac986dd410ee99bed12668235 -r 2df57338a595ab96f3f54af2b0e4c2e382198a40 lib/galaxy/webapps/tool_shed/controllers/repository.py
--- a/lib/galaxy/webapps/tool_shed/controllers/repository.py
+++ b/lib/galaxy/webapps/tool_shed/controllers/repository.py
@@ -1171,9 +1171,9 @@
# Generate a citable URL for this repository with owner and changeset revision.
repository_citable_url = suc.url_join( tool_shed_url, 'view', user.username, repository.name, metadata_row.changeset_revision )
title = 'Functional test results for changeset revision %s of %s' % ( metadata_row.changeset_revision, repository.name )
- tests_passed = len( metadata_row.tool_test_errors[ 'tests_passed' ] )
- tests_failed = len( metadata_row.tool_test_errors[ 'invalid_tests' ] )
- invalid_tests = len( metadata_row.tool_test_errors[ 'test_errors' ] )
+ tests_passed = len( metadata_row.tool_test_errors.get( 'tests_passed', [] ) )
+ tests_failed = len( metadata_row.tool_test_errors.get( 'test_errors', [] ) )
+ invalid_tests = len( metadata_row.tool_test_errors.get( 'invalid_tests', [] ) )
description = '%d tests passed, %d tests failed, %d tests determined to be invalid.' % ( tests_passed, tests_failed, invalid_tests )
# The guid attribute in an RSS feed's list of items allows a feed reader to choose not to show an item as updated
# if the guid is unchanged. For functional test results, the citable URL is sufficiently unique to enable
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/333dfc42a868/
Changeset: 333dfc42a868
User: inithello
Date: 2013-04-24 20:41:16
Summary: Retrieve functional test results by owner's username instead of user ID.
Affected #: 1 file
diff -r 322d7ae99729ac4235e3f6becc6707c9f0c359d1 -r 333dfc42a8688ec81627ae1164e3be9ba2aa864c lib/galaxy/webapps/tool_shed/controllers/repository.py
--- a/lib/galaxy/webapps/tool_shed/controllers/repository.py
+++ b/lib/galaxy/webapps/tool_shed/controllers/repository.py
@@ -1127,14 +1127,17 @@
@web.expose
def get_functional_test_rss( self, trans, **kwd ):
- '''Return an RSS feed of the functional test results for the provided user ID, optionally filtered by the 'status' parameter.'''
- encoded_user_id = kwd.get( 'user_id', None )
- if encoded_user_id:
- user_id = trans.security.decode_id( encoded_user_id )
+ '''Return an RSS feed of the functional test results for the provided user, optionally filtered by the 'status' parameter.'''
+ owner = kwd.get( 'owner', None )
+ status = kwd.get( 'status', 'all' )
+ if owner:
+ user = suc.get_user_by_username( trans.app, owner )
else:
trans.response.status = 404
- return 'Unknown or missing user ID.'
- status = kwd.get( 'status', 'all' )
+ return 'Missing owner parameter.'
+ if user is None:
+ trans.response.status = 404
+ return 'No user found with username %s.' % owner
if status == 'passed':
# Return only metadata revisions where tools_functionally_correct is set to True.
metadata_filter = and_( trans.model.RepositoryMetadata.table.c.includes_tools == True,
@@ -1150,6 +1153,7 @@
metadata_filter = and_( trans.model.RepositoryMetadata.table.c.includes_tools == True,
trans.model.RepositoryMetadata.table.c.time_last_tested is not None )
+ tool_shed_url = web.url_for( '/', qualified=True )
functional_test_results = []
for metadata_row in trans.sa_session.query( trans.model.RepositoryMetadata ) \
.filter( metadata_filter ) \
@@ -1157,17 +1161,15 @@
.filter( and_( trans.model.Repository.table.c.deleted == False,
trans.model.Repository.table.c.private == False,
trans.model.Repository.table.c.deprecated == False,
- trans.model.Repository.table.c.user_id == user_id ) ):
+ trans.model.Repository.table.c.user_id == user.id ) ):
if not metadata_row.tool_test_errors:
continue
# Per the RSS 2.0 specification, all dates in RSS feeds must be formatted as specified in RFC 822
# section 5.1, e.g. Sat, 07 Sep 2002 00:00:01 UT
time_tested = metadata_row.time_last_tested.strftime( '%a, %d %b %Y %H:%M:%S UT' )
- link = web.url_for( '/', qualified=True )
repository = metadata_row.repository
- user = repository.user
# Generate a citable URL for this repository with owner and changeset revision.
- repository_citable_url = suc.url_join( link, 'view', user.username, repository.name, metadata_row.changeset_revision )
+ repository_citable_url = suc.url_join( tool_shed_url, 'view', user.username, repository.name, metadata_row.changeset_revision )
title = 'Functional test results for changeset revision %s of %s' % ( metadata_row.changeset_revision, repository.name )
tests_passed = len( metadata_row.tool_test_errors[ 'tests_passed' ] )
tests_failed = len( metadata_row.tool_test_errors[ 'invalid_tests' ] )
@@ -1184,7 +1186,7 @@
trans.response.set_content_type( 'application/rss+xml' )
return trans.fill_template( '/rss.mako',
title='Tool functional test results',
- link=link,
+ link=tool_shed_url,
description='Functional test results for repositories owned by %s.' % user.username,
pubdate=strftime( '%a, %d %b %Y %H:%M:%S UT', gmtime() ),
items=functional_test_results )
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
2 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/4126ec15fd61/
Changeset: 4126ec15fd61
User: inithello
Date: 2013-04-24 15:52:40
Summary: Fix functional test issue with forms having refresh_on_change.
Affected #: 1 file
diff -r fb28ceb83c379e1d792f622f9b2cbc8c3e050f37 -r 4126ec15fd614dff9d5a0b555623626fa947197c test/base/twilltestcase.py
--- a/test/base/twilltestcase.py
+++ b/test/base/twilltestcase.py
@@ -1180,9 +1180,16 @@
# Check for refresh_on_change attribute, submit a change if required
if hasattr( control, 'attrs' ) and 'refresh_on_change' in control.attrs.keys():
changed = False
- item_labels = [ item.attrs[ 'label' ] for item in control.get_items() if item.selected ] #For DataToolParameter, control.value is the HDA id, but kwd contains the filename. This loop gets the filename/label for the selected values.
+ # For DataToolParameter, control.value is the HDA id, but kwd contains the filename.
+ # This loop gets the filename/label for the selected values.
+ item_labels = [ item.attrs[ 'label' ] for item in control.get_items() if item.selected ]
for value in kwd[ control.name ]:
- if value not in control.value and True not in [ value in item_label for item_label in item_labels ]:
+ # Galaxy truncates long file names in the dataset_collector in galaxy/tools/parameters/basic.py
+ if len( value ) > 30 and control.is_of_kind( 'singlelist' ):
+ field_value = '%s..%s' % ( elem[:17], elem[-11:] )
+ else:
+ field_value = value
+ if field_value not in control.value and True not in [ field_value in item_label for item_label in item_labels ]:
changed = True
break
if changed:
@@ -1190,7 +1197,11 @@
control.clear()
# kwd[control.name] should be a singlelist
for elem in kwd[ control.name ]:
- tc.fv( f.name, control.name, str( elem ) )
+ if len( elem ) > 30 and control.is_of_kind( 'singlelist' ):
+ elem_name = '%s..%s' % ( elem[:17], elem[-11:] )
+ else:
+ elem_name = elem
+ tc.fv( f.name, control.name, str( elem_name ) )
# Create a new submit control, allows form to refresh, instead of going to next page
control = ClientForm.SubmitControl( 'SubmitControl', '___refresh_grouping___', {'name':'refresh_grouping'} )
control.add_to_form( f )
@@ -1241,7 +1252,7 @@
tc.fv( f.name, control.name, str( elem ) )
except Exception, e2:
print "Attempting to set control '", control.name, "' to value '", elem, "' threw exception: ", e2
- # Galaxy truncates long file names in the dataset_collector in ~/parameters/basic.py
+ # Galaxy truncates long file names in the dataset_collector in galaxy/tools/parameters/basic.py
if len( elem ) > 30:
elem_name = '%s..%s' % ( elem[:17], elem[-11:] )
else:
https://bitbucket.org/galaxy/galaxy-central/commits/b0ea9722b9dd/
Changeset: b0ea9722b9dd
Branch: stable
User: inithello
Date: 2013-04-24 15:52:40
Summary: Fix functional test issue with forms having refresh_on_change.
Affected #: 1 file
diff -r ae53deed05b68f6febfcf3472c2a11514c12eb0c -r b0ea9722b9dd8e0da63208b59be20b90eae0cea7 test/base/twilltestcase.py
--- a/test/base/twilltestcase.py
+++ b/test/base/twilltestcase.py
@@ -1180,9 +1180,16 @@
# Check for refresh_on_change attribute, submit a change if required
if hasattr( control, 'attrs' ) and 'refresh_on_change' in control.attrs.keys():
changed = False
- item_labels = [ item.attrs[ 'label' ] for item in control.get_items() if item.selected ] #For DataToolParameter, control.value is the HDA id, but kwd contains the filename. This loop gets the filename/label for the selected values.
+ # For DataToolParameter, control.value is the HDA id, but kwd contains the filename.
+ # This loop gets the filename/label for the selected values.
+ item_labels = [ item.attrs[ 'label' ] for item in control.get_items() if item.selected ]
for value in kwd[ control.name ]:
- if value not in control.value and True not in [ value in item_label for item_label in item_labels ]:
+ # Galaxy truncates long file names in the dataset_collector in galaxy/tools/parameters/basic.py
+ if len( value ) > 30 and control.is_of_kind( 'singlelist' ):
+ field_value = '%s..%s' % ( elem[:17], elem[-11:] )
+ else:
+ field_value = value
+ if field_value not in control.value and True not in [ field_value in item_label for item_label in item_labels ]:
changed = True
break
if changed:
@@ -1190,7 +1197,11 @@
control.clear()
# kwd[control.name] should be a singlelist
for elem in kwd[ control.name ]:
- tc.fv( f.name, control.name, str( elem ) )
+ if len( elem ) > 30 and control.is_of_kind( 'singlelist' ):
+ elem_name = '%s..%s' % ( elem[:17], elem[-11:] )
+ else:
+ elem_name = elem
+ tc.fv( f.name, control.name, str( elem_name ) )
# Create a new submit control, allows form to refresh, instead of going to next page
control = ClientForm.SubmitControl( 'SubmitControl', '___refresh_grouping___', {'name':'refresh_grouping'} )
control.add_to_form( f )
@@ -1241,7 +1252,7 @@
tc.fv( f.name, control.name, str( elem ) )
except Exception, e2:
print "Attempting to set control '", control.name, "' to value '", elem, "' threw exception: ", e2
- # Galaxy truncates long file names in the dataset_collector in ~/parameters/basic.py
+ # Galaxy truncates long file names in the dataset_collector in galaxy/tools/parameters/basic.py
if len( elem ) > 30:
elem_name = '%s..%s' % ( elem[:17], elem[-11:] )
else:
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/7c5912105551/
Changeset: 7c5912105551
User: inithello
Date: 2013-04-23 20:46:53
Summary: Functional tests to verify correct setting of metadata when dependency definitions are deleted.
Affected #: 1 file
diff -r 1e3d92ec22b2794bfa2294edb74695c580791406 -r 7c59121055516595937b83d51eaf98b60723b622 test/tool_shed/functional/test_0440_deleting_dependency_definitions.py
--- /dev/null
+++ b/test/tool_shed/functional/test_0440_deleting_dependency_definitions.py
@@ -0,0 +1,365 @@
+from tool_shed.base.twilltestcase import ShedTwillTestCase, common, os
+import tool_shed.base.test_db_util as test_db_util
+
+column_repository_name = 'column_maker_0440'
+column_repository_description = "Add column"
+column_repository_long_description = "Compute an expression on every row"
+
+convert_repository_name = 'convert_chars_0440'
+convert_repository_description = "Convert delimiters"
+convert_repository_long_description = "Convert delimiters to tab"
+
+bwa_package_repository_name = 'bwa_package_0440'
+bwa_package_repository_description = "BWA Package Repository"
+bwa_package_repository_long_description = "BWA repository with a package tool dependency defined for BWA 0.5.9."
+
+bwa_base_repository_name = 'bwa_base_0440'
+bwa_base_repository_description = "BWA Base"
+bwa_base_repository_long_description = "NT space mapping with BWA"
+
+bwa_tool_dependency_repository_name = 'bwa_tool_dependency_0440'
+bwa_tool_dependency_repository_description = "BWA Base"
+bwa_tool_dependency_repository_long_description = "NT space mapping with BWA"
+
+'''
+Simple repository dependencies:
+1. Create and populate column_maker_0440 so that it has an installable revision 0.
+2. Create and populate convert_chars_0440 so that it has an installable revision 0.
+3. Add a valid simple repository_dependencies.xml to convert_chars_0440 that points to the installable revision of column_maker_0440.
+4. Make sure the installable revision of convert_chars_0440 is now revision 1 instead of revision 0.
+5. Delete repository_dependencies.xml from convert_chars_0440, and make sure convert_chars_0440 now has two installable revisions: 1 and 2
+
+Complex repository dependencies:
+1. Create and populate bwa_package_0440 so that it has a valid orphan tool dependency definition and an installable revision 0.
+2. Create and populate bwa_base_0440 so that it has an installable revision 0.
+3. Add a valid complex repository dependency tool_dependencies.xml to bwa_base_0440 that points to the installable revision 0 of bwa_package_0440.
+4. Make sure that bwa_base_0440 installable revision is now revision 1 instead of revision 0.
+5. Delete tool_dependencies.xml from bwa_base_0440, and make sure bwa_base_0440 now has two installable revisions: 1 and 2
+
+Tool dependencies:
+1. Create and populate bwa_tool_dependency_0440 so that it has a valid orphan tool dependency definition and an installable revision 0.
+2. Delete tool_dependencies.xml from bwa_tool_dependency_0440, and make sure that bwa_tool_dependency_0440 still has
+ a single installable revision 0.
+3. Add the same tool_dependencies.xml file to bwa_tool_dependency_0440, and make sure that bwa_tool_dependency_0440
+ still has a single installable revision 0.
+'''
+
+
+class TestDeletedDependencies( ShedTwillTestCase ):
+ '''Test metadata setting when dependency definitions are deleted.'''
+
+ def test_0000_initiate_users( self ):
+ """Create necessary user accounts and login as an admin user."""
+ """
+ Create all the user accounts that are needed for this test script to run independently of other tests.
+ Previously created accounts will not be re-created.
+ """
+ self.logout()
+ self.login( email=common.test_user_1_email, username=common.test_user_1_name )
+ test_user_1 = test_db_util.get_user( common.test_user_1_email )
+ assert test_user_1 is not None, 'Problem retrieving user with email %s from the database' % common.test_user_1_email
+ test_user_1_private_role = test_db_util.get_private_role( test_user_1 )
+ self.logout()
+ self.login( email=common.admin_email, username=common.admin_username )
+ admin_user = test_db_util.get_user( common.admin_email )
+ assert admin_user is not None, 'Problem retrieving user with email %s from the database' % common.admin_email
+ admin_user_private_role = test_db_util.get_private_role( admin_user )
+
+ def test_0005_create_column_maker_repository( self ):
+ '''Create and populate a repository named column_maker_0440.'''
+ '''
+ We are at simple repository dependencies, step 1 - Create and populate column_maker_0440 so that it has an installable revision 0.
+ '''
+ category = self.create_category( name='Test 0440 Deleted Dependency Definitions',
+ description='Description of Deleted Dependency Definitions category for test 0440' )
+ self.logout()
+ self.login( email=common.test_user_1_email, username=common.test_user_1_name )
+ strings_displayed = [ "Repository 'column_maker_0440' has been created" ]
+ repository = self.get_or_create_repository( name=column_repository_name,
+ description=column_repository_description,
+ long_description=column_repository_long_description,
+ owner=common.test_user_1_name,
+ category_id=self.security.encode_id( category.id ),
+ strings_displayed=strings_displayed )
+ self.upload_file( repository,
+ filename='column_maker/column_maker.tar',
+ filepath=None,
+ valid_tools_only=True,
+ uncompress_file=True,
+ remove_repo_files_not_in_tar=False,
+ commit_message='Uploaded column maker tool tarball.',
+ strings_displayed=[],
+ strings_not_displayed=[] )
+
+ def test_0010_create_convert_chars_repository( self ):
+ '''Create and populate a repository named convert_chars_0440.'''
+ '''
+ We are at simple repository dependencies, step 2 - Create and populate convert_chars_0440 so that it has an installable revision 0.
+ '''
+ category = test_db_util.get_category_by_name( 'Test 0440 Deleted Dependency Definitions' )
+ self.logout()
+ self.login( email=common.test_user_1_email, username=common.test_user_1_name )
+ strings_displayed = [ "Repository 'convert_chars_0440' has been created" ]
+ repository = self.get_or_create_repository( name=convert_repository_name,
+ description=convert_repository_description,
+ long_description=convert_repository_long_description,
+ owner=common.test_user_1_name,
+ category_id=self.security.encode_id( category.id ),
+ strings_displayed=strings_displayed )
+ self.upload_file( repository,
+ filename='convert_chars/convert_chars.tar',
+ filepath=None,
+ valid_tools_only=True,
+ uncompress_file=True,
+ remove_repo_files_not_in_tar=False,
+ commit_message='Uploaded convert chars tool tarball.',
+ strings_displayed=[],
+ strings_not_displayed=[] )
+
+ def test_0015_create_dependency_on_convert_chars( self ):
+ '''Create a dependency definition file that specifies column_maker_0440 and upload it to convert_chars_0440.'''
+ '''
+ We are at simple repository dependencies, step 3 - Add a valid simple repository_dependencies.xml to
+ convert_chars_0440 that points to the installable revision of column_maker_0440.
+ '''
+ convert_repository = test_db_util.get_repository_by_name_and_owner( convert_repository_name, common.test_user_1_name )
+ column_repository = test_db_util.get_repository_by_name_and_owner( column_repository_name, common.test_user_1_name )
+ dependency_xml_path = self.generate_temp_path( 'test_0440', additional_paths=[ 'dependencies' ] )
+ column_tuple = ( self.url, column_repository.name, column_repository.user.username, self.get_repository_tip( column_repository ) )
+ # After this, convert_chars_0440 should depend on column_maker_0440.
+ self.create_repository_dependency( repository=convert_repository,
+ repository_tuples=[ column_tuple ],
+ filepath=dependency_xml_path,
+ prior_installation_required=True )
+ self.check_repository_dependency( convert_repository, column_repository )
+
+ def test_0020_verify_dependency_metadata( self ):
+ '''Verify that uploading the dependency moved metadata to the tip.'''
+ '''
+ We are at simple repository dependencies, step 4 - Make sure the installable revision of convert_chars_0440 is now
+ revision 1 (the tip) instead of revision 0.
+ '''
+ repository = test_db_util.get_repository_by_name_and_owner( convert_repository_name, common.test_user_1_name )
+ tip = self.get_repository_tip( repository )
+ metadata_record = self.get_repository_metadata_by_changeset_revision( repository, tip )
+ # Make sure that the new tip is now downloadable, and that there are no other downloadable revisions.
+ assert metadata_record.downloadable, 'Tip is not downloadable.'
+ assert len( repository.downloadable_revisions ) == 1, 'Repository %s has %d downloadable revisions, expected 1.' % \
+ ( repository.name, len( repository.downloadable_revisions ) )
+
+ def test_0025_delete_repository_dependency( self ):
+ '''Delete the repository_dependencies.xml from convert_chars_0440.'''
+ '''
+ We are at simple repository dependencies, steps 5 and 6 - Delete repository_dependencies.xml from convert_chars_0440.
+ Make sure convert_chars_0440 now has two installable revisions: 1 and 2
+ '''
+ repository = test_db_util.get_repository_by_name_and_owner( convert_repository_name, common.test_user_1_name )
+ # Record the current tip, so we can verify that it's still a downloadable revision after repository_dependencies.xml
+ # is deleted and a new downloadable revision is created.
+ old_changeset_revision = self.get_repository_tip( repository )
+ self.delete_files_from_repository( repository, filenames=[ 'repository_dependencies.xml' ] )
+ new_changeset_revision = self.get_repository_tip( repository )
+ # Check that the old changeset revision is still downloadable.
+ metadata_record = self.get_repository_metadata_by_changeset_revision( repository, old_changeset_revision )
+ assert metadata_record.downloadable, 'The revision of %s that contains repository_dependencies.xml is no longer downloadable.' % \
+ repository.name
+ # Check that the new tip is also downloadable.
+ metadata_record = self.get_repository_metadata_by_changeset_revision( repository, new_changeset_revision )
+ assert metadata_record.downloadable, 'The revision of %s that does not contain repository_dependencies.xml is not downloadable.' % \
+ repository.name
+ # Explicitly reload the repository instance from the database, to avoid potential caching issues.
+ test_db_util.refresh( repository )
+ # Verify that there are only two downloadable revisions.
+ assert len( repository.downloadable_revisions ) == 2, 'Repository %s has %d downloadable revisions, expected 2.' % \
+ ( repository.name, len( repository.downloadable_revisions ) )
+
+ def test_0030_create_bwa_package_repository( self ):
+ '''Create and populate the bwa_package_0440 repository.'''
+ '''
+ We are at complex repository dependencies, step 1 - Create and populate bwa_package_0440 so that it has a valid orphan
+ tool dependency definition and an installable revision 0.
+ '''
+ category = test_db_util.get_category_by_name( 'Test 0440 Deleted Dependency Definitions' )
+ self.logout()
+ self.login( email=common.test_user_1_email, username=common.test_user_1_name )
+ strings_displayed = [ "Repository 'bwa_package_0440' has been created" ]
+ repository = self.get_or_create_repository( name=bwa_package_repository_name,
+ description=bwa_package_repository_description,
+ long_description=bwa_package_repository_long_description,
+ owner=common.test_user_1_name,
+ category_id=self.security.encode_id( category.id ),
+ strings_displayed=strings_displayed )
+ self.upload_file( repository,
+ filename='bwa/complex/tool_dependencies.xml',
+ filepath=None,
+ valid_tools_only=True,
+ uncompress_file=True,
+ remove_repo_files_not_in_tar=False,
+ commit_message='Uploaded package tool dependency definition.',
+ strings_displayed=[],
+ strings_not_displayed=[] )
+
+ def test_0035_create_bwa_base_repository( self ):
+ '''Create and populate the bwa_base_0440 repository.'''
+ '''
+ We are at complex repository dependencies, step 2 - Create and populate bwa_base_0440 so that it has an installable revision 0.
+ This repository should contain a tool with a defined dependency that will be satisfied by the tool dependency defined in bwa_package_0440.
+ '''
+ category = test_db_util.get_category_by_name( 'Test 0440 Deleted Dependency Definitions' )
+ self.logout()
+ self.login( email=common.test_user_1_email, username=common.test_user_1_name )
+ strings_displayed = [ "Repository 'bwa_base_0440' has been created" ]
+ repository = self.get_or_create_repository( name=bwa_base_repository_name,
+ description=bwa_base_repository_description,
+ long_description=bwa_base_repository_long_description,
+ owner=common.test_user_1_name,
+ category_id=self.security.encode_id( category.id ),
+ strings_displayed=strings_displayed )
+ self.upload_file( repository,
+ filename='bwa/complex/bwa_base.tar',
+ filepath=None,
+ valid_tools_only=True,
+ uncompress_file=True,
+ remove_repo_files_not_in_tar=False,
+ commit_message='Uploaded BWA nucleotide space mapping tool tarball.',
+ strings_displayed=[],
+ strings_not_displayed=[] )
+
+ def test_0040_create_dependency_on_bwa_package_repository( self ):
+ '''Create a complex repository dependency on bwa_package_0440 and upload it to bwa_tool_0440.'''
+ '''
+ We are at complex repository dependencies, step 3 - Add a valid complex repository dependency tool_dependencies.xml to
+ bwa_base_0440 that points to the installable revision 0 of bwa_package_0440.
+ '''
+ bwa_package_repository = test_db_util.get_repository_by_name_and_owner( bwa_package_repository_name, common.test_user_1_name )
+ bwa_base_repository = test_db_util.get_repository_by_name_and_owner( bwa_base_repository_name, common.test_user_1_name )
+ dependency_path = self.generate_temp_path( 'test_0440', additional_paths=[ 'complex' ] )
+ changeset_revision = self.get_repository_tip( bwa_package_repository )
+ bwa_tuple = ( self.url, bwa_package_repository.name, bwa_package_repository.user.username, changeset_revision )
+ self.create_repository_dependency( repository=bwa_base_repository,
+ repository_tuples=[ bwa_tuple ],
+ filepath=dependency_path,
+ prior_installation_required=True,
+ complex=True,
+ package='bwa',
+ version='0.5.9' )
+
+ def test_0045_verify_dependency_metadata( self ):
+ '''Verify that uploading the dependency moved metadata to the tip.'''
+ '''
+ We are at complex repository dependencies, step 4 - Make sure that bwa_base_0440 installable revision is now revision 1
+ instead of revision 0.
+ '''
+ repository = test_db_util.get_repository_by_name_and_owner( bwa_base_repository_name, common.test_user_1_name )
+ tip = self.get_repository_tip( repository )
+ metadata_record = self.get_repository_metadata_by_changeset_revision( repository, tip )
+ # Make sure that the new tip is now downloadable, and that there are no other downloadable revisions.
+ assert metadata_record.downloadable, 'Tip is not downloadable.'
+ assert len( repository.downloadable_revisions ) == 1, 'Repository %s has %d downloadable revisions, expected 1.' % \
+ ( repository.name, len( repository.downloadable_revisions ) )
+
+ def test_0050_delete_complex_repository_dependency( self ):
+ '''Delete the tool_dependencies.xml from bwa_base_0440.'''
+ '''
+ We are at complex repository dependencies, step 5 - Delete tool_dependencies.xml from bwa_base_0440,
+ and make sure bwa_base_0440 now has two installable revisions: 1 and 2
+ '''
+ repository = test_db_util.get_repository_by_name_and_owner( bwa_base_repository_name, common.test_user_1_name )
+ # Record the current tip, so we can verify that it's still a downloadable revision after tool_dependencies.xml
+ # is deleted and a new downloadable revision is created.
+ old_changeset_revision = self.get_repository_tip( repository )
+ self.delete_files_from_repository( repository, filenames=[ 'tool_dependencies.xml' ] )
+ new_changeset_revision = self.get_repository_tip( repository )
+ # Check that the old changeset revision is still downloadable.
+ metadata_record = self.get_repository_metadata_by_changeset_revision( repository, old_changeset_revision )
+ assert metadata_record.downloadable, 'The revision of %s that contains tool_dependencies.xml is no longer downloadable.' % \
+ repository.name
+ # Check that the new tip is also downloadable.
+ metadata_record = self.get_repository_metadata_by_changeset_revision( repository, new_changeset_revision )
+ assert metadata_record.downloadable, 'The revision of %s that does not contain tool_dependencies.xml is not downloadable.' % \
+ repository.name
+ # Verify that there are only two downloadable revisions.
+ assert len( repository.downloadable_revisions ) == 2, 'Repository %s has %d downloadable revisions, expected 2.' % \
+ ( repository.name, len( repository.downloadable_revisions ) )
+
+ def test_0055_create_bwa_tool_dependency_repository( self ):
+ '''Create and populate the bwa_tool_dependency_0440 repository.'''
+ '''
+ We are at tool dependencies, step 1 - Create and populate bwa_tool_dependency_0440 so that it has a valid orphan tool
+ dependency definition and an installable revision 0.
+ '''
+ category = test_db_util.get_category_by_name( 'Test 0440 Deleted Dependency Definitions' )
+ self.logout()
+ self.login( email=common.test_user_1_email, username=common.test_user_1_name )
+ strings_displayed = [ "Repository 'bwa_tool_dependency_0440' has been created" ]
+ repository = self.get_or_create_repository( name=bwa_tool_dependency_repository_name,
+ description=bwa_tool_dependency_repository_description,
+ long_description=bwa_tool_dependency_repository_long_description,
+ owner=common.test_user_1_name,
+ category_id=self.security.encode_id( category.id ),
+ strings_displayed=strings_displayed )
+ self.upload_file( repository,
+ filename='bwa/complex/tool_dependencies.xml',
+ filepath=None,
+ valid_tools_only=True,
+ uncompress_file=True,
+ remove_repo_files_not_in_tar=False,
+ commit_message='Uploaded package tool dependency definition.',
+ strings_displayed=[],
+ strings_not_displayed=[] )
+
+ def test_0060_delete_bwa_tool_dependency_definition( self ):
+ '''Delete the tool_dependencies.xml file from bwa_tool_dependency_0440.'''
+ '''
+ We are at tool dependencies, step 2 - Delete tool_dependencies.xml from bwa_tool_dependency_0440.
+ Make sure bwa_tool_dependency_0440 still has a downloadable changeset revision at the old tip.
+ '''
+ repository = test_db_util.get_repository_by_name_and_owner( bwa_tool_dependency_repository_name, common.test_user_1_name )
+ # Record the current tip, so we can verify that it's still a downloadable revision after repository_dependencies.xml
+ # is deleted and a new downloadable revision is created.
+ old_changeset_revision = self.get_repository_tip( repository )
+ self.delete_files_from_repository( repository, filenames=[ 'tool_dependencies.xml' ] )
+ new_changeset_revision = self.get_repository_tip( repository )
+ # Check that the old changeset revision is still downloadable.
+ metadata_record = self.get_repository_metadata_by_changeset_revision( repository, old_changeset_revision )
+ assert metadata_record.downloadable, 'The revision of %s that contains tool_dependencies.xml is no longer downloadable.' % \
+ repository.name
+ # Check that the new tip does not have a metadata revision.
+ metadata_record = self.get_repository_metadata_by_changeset_revision( repository, new_changeset_revision )
+ # If a changeset revision does not have metadata, the above method will return None.
+ assert metadata_record is None, 'The tip revision of %s should not have metadata, but metadata was found.' % repository.name
+ # Verify that the new changeset revision is not downloadable.
+ assert len( repository.downloadable_revisions ) == 1, 'Repository %s has %d downloadable revisions, expected 1.' % \
+ ( repository.name, len( repository.downloadable_revisions ) )
+
+ def test_0065_reupload_bwa_tool_dependency_definition( self ):
+ '''Reupload the tool_dependencies.xml file to bwa_tool_dependency_0440.'''
+ '''
+ We are at tool dependencies, step 3 - Add the same tool_dependencies.xml file to bwa_tool_dependency_0440, and make sure
+ that bwa_tool_dependency_0440 still has a single installable revision 0.
+ '''
+ repository = test_db_util.get_repository_by_name_and_owner( bwa_tool_dependency_repository_name, common.test_user_1_name )
+ # Record the current tip, so we can verify that it's still not a downloadable revision after tool_dependencies.xml
+ # is re-uploaded and a new downloadable revision is created.
+ old_changeset_revision = self.get_repository_tip( repository )
+ self.upload_file( repository,
+ filename='bwa/complex/tool_dependencies.xml',
+ filepath=None,
+ valid_tools_only=True,
+ uncompress_file=True,
+ remove_repo_files_not_in_tar=False,
+ commit_message='Uploaded package tool dependency definition.',
+ strings_displayed=[],
+ strings_not_displayed=[] )
+ new_changeset_revision = self.get_repository_tip( repository )
+ # Check that the old changeset revision is still downloadable.
+ metadata_record = self.get_repository_metadata_by_changeset_revision( repository, old_changeset_revision )
+ assert metadata_record is None, 'The revision of %s that does not contain tool_dependencies.xml should not be downloadable, but is.' % \
+ repository.name
+ # Check that the new tip is also downloadable.
+ metadata_record = self.get_repository_metadata_by_changeset_revision( repository, new_changeset_revision )
+ assert metadata_record.downloadable, 'The revision of %s that contains tool_dependencies.xml is not downloadable.' % \
+ repository.name
+ # Verify that there are only two downloadable revisions.
+ assert len( repository.downloadable_revisions ) == 1, 'Repository %s has %d downloadable revisions, expected 1.' % \
+ ( repository.name, len( repository.downloadable_revisions ) )
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/ea0b7ca55aec/
Changeset: ea0b7ca55aec
User: greg
Date: 2013-04-22 20:51:48
Summary: Raise exceptions when tool dependency definition <install> and <set_environment> tags define an unsupported version attribute.
Affected #: 1 file
diff -r 42632cc2a166e8933fe29496a6087309769b8987 -r ea0b7ca55aec1552718132227d80b0ae82ca2913 lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
--- a/lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
+++ b/lib/tool_shed/galaxy_install/tool_dependencies/install_util.py
@@ -151,6 +151,8 @@
action_dict[ env_elem.tag ] = env_var_dicts
actions.append( ( action_type, action_dict ) )
return tool_dependency, actions
+ else:
+ raise NotImplementedError( 'Only install version 1.0 is currently supported (i.e., change your tag to be <install version="1.0">).' )
return None, actions
def install_and_build_package_via_fabric( app, tool_dependency, actions_dict ):
@@ -299,6 +301,8 @@
sa_session.refresh( tool_dependency )
if tool_dependency.status != app.model.ToolDependency.installation_status.ERROR:
print package_name, 'version', package_version, 'installed in', install_dir
+ else:
+ raise NotImplementedError( 'Only install version 1.0 is currently supported (i.e., change your tag to be <install version="1.0">).' )
elif package_elem.tag == 'readme':
# Nothing to be done.
continue
@@ -550,6 +554,8 @@
sa_session.add( tool_dependency )
sa_session.flush()
print 'Environment variable ', env_var_name, 'set in', install_dir
+ else:
+ raise NotImplementedError( 'Only set_environment version 1.0 is currently supported (i.e., change your tag to be <set_environment version="1.0">).' )
def strip_path( fpath ):
if not fpath:
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.