galaxy-commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
February 2013
- 2 participants
- 189 discussions
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/3880939e0186/
changeset: 3880939e0186
user: inithello
date: 2013-02-01 21:31:33
summary: Removed log.debug.
affected #: 1 file
diff -r 3f49f8cc4c67f967275d9d214bf7d7b0e934b48e -r 3880939e0186a26f61d4793fafaaf6ab9f45c256 lib/galaxy/util/shed_util_common.py
--- a/lib/galaxy/util/shed_util_common.py
+++ b/lib/galaxy/util/shed_util_common.py
@@ -2507,7 +2507,6 @@
log.debug( error_message )
return new_rd_tups, error_message
try:
- log.debug( dict(name=name) )
repository = sa_session.query( app.model.Repository ) \
.filter( and_( app.model.Repository.table.c.name == name,
app.model.Repository.table.c.user_id == user.id ) ) \
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
0
commit/galaxy-central: inithello: Fix detection of invalid repository dependencies on upload.
by Bitbucket 01 Feb '13
by Bitbucket 01 Feb '13
01 Feb '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/3f49f8cc4c67/
changeset: 3f49f8cc4c67
user: inithello
date: 2013-02-01 21:28:43
summary: Fix detection of invalid repository dependencies on upload.
affected #: 1 file
diff -r 142acf3cf8b831038bfb82d877e41168372a773e -r 3f49f8cc4c67f967275d9d214bf7d7b0e934b48e lib/galaxy/util/shed_util_common.py
--- a/lib/galaxy/util/shed_util_common.py
+++ b/lib/galaxy/util/shed_util_common.py
@@ -2489,7 +2489,7 @@
app.model.ToolShedRepository.table.c.owner == owner ) ) \
.first()
except:
- error_message = "Invalid name %s or owner %s defined for repository. Repository dependencies will be ignored." % ( name, owner )
+ error_message = "Invalid name <b>%s</b> or owner <b>%s</b> defined for repository. Repository dependencies will be ignored." % ( name, owner )
log.debug( error_message )
return new_rd_tups, error_message
repository_dependencies_tup = ( toolshed, name, owner, changeset_revision )
@@ -2503,16 +2503,29 @@
.filter( app.model.User.table.c.username == owner ) \
.one()
except Exception, e:
- error_message = "Invalid owner %s defined for repository %s. Repository dependencies will be ignored." % ( str( owner ), str( name ) )
+ error_message = "Invalid owner <b>%s</b> defined for repository <b>%s</b>. Repository dependencies will be ignored." % ( str( owner ), str( name ) )
log.debug( error_message )
return new_rd_tups, error_message
try:
+ log.debug( dict(name=name) )
repository = sa_session.query( app.model.Repository ) \
.filter( and_( app.model.Repository.table.c.name == name,
app.model.Repository.table.c.user_id == user.id ) ) \
- .first()
+ .one()
except:
- error_message = "Invalid repository name %s defined. Repository dependencies will be ignored." % str( name )
+ error_message = "Invalid repository name <b>%s</b> defined. Repository dependencies will be ignored." % str( name )
+ log.debug( error_message )
+ return new_rd_tups, error_message
+ # Find the specified changeset revision in the repository's changelog to see if it's valid.
+ found = False
+ repo = hg.repository( get_configured_ui(), repository.repo_path( app ) )
+ for changeset in repo.changelog:
+ changeset_hash = str( repo.changectx( changeset ) )
+ if changeset_hash == changeset_revision:
+ found = True
+ break
+ if not found:
+ error_message = "Invalid changeset revision <b>%s</b> defined. Repository dependencies will be ignored." % str( changeset_revision )
log.debug( error_message )
return new_rd_tups, error_message
repository_dependencies_tup = ( toolshed, name, owner, changeset_revision )
@@ -2520,7 +2533,7 @@
new_rd_tups.append( repository_dependencies_tup )
else:
# Repository dependencies are currentlhy supported within a single tool shed.
- error_message = "Invalid tool shed %s defined for repository %s. " % ( toolshed, name )
+ error_message = "Invalid tool shed <b>%s</b> defined for repository <b>%s</b>. " % ( toolshed, name )
error_message += "Repository dependencies are currently supported within a single tool shed."
log.debug( error_message )
return new_rd_tups, error_message
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
0
commit/galaxy-central: inithello: Fix for installing a complex dependency that has not been previously installed.
by Bitbucket 01 Feb '13
by Bitbucket 01 Feb '13
01 Feb '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/142acf3cf8b8/
changeset: 142acf3cf8b8
user: inithello
date: 2013-02-01 19:37:38
summary: Fix for installing a complex dependency that has not been previously installed.
affected #: 1 file
diff -r c42bfba51ea0eb21cf83b19a193104b3ce4fbfd5 -r 142acf3cf8b831038bfb82d877e41168372a773e lib/galaxy/tool_shed/tool_dependencies/install_util.py
--- a/lib/galaxy/tool_shed/tool_dependencies/install_util.py
+++ b/lib/galaxy/tool_shed/tool_dependencies/install_util.py
@@ -227,8 +227,8 @@
tool_dependency_type='package',
tool_dependency_name=package_name,
tool_dependency_version=package_version )
- assert os.path.exists( required_repository_package_install_dir ), \
- 'Missing required tool dependency directory %s' % str( required_repository_package_install_dir )
+ if not os.path.exists( required_repository_package_install_dir ):
+ print 'Missing required tool dependency directory %s' % str( required_repository_package_install_dir )
repo_files_dir = required_repository.repo_files_directory( app )
tool_dependencies_config = get_absolute_path_to_file_in_repository( repo_files_dir, 'tool_dependencies.xml' )
if tool_dependencies_config:
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
0
commit/galaxy-central: greg: When resetting all metadata on a repository in the tool shed, restrict display of error messages to those associated with the tip.
by Bitbucket 01 Feb '13
by Bitbucket 01 Feb '13
01 Feb '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/c42bfba51ea0/
changeset: c42bfba51ea0
user: greg
date: 2013-02-01 19:13:09
summary: When resetting all metadata on a repository in the tool shed, restrict display of error messages to those associated with the tip.
affected #: 1 file
diff -r 7250bc892ede728688c010493a4019ec27d2decd -r c42bfba51ea0eb21cf83b19a193104b3ce4fbfd5 lib/galaxy/util/shed_util_common.py
--- a/lib/galaxy/util/shed_util_common.py
+++ b/lib/galaxy/util/shed_util_common.py
@@ -3154,7 +3154,9 @@
resetting_all_metadata_on_repository=True,
updating_installed_repository=False,
persist=False )
- invalid_file_tups.extend( invalid_tups )
+ # We'll only display error messages for the repository tip (it may be better to display error messages for each installable changeset revision).
+ if current_metadata_dict == repository.tip( trans.app ):
+ invalid_file_tups.extend( invalid_tups )
if current_metadata_dict:
if not metadata_changeset_revision and not metadata_dict:
# We're at the first change set in the change log.
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
0
commit/galaxy-central: inithello: Uncommented cleanup method in functional_tests.py.
by Bitbucket 01 Feb '13
by Bitbucket 01 Feb '13
01 Feb '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/7250bc892ede/
changeset: 7250bc892ede
user: inithello
date: 2013-02-01 17:43:40
summary: Uncommented cleanup method in functional_tests.py.
affected #: 1 file
diff -r cd6d105e5a5ba60e317ca7e194d63e2025272edb -r 7250bc892ede728688c010493a4019ec27d2decd test/tool_shed/functional_tests.py
--- a/test/tool_shed/functional_tests.py
+++ b/test/tool_shed/functional_tests.py
@@ -391,14 +391,14 @@
galaxyapp.shutdown()
galaxyapp = None
log.info( "Embedded galaxy application stopped" )
-# if 'TOOL_SHED_TEST_NO_CLEANUP' not in os.environ:
-# try:
-# for dir in [ tool_shed_test_tmp_dir ]:
-# if os.path.exists( dir ):
-# log.info( "Cleaning up temporary files in %s" % dir )
-# shutil.rmtree( dir )
-# except:
-# pass
+ if 'TOOL_SHED_TEST_NO_CLEANUP' not in os.environ:
+ try:
+ for dir in [ tool_shed_test_tmp_dir ]:
+ if os.path.exists( dir ):
+ log.info( "Cleaning up temporary files in %s" % dir )
+ shutil.rmtree( dir )
+ except:
+ pass
if success:
return 0
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
0
commit/galaxy-central: inithello: Tool shed functional tests for complex repository dependencies. Tool shed functional tests for reserved strings in repository and user names. Tool shed functional test enhancements.
by Bitbucket 01 Feb '13
by Bitbucket 01 Feb '13
01 Feb '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/cd6d105e5a5b/
changeset: cd6d105e5a5b
user: inithello
date: 2013-02-01 17:42:18
summary: Tool shed functional tests for complex repository dependencies. Tool shed functional tests for reserved strings in repository and user names. Tool shed functional test enhancements.
affected #: 8 files
diff -r ee154ef5073e9d6f8e204f893d8c24b1ed2117dd -r cd6d105e5a5ba60e317ca7e194d63e2025272edb test/tool_shed/base/common.py
--- a/test/tool_shed/base/common.py
+++ b/test/tool_shed/base/common.py
@@ -18,6 +18,14 @@
test_user_3_email = 'test-3(a)bx.psu.edu'
test_user_3_name = 'user3'
+complex_repository_dependency_template = '''<?xml version="1.0"?>
+<tool_dependency>
+ <package name="${package}" version="${version}">
+${dependency_lines}
+ </package>
+</tool_dependency>
+'''
+
new_repository_dependencies_xml = '''<?xml version="1.0"?><repositories${description}>
${dependency_lines}
diff -r ee154ef5073e9d6f8e204f893d8c24b1ed2117dd -r cd6d105e5a5ba60e317ca7e194d63e2025272edb test/tool_shed/base/twilltestcase.py
--- a/test/tool_shed/base/twilltestcase.py
+++ b/test/tool_shed/base/twilltestcase.py
@@ -203,6 +203,16 @@
return '%s=%s&%s=%s' % ( field_name, field_value, field_name, field_value )
else:
return '%s=%s' % ( field_name, field_value )
+ def create_repository_complex_dependency( self, repository, xml_filename, depends_on={} ):
+ self.generate_repository_dependency_xml( depends_on[ 'repositories' ],
+ xml_filename,
+ complex=True,
+ package=depends_on[ 'package' ],
+ version=depends_on[ 'version' ] )
+ self.upload_file( repository,
+ 'tool_dependencies.xml',
+ filepath=os.path.split( xml_filename )[0],
+ commit_message='Uploaded dependency on %s.' % ', '.join( repo.name for repo in depends_on[ 'repositories' ] ) )
def create_repository_dependency( self, repository=None, depends_on=[], filepath=None ):
dependency_description = '%s depends on %s.' % ( repository.name, ', '.join( repo.name for repo in depends_on ) )
self.generate_repository_dependency_xml( depends_on,
@@ -426,7 +436,25 @@
self.visit_galaxy_url( "/user/logout" )
self.check_page_for_string( "You have been logged out" )
self.home()
- def generate_repository_dependency_xml( self, repositories, xml_filename, dependency_description='' ):
+ def generate_invalid_dependency_xml( self, xml_filename, url, name, owner, changeset_revision, complex=True, package=None, version=None, description=None ):
+ file_path = os.path.split( xml_filename )[0]
+ dependency_entries = []
+ template = string.Template( common.new_repository_dependencies_line )
+ dependency_entries.append( template.safe_substitute( toolshed_url=url,
+ owner=owner,
+ repository_name=name,
+ changeset_revision=changeset_revision ) )
+ if not os.path.exists( file_path ):
+ os.makedirs( file_path )
+ if complex:
+ dependency_template = string.Template( common.complex_repository_dependency_template )
+ repository_dependency_xml = dependency_template.safe_substitute( package=package, version=version, dependency_lines='\n'.join( dependency_entries ) )
+ else:
+ template_parser = string.Template( common.new_repository_dependencies_xml )
+ repository_dependency_xml = template_parser.safe_substitute( description=description, dependency_lines='\n'.join( dependency_entries ) )
+ # Save the generated xml to the specified location.
+ file( xml_filename, 'w' ).write( repository_dependency_xml )
+ def generate_repository_dependency_xml( self, repositories, xml_filename, dependency_description='', complex=False, package=None, version=None ):
file_path = os.path.split( xml_filename )[0]
if not os.path.exists( file_path ):
os.makedirs( file_path )
@@ -442,8 +470,12 @@
description = ' description="%s"' % dependency_description
else:
description = dependency_description
- template_parser = string.Template( common.new_repository_dependencies_xml )
- repository_dependency_xml = template_parser.safe_substitute( description=description, dependency_lines='\n'.join( dependency_entries ) )
+ if complex:
+ dependency_template = string.Template( common.complex_repository_dependency_template )
+ repository_dependency_xml = dependency_template.safe_substitute( package=package, version=version, dependency_lines='\n'.join( dependency_entries ) )
+ else:
+ template_parser = string.Template( common.new_repository_dependencies_xml )
+ repository_dependency_xml = template_parser.safe_substitute( description=description, dependency_lines='\n'.join( dependency_entries ) )
# Save the generated xml to the specified location.
file( xml_filename, 'w' ).write( repository_dependency_xml )
def generate_temp_path( self, test_script_path, additional_paths=[] ):
@@ -655,6 +687,11 @@
if includes_tools:
self.submit_form( 1, 'select_tool_panel_section_button', **kwd )
self.check_for_strings( post_submit_strings_displayed, strings_not_displayed )
+ else:
+ self.check_for_strings(strings_displayed=[ 'Choose the configuration file whose tool_path setting will be used for installing repositories' ] )
+ args = dict( shed_tool_conf=self.shed_tool_conf )
+ self.submit_form( 1, 'select_shed_tool_panel_config_button', **args )
+ self.check_for_strings( post_submit_strings_displayed, strings_not_displayed )
repository_ids = self.initiate_installation_process( new_tool_panel_section=new_tool_panel_section )
self.wait_for_repository_installation( repository_ids )
def load_invalid_tool_page( self, repository, tool_xml, changeset_revision, strings_displayed=[], strings_not_displayed=[] ):
diff -r ee154ef5073e9d6f8e204f893d8c24b1ed2117dd -r cd6d105e5a5ba60e317ca7e194d63e2025272edb test/tool_shed/functional/test_0000_basic_repository_features.py
--- a/test/tool_shed/functional/test_0000_basic_repository_features.py
+++ b/test/tool_shed/functional/test_0000_basic_repository_features.py
@@ -158,3 +158,19 @@
'''Verify that resetting the metadata does not change it.'''
repository = test_db_util.get_repository_by_name_and_owner( repository_name, common.test_user_1_name )
self.verify_unchanged_repository_metadata( repository )
+ def test_0090_verify_reserved_repository_name_handling( self ):
+ '''Check that reserved repository names are handled correctly.'''
+ category = test_db_util.get_category_by_name( 'Test 0000 Basic Repository Features 1' )
+ self.get_or_create_repository( name='repos',
+ description=repository_description,
+ long_description=repository_long_description,
+ owner=common.test_user_1_name,
+ category_id=self.security.encode_id( category.id ),
+ strings_displayed=[ 'The term <b>repos</b> is a reserved word in the tool shed, so it cannot be used as a repository name.' ] )
+ def test_0100_verify_reserved_username_handling( self ):
+ '''Check that reserved usernames are handled correctly.'''
+ self.logout()
+ self.login( email='baduser(a)bx.psu.edu', username='repos' )
+ test_user_1 = test_db_util.get_user( 'baduser(a)bx.psu.edu' )
+ assert test_user_1 is None, 'Creating user with public name "repos" succeeded.'
+ self.check_for_strings( strings_displayed=[ 'The term <b>repos</b> is a reserved word in the tool shed, so it cannot be used as a public user name.' ] )
diff -r ee154ef5073e9d6f8e204f893d8c24b1ed2117dd -r cd6d105e5a5ba60e317ca7e194d63e2025272edb test/tool_shed/functional/test_0100_complex_repository_dependencies.py
--- /dev/null
+++ b/test/tool_shed/functional/test_0100_complex_repository_dependencies.py
@@ -0,0 +1,154 @@
+from tool_shed.base.twilltestcase import ShedTwillTestCase, common, os
+import tool_shed.base.test_db_util as test_db_util
+
+bwa_base_repository_name = 'bwa_base_repository_0100'
+bwa_base_repository_description = "BWA Base"
+bwa_base_repository_long_description = "BWA tool that depends on bwa 0.5.9, with a complex repository dependency pointing at bwa_tool_repository_0100"
+
+bwa_tool_repository_name = 'bwa_tool_repository_0100'
+bwa_tool_repository_description = "BWA Tool"
+bwa_tool_repository_long_description = "BWA repository with a package tool dependency defined for BWA 0.5.9."
+
+category_name = 'Test 0100 Complex Repository Dependencies'
+category_description = 'Test 0100 Complex Repository Dependencies'
+
+class TestComplexRepositoryDependencies( ShedTwillTestCase ):
+ '''Test features related to complex repository dependencies.'''
+ def test_0000_initiate_users( self ):
+ """Create necessary user accounts."""
+ 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' % 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' % admin_email
+ admin_user_private_role = test_db_util.get_private_role( admin_user )
+ def test_0005_create_bwa_tool_repository( self ):
+ '''Create and populate bwa_tool_0100.'''
+ category = self.create_category( name=category_name, description=category_description )
+ self.logout()
+ self.login( email=common.test_user_1_email, username=common.test_user_1_name )
+ repository = self.get_or_create_repository( name=bwa_tool_repository_name,
+ description=bwa_tool_repository_description,
+ long_description=bwa_tool_repository_long_description,
+ owner=common.test_user_1_name,
+ category_id=self.security.encode_id( category.id ),
+ strings_displayed=[] )
+ self.upload_file( repository,
+ 'bwa/complex/tool_dependencies.xml',
+ strings_displayed=[],
+ commit_message='Uploaded tool_dependencies.xml.' )
+ self.display_manage_repository_page( repository, strings_displayed=[ 'Tool dependencies', 'may not be', 'in this repository' ] )
+ def test_0010_create_bwa_base_repository( self ):
+ '''Create and populate bwa_base_0100.'''
+ category = self.create_category( name=category_name, description=category_description )
+ self.logout()
+ self.login( email=common.test_user_1_email, username=common.test_user_1_name )
+ 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=[] )
+ tool_repository = test_db_util.get_repository_by_name_and_owner( bwa_tool_repository_name, common.test_user_1_name )
+ self.upload_file( repository,
+ 'bwa/complex/bwa_base.tar',
+ strings_displayed=[],
+ commit_message='Uploaded bwa_base.tar with tool wrapper XML, but without tool dependency XML.' )
+ def test_0015_generate_complex_repository_dependency_invalid_shed_url( self ):
+ '''Generate and upload a complex repository definition that specifies an invalid tool shed URL.'''
+ dependency_path = self.generate_temp_path( 'test_0100', additional_paths=[ 'complex', 'shed' ] )
+ xml_filename = self.get_filename( 'tool_dependencies.xml', filepath=dependency_path )
+ repository = test_db_util.get_repository_by_name_and_owner( bwa_base_repository_name, common.test_user_1_name )
+ url = 'http://http://this is not an url!'
+ name = repository.name
+ owner = repository.user.username
+ changeset_revision = self.get_repository_tip( repository )
+ self.generate_invalid_dependency_xml( xml_filename, url, name, owner, changeset_revision, complex=True, package='bwa', version='0.5.9' )
+ strings_displayed = [ 'Invalid tool shed %s defined for repository %s' % ( url, repository.name ) ]
+ self.upload_file( repository,
+ 'tool_dependencies.xml',
+ valid_tools_only=False,
+ filepath=dependency_path,
+ commit_message='Uploaded dependency on bwa_tool_0100 with invalid url.',
+ strings_displayed=strings_displayed )
+ def test_0020_generate_complex_repository_dependency_invalid_repository_name( self ):
+ '''Generate and upload a complex repository definition that specifies an invalid repository name.'''
+ dependency_path = self.generate_temp_path( 'test_0100', additional_paths=[ 'complex', 'shed' ] )
+ xml_filename = self.get_filename( 'tool_dependencies.xml', filepath=dependency_path )
+ repository = test_db_util.get_repository_by_name_and_owner( bwa_base_repository_name, common.test_user_1_name )
+ url = self.url
+ name = 'invalid_repository!?'
+ owner = repository.user.username
+ changeset_revision = self.get_repository_tip( repository )
+ self.generate_invalid_dependency_xml( xml_filename, url, name, owner, changeset_revision, complex=True, package='bwa', version='0.5.9' )
+ strings_displayed = 'Ignoring repository dependency definition for tool shed %s, name %s, owner %s' % ( url, name, owner )
+ strings_displayed += ', changeset revision %s because the name is invalid.' % changeset_revision
+ self.upload_file( repository,
+ 'tool_dependencies.xml',
+ valid_tools_only=False,
+ filepath=dependency_path,
+ commit_message='Uploaded dependency on bwa_tool_0100 with invalid repository name.',
+ strings_displayed=[ strings_displayed ] )
+ def test_0025_generate_complex_repository_dependency_invalid_owner_name( self ):
+ '''Generate and upload a complex repository definition that specifies an invalid owner.'''
+ dependency_path = self.generate_temp_path( 'test_0100', additional_paths=[ 'complex', 'shed' ] )
+ xml_filename = self.get_filename( 'tool_dependencies.xml', filepath=dependency_path )
+ repository = test_db_util.get_repository_by_name_and_owner( bwa_base_repository_name, common.test_user_1_name )
+ url = self.url
+ name = repository.name
+ owner = 'invalid_owner!?'
+ changeset_revision = self.get_repository_tip( repository )
+ self.generate_invalid_dependency_xml( xml_filename, url, name, owner, changeset_revision, complex=True, package='bwa', version='0.5.9' )
+ strings_displayed = [ 'Invalid owner %s defined for repository %s. Repository dependencies will be ignored.' % ( owner, name ) ]
+ self.upload_file( repository,
+ 'tool_dependencies.xml',
+ valid_tools_only=False,
+ filepath=dependency_path,
+ commit_message='Uploaded dependency on bwa_tool_0100 with invalid owner.',
+ strings_displayed=strings_displayed )
+ def test_0030_generate_complex_repository_dependency_invalid_changeset_revision( self ):
+ '''Generate and upload a complex repository definition that specifies an invalid changeset revision.'''
+ dependency_path = self.generate_temp_path( 'test_0100', additional_paths=[ 'complex', 'shed' ] )
+ xml_filename = self.get_filename( 'tool_dependencies.xml', filepath=dependency_path )
+ repository = test_db_util.get_repository_by_name_and_owner( bwa_base_repository_name, common.test_user_1_name )
+ url = self.url
+ name = repository.name
+ owner = repository.user.username
+ changeset_revision = '1234abcd'
+ self.generate_invalid_dependency_xml( xml_filename, url, name, owner, changeset_revision, complex=True, package='bwa', version='0.5.9' )
+ strings_displayed = 'Ignoring repository dependency definition for tool shed %s, name %s, owner %s' % ( url, name, owner )
+ strings_displayed += ', changeset revision %s because the changeset revision is invalid.' % changeset_revision
+ self.upload_file( repository,
+ 'tool_dependencies.xml',
+ valid_tools_only=False,
+ filepath=dependency_path,
+ commit_message='Uploaded dependency on bwa_tool_0100 with invalid changeset revision.',
+ strings_displayed=[ strings_displayed ] )
+ def test_0035_generate_complex_repository_dependency( self ):
+ '''Generate and upload a tool_dependencies.xml file that specifies a repository rather than a tool.'''
+ base_repository = test_db_util.get_repository_by_name_and_owner( bwa_base_repository_name, common.test_user_1_name )
+ tool_repository = test_db_util.get_repository_by_name_and_owner( bwa_tool_repository_name, common.test_user_1_name )
+ dependency_path = self.generate_temp_path( 'test_0100', additional_paths=[ 'complex' ] )
+ self.create_repository_complex_dependency( base_repository,
+ self.get_filename( 'tool_dependencies.xml', filepath=dependency_path ),
+ depends_on=dict( package='bwa', version='0.5.9', repositories=[ tool_repository ] ) )
+ self.check_repository_dependency( base_repository, tool_repository )
+ self.display_manage_repository_page( base_repository, strings_displayed=[ 'bwa', '0.5.9', 'package' ] )
+ def test_0040_update_base_repository( self ):
+ '''Upload a new tool_dependencies.xml to the tool repository, and verify that the base repository displays the new changeset.'''
+ base_repository = test_db_util.get_repository_by_name_and_owner( bwa_base_repository_name, common.test_user_1_name )
+ tool_repository = test_db_util.get_repository_by_name_and_owner( bwa_tool_repository_name, common.test_user_1_name )
+ previous_changeset = self.get_repository_tip( tool_repository )
+ self.upload_file( tool_repository,
+ 'bwa/complex/readme/tool_dependencies.xml',
+ strings_displayed=[],
+ commit_message='Uploaded new tool_dependencies.xml.' )
+ # Verify that the dependency display has been updated as a result of the new tool_dependencies.xml file.
+ self.display_manage_repository_page( base_repository,
+ strings_displayed=[ self.get_repository_tip( tool_repository ), 'bwa', '0.5.9', 'package' ],
+ strings_not_displayed=[ previous_changeset ] )
+
diff -r ee154ef5073e9d6f8e204f893d8c24b1ed2117dd -r cd6d105e5a5ba60e317ca7e194d63e2025272edb test/tool_shed/functional_tests.py
--- a/test/tool_shed/functional_tests.py
+++ b/test/tool_shed/functional_tests.py
@@ -184,27 +184,27 @@
kwargs[ 'object_store' ] = 'distributed'
kwargs[ 'distributed_object_store_config_file' ] = 'distributed_object_store_conf.xml.sample'
- toolshedapp = ToolshedUniverseApplication( job_queue_workers = 5,
- id_secret = 'changethisinproductiontoo',
- template_path = 'templates',
- database_connection = toolshed_database_connection,
- database_engine_option_pool_size = '10',
- file_path = shed_file_path,
- new_file_path = new_repos_path,
- tool_path=tool_path,
- datatype_converters_config_file = 'datatype_converters_conf.xml.sample',
- tool_parse_help = False,
- tool_data_table_config_path = galaxy_tool_data_table_conf_file,
- shed_tool_data_table_config = shed_tool_data_table_conf_file,
- log_destination = "stdout",
- use_heartbeat = False,
- allow_user_creation = True,
- allow_user_deletion = True,
- admin_users = 'test(a)bx.psu.edu',
- global_conf = global_conf,
- running_functional_tests = True,
- hgweb_config_dir = hgweb_config_dir,
- **kwargs )
+ toolshedapp = ToolshedUniverseApplication( admin_users = 'test(a)bx.psu.edu',
+ allow_user_creation = True,
+ allow_user_deletion = True,
+ database_connection = toolshed_database_connection,
+ database_engine_option_pool_size = '10',
+ datatype_converters_config_file = 'datatype_converters_conf.xml.sample',
+ file_path = shed_file_path,
+ global_conf = global_conf,
+ hgweb_config_dir = hgweb_config_dir,
+ job_queue_workers = 5,
+ id_secret = 'changethisinproductiontoo',
+ log_destination = "stdout",
+ new_file_path = new_repos_path,
+ running_functional_tests = True,
+ shed_tool_data_table_config = shed_tool_data_table_conf_file,
+ template_path = 'templates',
+ tool_path=tool_path,
+ tool_parse_help = False,
+ tool_data_table_config_path = galaxy_tool_data_table_conf_file,
+ use_heartbeat = False,
+ **kwargs )
log.info( "Embedded Toolshed application started" )
@@ -269,32 +269,32 @@
galaxy_global_conf = { '__file__' : 'universe_wsgi.ini.sample' }
if not galaxy_database_connection.startswith( 'sqlite://' ):
kwargs[ 'database_engine_option_max_overflow' ] = '20'
- galaxyapp = GalaxyUniverseApplication( job_queue_workers = 5,
- id_secret = 'changethisinproductiontoo',
- template_path = "templates",
- database_connection = galaxy_database_connection,
- database_engine_option_pool_size = '10',
- file_path = galaxy_file_path,
- new_file_path = galaxy_tempfiles,
- tool_path = tool_path,
- tool_data_path = tool_data_path,
- shed_tool_path = galaxy_shed_tool_path,
- update_integrated_tool_panel = False,
- migrated_tools_config = galaxy_migrated_tool_conf_file,
- tool_config_file = [ galaxy_tool_conf_file, galaxy_shed_tool_conf_file ],
- tool_sheds_config_file = galaxy_tool_sheds_conf_file,
- datatype_converters_config_file = "datatype_converters_conf.xml.sample",
- tool_parse_help = False,
- tool_data_table_config_path = galaxy_tool_data_table_conf_file,
- shed_tool_data_table_config = shed_tool_data_table_conf_file,
- log_destination = "stdout",
- use_heartbeat = False,
- allow_user_creation = True,
+ galaxyapp = GalaxyUniverseApplication( allow_user_creation = True,
allow_user_deletion = True,
admin_users = 'test(a)bx.psu.edu',
allow_library_path_paste = True,
+ database_connection = galaxy_database_connection,
+ database_engine_option_pool_size = '10',
+ datatype_converters_config_file = "datatype_converters_conf.xml.sample",
+ file_path = galaxy_file_path,
global_conf = global_conf,
+ id_secret = 'changethisinproductiontoo',
+ job_queue_workers = 5,
+ log_destination = "stdout",
+ migrated_tools_config = galaxy_migrated_tool_conf_file,
+ new_file_path = galaxy_tempfiles,
running_functional_tests=True,
+ shed_tool_data_table_config = shed_tool_data_table_conf_file,
+ shed_tool_path = galaxy_shed_tool_path,
+ template_path = "templates",
+ tool_data_path = tool_data_path,
+ tool_path = tool_path,
+ tool_config_file = [ galaxy_tool_conf_file, galaxy_shed_tool_conf_file ],
+ tool_sheds_config_file = galaxy_tool_sheds_conf_file,
+ tool_parse_help = False,
+ tool_data_table_config_path = galaxy_tool_data_table_conf_file,
+ update_integrated_tool_panel = False,
+ use_heartbeat = False,
**kwargs )
log.info( "Embedded Galaxy application started" )
@@ -391,14 +391,14 @@
galaxyapp.shutdown()
galaxyapp = None
log.info( "Embedded galaxy application stopped" )
- if 'TOOL_SHED_TEST_NO_CLEANUP' not in os.environ:
- try:
- for dir in [ tool_shed_test_tmp_dir ]:
- if os.path.exists( dir ):
- log.info( "Cleaning up temporary files in %s" % dir )
- shutil.rmtree( dir )
- except:
- pass
+# if 'TOOL_SHED_TEST_NO_CLEANUP' not in os.environ:
+# try:
+# for dir in [ tool_shed_test_tmp_dir ]:
+# if os.path.exists( dir ):
+# log.info( "Cleaning up temporary files in %s" % dir )
+# shutil.rmtree( dir )
+# except:
+# pass
if success:
return 0
else:
diff -r ee154ef5073e9d6f8e204f893d8c24b1ed2117dd -r cd6d105e5a5ba60e317ca7e194d63e2025272edb test/tool_shed/test_data/bwa/complex/bwa_base.tar
Binary file test/tool_shed/test_data/bwa/complex/bwa_base.tar has changed
diff -r ee154ef5073e9d6f8e204f893d8c24b1ed2117dd -r cd6d105e5a5ba60e317ca7e194d63e2025272edb test/tool_shed/test_data/bwa/complex/readme/tool_dependencies.xml
--- /dev/null
+++ b/test/tool_shed/test_data/bwa/complex/readme/tool_dependencies.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<tool_dependency>
+ <package name="bwa" version="0.5.9">
+ <install version="1.0">
+ <actions>
+ <action type="download_by_url">http://downloads.sourceforge.net/project/bio-bwa/bwa-0.5.9.tar.bz2</action>
+ <action type="shell_command">make</action>
+ <action type="move_file">
+ <source>bwa</source>
+ <destination>$INSTALL_DIR/bin</destination>
+ </action>
+ <action type="set_environment">
+ <environment_variable name="PATH" action="prepend_to">$INSTALL_DIR/bin</environment_variable>
+ </action>
+ </actions>
+ </install>
+ <readme>
+Compiling BWA requires zlib and libpthread to be present on your system.
+ </readme>
+ </package>
+</tool_dependency>
\ No newline at end of file
diff -r ee154ef5073e9d6f8e204f893d8c24b1ed2117dd -r cd6d105e5a5ba60e317ca7e194d63e2025272edb test/tool_shed/test_data/bwa/complex/tool_dependencies.xml
--- /dev/null
+++ b/test/tool_shed/test_data/bwa/complex/tool_dependencies.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<tool_dependency>
+ <package name="bwa" version="0.5.9">
+ <install version="1.0">
+ <actions>
+ <action type="download_by_url">http://downloads.sourceforge.net/project/bio-bwa/bwa-0.5.9.tar.bz2</action>
+ <action type="shell_command">make</action>
+ <action type="move_file">
+ <source>bwa</source>
+ <destination>$INSTALL_DIR/bin</destination>
+ </action>
+ <action type="set_environment">
+ <environment_variable name="PATH" action="prepend_to">$INSTALL_DIR/bin</environment_variable>
+ </action>
+ </actions>
+ </install>
+ </package>
+</tool_dependency>
\ No newline at end of file
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
0
commit/galaxy-central: greg: Generate metadata for repository dependencies even if their definitions are invalid.
by Bitbucket 01 Feb '13
by Bitbucket 01 Feb '13
01 Feb '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/ee154ef5073e/
changeset: ee154ef5073e
user: greg
date: 2013-02-01 17:31:59
summary: Generate metadata for repository dependencies even if their definitions are invalid.
affected #: 1 file
diff -r 718cd59f62c763db62afe6ad084bcd6d6f0baabf -r ee154ef5073e9d6f8e204f893d8c24b1ed2117dd lib/galaxy/util/shed_util_common.py
--- a/lib/galaxy/util/shed_util_common.py
+++ b/lib/galaxy/util/shed_util_common.py
@@ -1352,27 +1352,23 @@
err_msg += "because the changeset revision is invalid. "
log.debug( err_msg )
error_message += err_msg
- continue
else:
err_msg = "Ignoring repository dependency definition for tool shed %s, name %s, owner %s, changeset revision %s "% \
( rd_tool_shed, rd_name, rd_owner, rd_changeset_revision )
err_msg += "because the owner is invalid. "
log.debug( err_msg )
error_message += err_msg
- continue
else:
err_msg = "Ignoring repository dependency definition for tool shed %s, name %s, owner %s, changeset revision %s "% \
( rd_tool_shed, rd_name, rd_owner, rd_changeset_revision )
err_msg += "because the name is invalid. "
log.debug( err_msg )
error_message += err_msg
- continue
else:
err_msg = "Repository dependencies are currently supported only within the same tool shed. Ignoring repository dependency definition "
err_msg += "for tool shed %s, name %s, owner %s, changeset revision %s. " % ( rd_tool_shed, rd_name, rd_owner, rd_changeset_revision )
log.debug( err_msg )
error_message += err_msg
- continue
else:
repository_owner = repository.owner
rd_key = container_util.generate_repository_dependencies_key_for_repository( toolshed_base_url=rd_tool_shed,
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
0
commit/galaxy-central: greg: Improved messaging for invalid repository dependency definitions.
by Bitbucket 01 Feb '13
by Bitbucket 01 Feb '13
01 Feb '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/718cd59f62c7/
changeset: 718cd59f62c7
user: greg
date: 2013-02-01 16:50:38
summary: Improved messaging for invalid repository dependency definitions.
affected #: 1 file
diff -r e378b9511acccd47642db3bcc6519f0a74dfbb92 -r 718cd59f62c763db62afe6ad084bcd6d6f0baabf lib/galaxy/util/shed_util_common.py
--- a/lib/galaxy/util/shed_util_common.py
+++ b/lib/galaxy/util/shed_util_common.py
@@ -1215,6 +1215,7 @@
"""
repository_dependency_tup = []
requirements_dict = {}
+ error_message = ''
package_name = elem.get( 'name', None )
package_version = elem.get( 'version', None )
if package_name and package_version:
@@ -1226,15 +1227,15 @@
requirements_dict[ 'readme' ] = sub_elem.text
elif sub_elem.tag == 'repository':
# We have a complex repository dependency.
- current_rd_tups = handle_repository_elem( app=app,
- repository_elem=sub_elem,
- repository_dependencies_tups=None )
+ current_rd_tups, error_message = handle_repository_elem( app=app,
+ repository_elem=sub_elem,
+ repository_dependencies_tups=None )
if current_rd_tups:
repository_dependency_tup = current_rd_tups[ 0 ]
if requirements_dict:
dependency_key = '%s/%s' % ( package_name, package_version )
tool_dependencies_dict[ dependency_key ] = requirements_dict
- return tool_dependencies_dict, repository_dependency_tup
+ return tool_dependencies_dict, repository_dependency_tup, error_message
def generate_repository_dependency_metadata_for_installed_repository( app, repository_dependencies_config, metadata_dict ):
"""
Generate a repository dependencies dictionary based on valid information defined in the received repository_dependencies_config. This method
@@ -1284,7 +1285,10 @@
is_valid = False
if is_valid:
for repository_elem in root.findall( 'repository' ):
- current_rd_tups = handle_repository_elem( app, repository_elem, repository_dependencies_tups )
+ current_rd_tups, error_message = handle_repository_elem( app, repository_elem, repository_dependencies_tups )
+ if error_message:
+ log.debug( error_message )
+ return metadata_dict, error_message
for crdt in current_rd_tups:
repository_dependencies_tups.append( crdt )
if repository_dependencies_tups:
@@ -1315,9 +1319,12 @@
repository_dependency_tups = []
for elem in root:
if elem.tag == 'package':
- tool_dependencies_dict, repository_dependency_tup = generate_package_dependency_metadata( app, elem, tool_dependencies_dict )
+ tool_dependencies_dict, repository_dependency_tup, message = generate_package_dependency_metadata( app, elem, tool_dependencies_dict )
if repository_dependency_tup and repository_dependency_tup not in repository_dependency_tups:
repository_dependency_tups.append( repository_dependency_tup )
+ if message:
+ log.debug( message )
+ error_message = '%s %s' % ( error_message, message )
elif elem.tag == 'set_environment':
tool_dependencies_dict = generate_environment_dependency_metadata( elem, tool_dependencies_dict )
if tool_dependencies_dict:
@@ -2470,6 +2477,7 @@
new_rd_tups = []
else:
new_rd_tups = [ rdt for rdt in repository_dependencies_tups ]
+ error_message = ''
sa_session = app.model.context.current
toolshed = repository_elem.attrib[ 'toolshed' ]
name = repository_elem.attrib[ 'name' ]
@@ -2485,8 +2493,9 @@
app.model.ToolShedRepository.table.c.owner == owner ) ) \
.first()
except:
- log.debug( "Invalid name %s or owner %s defined for repository. Repository dependencies will be ignored." % ( name, owner ) )
- return new_rd_tups
+ error_message = "Invalid name %s or owner %s defined for repository. Repository dependencies will be ignored." % ( name, owner )
+ log.debug( error_message )
+ return new_rd_tups, error_message
repository_dependencies_tup = ( toolshed, name, owner, changeset_revision )
if repository_dependencies_tup not in new_rd_tups:
new_rd_tups.append( repository_dependencies_tup )
@@ -2498,25 +2507,27 @@
.filter( app.model.User.table.c.username == owner ) \
.one()
except Exception, e:
- log.debug( "Invalid owner %s defined for repository %s. Repository dependencies will be ignored." % ( owner, name ) )
- return new_rd_tups
+ error_message = "Invalid owner %s defined for repository %s. Repository dependencies will be ignored." % ( str( owner ), str( name ) )
+ log.debug( error_message )
+ return new_rd_tups, error_message
try:
repository = sa_session.query( app.model.Repository ) \
.filter( and_( app.model.Repository.table.c.name == name,
app.model.Repository.table.c.user_id == user.id ) ) \
.first()
except:
- log.debug( "Invalid name %s or owner %s defined for repository. Repository dependencies will be ignored." % ( name, owner ) )
- return new_rd_tups
+ error_message = "Invalid repository name %s defined. Repository dependencies will be ignored." % str( name )
+ log.debug( error_message )
+ return new_rd_tups, error_message
repository_dependencies_tup = ( toolshed, name, owner, changeset_revision )
if repository_dependencies_tup not in new_rd_tups:
new_rd_tups.append( repository_dependencies_tup )
else:
# Repository dependencies are currentlhy supported within a single tool shed.
error_message = "Invalid tool shed %s defined for repository %s. " % ( toolshed, name )
- error_message += "Repository dependencies are currently supported within a single tool shed, so your definition will be ignored."
+ error_message += "Repository dependencies are currently supported within a single tool shed."
log.debug( error_message )
- return new_rd_tups
+ return new_rd_tups, error_message
def handle_sample_files_and_load_tool_from_disk( trans, repo_files_dir, tool_config_filepath, work_dir ):
# Copy all sample files from disk to a temporary directory since the sample files may be in multiple directories.
message = ''
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
0
commit/galaxy-central: greg: Handle invalid complex repository dependency definitions.
by Bitbucket 01 Feb '13
by Bitbucket 01 Feb '13
01 Feb '13
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/e378b9511acc/
changeset: e378b9511acc
user: greg
date: 2013-02-01 15:40:22
summary: Handle invalid complex repository dependency definitions.
affected #: 3 files
diff -r 2a34f751c32cb9b4ab271d1f14c99406b9d04a54 -r e378b9511acccd47642db3bcc6519f0a74dfbb92 lib/galaxy/util/shed_util_common.py
--- a/lib/galaxy/util/shed_util_common.py
+++ b/lib/galaxy/util/shed_util_common.py
@@ -495,6 +495,13 @@
if repository_metadata:
return repository_metadata.malicious
return False
+def changeset_is_valid( app, repository, changeset_revision ):
+ repo = hg.repository( get_configured_ui(), repository.repo_path( app ) )
+ for changeset in repo.changelog:
+ changeset_hash = str( repo.changectx( changeset ) )
+ if changeset_revision == changeset_hash:
+ return True
+ return False
def changeset_revision_reviewed_by_user( trans, user, repository, changeset_revision ):
"""Determine if the current changeset revision has been reviewed by the current user."""
for review in repository.reviews:
@@ -871,7 +878,7 @@
but tool_dependencies and repository_dependencies will be None.
"""
repo_info_dict = {}
- repository = get_repository_by_name_and_owner( trans, repository_name, repository_owner )
+ repository = get_repository_by_name_and_owner( trans.app, repository_name, repository_owner )
if trans.webapp.name == 'community':
# We're in the tool shed.
repository_metadata = get_repository_metadata_by_changeset_revision( trans, trans.security.encode_id( repository.id ), changeset_revision )
@@ -1208,7 +1215,6 @@
"""
repository_dependency_tup = []
requirements_dict = {}
- error_message = ''
package_name = elem.get( 'name', None )
package_version = elem.get( 'version', None )
if package_name and package_version:
@@ -1220,15 +1226,15 @@
requirements_dict[ 'readme' ] = sub_elem.text
elif sub_elem.tag == 'repository':
# We have a complex repository dependency.
- current_rd_tups, error_message = handle_repository_elem( app=app,
- repository_elem=sub_elem,
- repository_dependencies_tups=None )
+ current_rd_tups = handle_repository_elem( app=app,
+ repository_elem=sub_elem,
+ repository_dependencies_tups=None )
if current_rd_tups:
repository_dependency_tup = current_rd_tups[ 0 ]
if requirements_dict:
dependency_key = '%s/%s' % ( package_name, package_version )
tool_dependencies_dict[ dependency_key ] = requirements_dict
- return tool_dependencies_dict, repository_dependency_tup, error_message
+ return tool_dependencies_dict, repository_dependency_tup
def generate_repository_dependency_metadata_for_installed_repository( app, repository_dependencies_config, metadata_dict ):
"""
Generate a repository dependencies dictionary based on valid information defined in the received repository_dependencies_config. This method
@@ -1278,10 +1284,7 @@
is_valid = False
if is_valid:
for repository_elem in root.findall( 'repository' ):
- current_rd_tups, error_message = handle_repository_elem( app, repository_elem, repository_dependencies_tups )
- if error_message:
- log.debug( error_message )
- return metadata_dict, error_message
+ current_rd_tups = handle_repository_elem( app, repository_elem, repository_dependencies_tups )
for crdt in current_rd_tups:
repository_dependencies_tups.append( crdt )
if repository_dependencies_tups:
@@ -1312,12 +1315,9 @@
repository_dependency_tups = []
for elem in root:
if elem.tag == 'package':
- tool_dependencies_dict, repository_dependency_tup, message = generate_package_dependency_metadata( app, elem, tool_dependencies_dict )
+ tool_dependencies_dict, repository_dependency_tup = generate_package_dependency_metadata( app, elem, tool_dependencies_dict )
if repository_dependency_tup and repository_dependency_tup not in repository_dependency_tups:
repository_dependency_tups.append( repository_dependency_tup )
- if message:
- log.debug( message )
- error_message = '%s %s' % ( error_message, message )
elif elem.tag == 'set_environment':
tool_dependencies_dict = generate_environment_dependency_metadata( elem, tool_dependencies_dict )
if tool_dependencies_dict:
@@ -1327,30 +1327,66 @@
handle_existing_tool_dependencies_that_changed_in_update( app, repository, original_tool_dependencies_dict, tool_dependencies_dict )
metadata_dict[ 'tool_dependencies' ] = tool_dependencies_dict
if repository_dependency_tups:
- tool_shed = get_tool_shed_from_clone_url( repository_clone_url )
- if app.name == 'community':
- repository_owner = repository.user.username
- else:
- repository_owner = repository.owner
- rd_key = container_util.generate_repository_dependencies_key_for_repository( toolshed_base_url=tool_shed,
- repository_name=repository.name,
- repository_owner=repository_owner,
- changeset_revision=changeset_revision )
repository_dependencies_dict = metadata_dict.get( 'repository_dependencies', None )
+ for repository_dependency_tup in repository_dependency_tups:
+ rd_tool_shed, rd_name, rd_owner, rd_changeset_revision = repository_dependency_tup
+ if app.name == 'community':
+ if tool_shed_is_this_tool_shed( rd_tool_shed ):
+ # Make sure the repository name id valid.
+ valid_named_repository = get_repository_by_name( app, rd_name )
+ if valid_named_repository:
+ # See if the owner is valid.
+ valid_owned_repository = get_repository_by_name_and_owner( app, rd_name, rd_owner )
+ if valid_owned_repository:
+ # See if the defined changeset revision is valid.
+ if not changeset_is_valid( app, valid_owned_repository, rd_changeset_revision ):
+ err_msg = "Ignoring repository dependency definition for tool shed %s, name %s, owner %s, changeset revision %s "% \
+ ( rd_tool_shed, rd_name, rd_owner, rd_changeset_revision )
+ err_msg += "because the changeset revision is invalid. "
+ log.debug( err_msg )
+ error_message += err_msg
+ continue
+ else:
+ err_msg = "Ignoring repository dependency definition for tool shed %s, name %s, owner %s, changeset revision %s "% \
+ ( rd_tool_shed, rd_name, rd_owner, rd_changeset_revision )
+ err_msg += "because the owner is invalid. "
+ log.debug( err_msg )
+ error_message += err_msg
+ continue
+ else:
+ err_msg = "Ignoring repository dependency definition for tool shed %s, name %s, owner %s, changeset revision %s "% \
+ ( rd_tool_shed, rd_name, rd_owner, rd_changeset_revision )
+ err_msg += "because the name is invalid. "
+ log.debug( err_msg )
+ error_message += err_msg
+ continue
+ else:
+ err_msg = "Repository dependencies are currently supported only within the same tool shed. Ignoring repository dependency definition "
+ err_msg += "for tool shed %s, name %s, owner %s, changeset revision %s. " % ( rd_tool_shed, rd_name, rd_owner, rd_changeset_revision )
+ log.debug( err_msg )
+ error_message += err_msg
+ continue
+ else:
+ repository_owner = repository.owner
+ rd_key = container_util.generate_repository_dependencies_key_for_repository( toolshed_base_url=rd_tool_shed,
+ repository_name=rd_name,
+ repository_owner=rd_owner,
+ changeset_revision=rd_changeset_revision )
+ if repository_dependencies_dict:
+ if rd_key in repository_dependencies_dict:
+ repository_dependencies = repository_dependencies_dict[ rd_key ]
+ for repository_dependency_tup in repository_dependency_tups:
+ if repository_dependency_tup not in repository_dependencies:
+ repository_dependencies.append( repository_dependency_tup )
+ repository_dependencies_dict[ rd_key ] = repository_dependencies
+ else:
+ repository_dependencies_dict[ rd_key ] = repository_dependency_tups
+ else:
+ repository_dependencies_dict = dict( root_key=rd_key,
+ description=root.get( 'description' ),
+ repository_dependencies=repository_dependency_tups )
if repository_dependencies_dict:
- if rd_key in repository_dependencies_dict:
- repository_dependencies = repository_dependencies_dict[ rd_key ]
- for repository_dependency_tup in repository_dependency_tups:
- if repository_dependency_tup not in repository_dependencies:
- repository_dependencies.append( repository_dependency_tup )
- repository_dependencies_dict[ rd_key ] = repository_dependencies
- else:
- repository_dependencies_dict[ rd_key ] = repository_dependency_tups
- else:
- repository_dependencies_dict = dict( root_key=rd_key,
- description=root.get( 'description' ),
- repository_dependencies=repository_dependency_tups )
- metadata_dict[ 'repository_dependencies' ] = repository_dependencies_dict
+ metadata_dict[ 'repository_dependencies' ] = repository_dependencies_dict
return metadata_dict, error_message
def generate_tool_elem( tool_shed, repository_name, changeset_revision, owner, tool_file_path, tool, tool_section ):
if tool_section is not None:
@@ -1800,22 +1836,27 @@
elif len( repo_info_tuple ) == 7:
description, repository_clone_url, changeset_revision, ctx_rev, repository_owner, repository_dependencies, tool_dependencies = repo_info_tuple
return description, repository_clone_url, changeset_revision, ctx_rev, repository_owner, repository_dependencies, tool_dependencies
-def get_repository_by_name( trans, name ):
+def get_repository_by_name( app, name ):
"""Get a repository from the database via name."""
- return trans.sa_session.query( trans.model.Repository ).filter_by( name=name ).one()
-def get_repository_by_name_and_owner( trans, name, owner ):
+ sa_session = app.model.context.current
+ if app.name == 'galaxy':
+ return sa_session.query( app.model.ToolShedRepository ).filter_by( name=name ).first()
+ else:
+ return sa_session.query( app.model.Repository ).filter_by( name=name ).first()
+def get_repository_by_name_and_owner( app, name, owner ):
"""Get a repository from the database via name and owner"""
- if trans.webapp.name == 'galaxy':
- return trans.sa_session.query( trans.model.ToolShedRepository ) \
- .filter( and_( trans.model.ToolShedRepository.table.c.name == name,
- trans.model.ToolShedRepository.table.c.owner == owner ) ) \
- .first()
+ sa_session = app.model.context.current
+ if app.name == 'galaxy':
+ return sa_session.query( app.model.ToolShedRepository ) \
+ .filter( and_( app.model.ToolShedRepository.table.c.name == name,
+ app.model.ToolShedRepository.table.c.owner == owner ) ) \
+ .first()
# We're in the tool shed.
- user = get_user_by_username( trans, owner )
- return trans.sa_session.query( trans.model.Repository ) \
- .filter( and_( trans.model.Repository.table.c.name == name,
- trans.model.Repository.table.c.user_id == user.id ) ) \
- .first()
+ user = get_user_by_username( app, owner )
+ return sa_session.query( app.model.Repository ) \
+ .filter( and_( app.model.Repository.table.c.name == name,
+ app.model.Repository.table.c.user_id == user.id ) ) \
+ .first()
def get_repository_dependencies_for_changeset_revision( trans, repository, repository_metadata, toolshed_base_url,
key_rd_dicts_to_be_processed=None, all_repository_dependencies=None,
handled_key_rd_dicts=None, circular_repository_dependencies=None ):
@@ -1929,7 +1970,7 @@
contents.sort()
return contents
def get_repository_in_tool_shed( trans, id ):
- """Get a repository on the tool shed side from the database via id"""
+ """Get a repository on the tool shed side from the database via id."""
return trans.sa_session.query( trans.model.Repository ).get( trans.security.decode_id( id ) )
def get_repository_metadata_by_changeset_revision( trans, id, changeset_revision ):
"""Get metadata for a specified repository change set from the database."""
@@ -2166,33 +2207,39 @@
repository_dependency = key_rd_dict[ key ]
rd_toolshed, rd_name, rd_owner, rd_changeset_revision = repository_dependency
if tool_shed_is_this_tool_shed( rd_toolshed ):
- repository = get_repository_by_name_and_owner( trans, rd_name, rd_owner )
- repository_metadata = get_repository_metadata_by_repository_id_changset_revision( trans,
- trans.security.encode_id( repository.id ),
- rd_changeset_revision )
- if repository_metadata:
- # The repository changeset_revision is installable, so no updates are available.
- new_key_rd_dict = {}
- new_key_rd_dict[ key ] = repository_dependency
- updated_key_rd_dicts.append( key_rd_dict )
- else:
- # The repository changeset_revision is no longer installable, so see if there's been an update.
- repo_dir = repository.repo_path( trans.app )
- repo = hg.repository( get_configured_ui(), repo_dir )
- changeset_revision = get_next_downloadable_changeset_revision( repository, repo, rd_changeset_revision )
+ repository = get_repository_by_name_and_owner( trans.app, rd_name, rd_owner )
+ if repository:
repository_metadata = get_repository_metadata_by_repository_id_changset_revision( trans,
trans.security.encode_id( repository.id ),
- changeset_revision )
+ rd_changeset_revision )
if repository_metadata:
+ # The repository changeset_revision is installable, so no updates are available.
new_key_rd_dict = {}
- new_key_rd_dict[ key ] = [ rd_toolshed, rd_name, rd_owner, repository_metadata.changeset_revision ]
- # We have the updated changset revision.
- updated_key_rd_dicts.append( new_key_rd_dict )
+ new_key_rd_dict[ key ] = repository_dependency
+ updated_key_rd_dicts.append( key_rd_dict )
else:
- toolshed, repository_name, repository_owner, repository_changeset_revision = container_util.get_components_from_key( key )
- message = "The revision %s defined for repository %s owned by %s is invalid, so repository dependencies defined for repository %s will be ignored." % \
- ( str( rd_changeset_revision ), str( rd_name ), str( rd_owner ), str( repository_name ) )
- log.debug( message )
+ # The repository changeset_revision is no longer installable, so see if there's been an update.
+ repo_dir = repository.repo_path( trans.app )
+ repo = hg.repository( get_configured_ui(), repo_dir )
+ changeset_revision = get_next_downloadable_changeset_revision( repository, repo, rd_changeset_revision )
+ repository_metadata = get_repository_metadata_by_repository_id_changset_revision( trans,
+ trans.security.encode_id( repository.id ),
+ changeset_revision )
+ if repository_metadata:
+ new_key_rd_dict = {}
+ new_key_rd_dict[ key ] = [ rd_toolshed, rd_name, rd_owner, repository_metadata.changeset_revision ]
+ # We have the updated changset revision.
+ updated_key_rd_dicts.append( new_key_rd_dict )
+ else:
+ toolshed, repository_name, repository_owner, repository_changeset_revision = container_util.get_components_from_key( key )
+ message = "The revision %s defined for repository %s owned by %s is invalid, so repository dependencies defined for repository %s will be ignored." % \
+ ( str( rd_changeset_revision ), str( rd_name ), str( rd_owner ), str( repository_name ) )
+ log.debug( message )
+ else:
+ toolshed, repository_name, repository_owner, repository_changeset_revision = container_util.get_components_from_key( key )
+ message = "The revision %s defined for repository %s owned by %s is invalid, so repository dependencies defined for repository %s will be ignored." % \
+ ( str( rd_changeset_revision ), str( rd_name ), str( rd_owner ), str( repository_name ) )
+ log.debug( message )
return updated_key_rd_dicts
def get_url_from_repository_tool_shed( app, repository ):
"""
@@ -2219,11 +2266,12 @@
def get_user( trans, id ):
"""Get a user from the database by id."""
return trans.sa_session.query( trans.model.User ).get( trans.security.decode_id( id ) )
-def get_user_by_username( trans, username ):
+def get_user_by_username( app, username ):
"""Get a user from the database by username."""
- return trans.sa_session.query( trans.model.User ) \
- .filter( trans.model.User.table.c.username == username ) \
- .one()
+ sa_session = app.model.context.current
+ return sa_session.query( app.model.User ) \
+ .filter( app.model.User.table.c.username == username ) \
+ .one()
def handle_circular_repository_dependency( repository_key, repository_dependency, circular_repository_dependencies, handled_key_rd_dicts, all_repository_dependencies ):
all_repository_dependencies_root_key = all_repository_dependencies[ 'root_key' ]
repository_dependency_as_key = get_repository_dependency_as_key( repository_dependency )
@@ -2370,7 +2418,7 @@
repository_dependency = key_rd_dict[ current_repository_key ]
toolshed, name, owner, changeset_revision = repository_dependency
if tool_shed_is_this_tool_shed( toolshed ):
- required_repository = get_repository_by_name_and_owner( trans, name, owner )
+ required_repository = get_repository_by_name_and_owner( trans.app, name, owner )
required_repository_metadata = get_repository_metadata_by_repository_id_changset_revision( trans,
trans.security.encode_id( required_repository.id ),
changeset_revision )
@@ -2422,7 +2470,6 @@
new_rd_tups = []
else:
new_rd_tups = [ rdt for rdt in repository_dependencies_tups ]
- error_message = ''
sa_session = app.model.context.current
toolshed = repository_elem.attrib[ 'toolshed' ]
name = repository_elem.attrib[ 'name' ]
@@ -2438,9 +2485,8 @@
app.model.ToolShedRepository.table.c.owner == owner ) ) \
.first()
except:
- error_message = "Invalid name %s or owner %s defined for repository. Repository dependencies will be ignored." % ( name, owner )
- log.debug( error_message )
- return new_rd_tups, error_message
+ log.debug( "Invalid name %s or owner %s defined for repository. Repository dependencies will be ignored." % ( name, owner ) )
+ return new_rd_tups
repository_dependencies_tup = ( toolshed, name, owner, changeset_revision )
if repository_dependencies_tup not in new_rd_tups:
new_rd_tups.append( repository_dependencies_tup )
@@ -2452,18 +2498,16 @@
.filter( app.model.User.table.c.username == owner ) \
.one()
except Exception, e:
- error_message = "Invalid owner %s defined for repository %s. Repository dependencies will be ignored." % ( owner, name )
- log.debug( error_message )
- return new_rd_tups, error_message
+ log.debug( "Invalid owner %s defined for repository %s. Repository dependencies will be ignored." % ( owner, name ) )
+ return new_rd_tups
try:
repository = sa_session.query( app.model.Repository ) \
.filter( and_( app.model.Repository.table.c.name == name,
app.model.Repository.table.c.user_id == user.id ) ) \
.first()
except:
- error_message = "Invalid name %s or owner %s defined for repository. Repository dependencies will be ignored." % ( name, owner )
- log.debug( error_message )
- return new_rd_tups, error_message
+ log.debug( "Invalid name %s or owner %s defined for repository. Repository dependencies will be ignored." % ( name, owner ) )
+ return new_rd_tups
repository_dependencies_tup = ( toolshed, name, owner, changeset_revision )
if repository_dependencies_tup not in new_rd_tups:
new_rd_tups.append( repository_dependencies_tup )
@@ -2472,7 +2516,7 @@
error_message = "Invalid tool shed %s defined for repository %s. " % ( toolshed, name )
error_message += "Repository dependencies are currently supported within a single tool shed, so your definition will be ignored."
log.debug( error_message )
- return new_rd_tups, error_message
+ return new_rd_tups
def handle_sample_files_and_load_tool_from_disk( trans, repo_files_dir, tool_config_filepath, work_dir ):
# Copy all sample files from disk to a temporary directory since the sample files may be in multiple directories.
message = ''
@@ -2981,7 +3025,7 @@
rd_tup = container_util.get_components_from_key( key )
if rd_tup not in rd_tups_processed:
toolshed, name, owner, changeset_revision = rd_tup
- repository = get_repository_by_name_and_owner( trans, name, owner )
+ repository = get_repository_by_name_and_owner( trans.app, name, owner )
repository_metadata = get_repository_metadata_by_repository_id_changset_revision( trans,
trans.security.encode_id( repository.id ),
changeset_revision )
@@ -2994,7 +3038,7 @@
for rd_tup in rd_tups:
if rd_tup not in rd_tups_processed:
toolshed, name, owner, changeset_revision = rd_tup
- repository = get_repository_by_name_and_owner( trans, name, owner )
+ repository = get_repository_by_name_and_owner( trans.app, name, owner )
repository_metadata = get_repository_metadata_by_repository_id_changset_revision( trans,
trans.security.encode_id( repository.id ),
changeset_revision )
diff -r 2a34f751c32cb9b4ab271d1f14c99406b9d04a54 -r e378b9511acccd47642db3bcc6519f0a74dfbb92 lib/galaxy/webapps/community/controllers/hg.py
--- a/lib/galaxy/webapps/community/controllers/hg.py
+++ b/lib/galaxy/webapps/community/controllers/hg.py
@@ -32,7 +32,7 @@
path_info = kwd.get( 'path_info', None )
if path_info:
owner, name = path_info.split( '/' )
- repository = get_repository_by_name_and_owner( trans, name, owner )
+ repository = get_repository_by_name_and_owner( trans.app, name, owner )
if repository:
if hg_version >= '2.2.3':
# Set metadata using the repository files on disk.
diff -r 2a34f751c32cb9b4ab271d1f14c99406b9d04a54 -r e378b9511acccd47642db3bcc6519f0a74dfbb92 lib/galaxy/webapps/community/controllers/repository.py
--- a/lib/galaxy/webapps/community/controllers/repository.py
+++ b/lib/galaxy/webapps/community/controllers/repository.py
@@ -542,7 +542,8 @@
# The value of 'id' has been set to the search string, which is a repository name. We'll try to get the desired encoded repository
# id to pass on.
try:
- repository = suc.get_repository_by_name( trans, kwd[ 'id' ] )
+ repository_name = kwd[ 'id' ]
+ repository = suc.get_repository_by_name( trans.app, repository_name )
kwd[ 'id' ] = trans.security.encode_id( repository.id )
except:
pass
@@ -724,7 +725,7 @@
# We'll try to get the desired encoded repository id to pass on.
try:
name = kwd[ 'id' ]
- repository = suc.get_repository_by_name( trans, name )
+ repository = suc.get_repository_by_name( trans.app, name )
kwd[ 'id' ] = trans.security.encode_id( repository.id )
except:
pass
@@ -825,7 +826,7 @@
name = params.get( 'name', None )
owner = params.get( 'owner', None )
changeset_revision = params.get( 'changeset_revision', None )
- repository = suc.get_repository_by_name_and_owner( trans, name, owner )
+ repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repo_dir = repository.repo_path( trans.app )
repo = hg.repository( suc.get_configured_ui(), repo_dir )
# Default to the current changeset revision.
@@ -1282,7 +1283,7 @@
name = params.get( 'name', None )
owner = params.get( 'owner', None )
changeset_revision = params.get( 'changeset_revision', None )
- repository = suc.get_repository_by_name_and_owner( trans, name, owner )
+ repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans,
trans.security.encode_id( repository.id ),
changeset_revision )
@@ -1342,7 +1343,7 @@
repository_name = kwd[ 'name' ]
repository_owner = kwd[ 'owner' ]
changeset_revision = kwd[ 'changeset_revision' ]
- repository = suc.get_repository_by_name_and_owner( trans, repository_name, repository_owner )
+ repository = suc.get_repository_by_name_and_owner( trans.app, repository_name, repository_owner )
repo_dir = repository.repo_path( trans.app )
repo = hg.repository( suc.get_configured_ui(), repo_dir )
ctx = suc.get_changectx_for_changeset( repo, changeset_revision )
@@ -1376,7 +1377,7 @@
repository_name = kwd[ 'name' ]
repository_owner = kwd[ 'owner' ]
changeset_revision = kwd[ 'changeset_revision' ]
- repository = suc.get_repository_by_name_and_owner( trans, repository_name, repository_owner )
+ repository = suc.get_repository_by_name_and_owner( trans.app, repository_name, repository_owner )
repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans, trans.security.encode_id( repository.id ), changeset_revision )
return suc.build_readme_files_dict( repository_metadata.metadata )
@web.json
@@ -1386,7 +1387,7 @@
name = params.get( 'name', None )
owner = params.get( 'owner', None )
changeset_revision = params.get( 'changeset_revision', None )
- repository = suc.get_repository_by_name_and_owner( trans, name, owner )
+ repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repository_id = trans.security.encode_id( repository.id )
repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans, repository_id, changeset_revision )
if repository_metadata:
@@ -1458,7 +1459,7 @@
changeset_revisions = []
for required_repository_tup in decoded_required_repository_tups:
tool_shed, name, owner, changeset_revision = required_repository_tup
- repository = suc.get_repository_by_name_and_owner( trans, name, owner )
+ repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
encoded_repository_ids.append( trans.security.encode_id( repository.id ) )
changeset_revisions.append( changeset_revision )
if encoded_repository_ids and changeset_revisions:
@@ -1473,7 +1474,7 @@
name = params.get( 'name', None )
owner = params.get( 'owner', None )
changeset_revision = params.get( 'changeset_revision', None )
- repository = suc.get_repository_by_name_and_owner( trans, name, owner )
+ repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
for downloadable_revision in repository.downloadable_revisions:
if downloadable_revision.changeset_revision == changeset_revision:
break
@@ -1489,7 +1490,7 @@
name = params.get( 'name', None )
owner = params.get( 'owner', None )
changeset_revision = params.get( 'changeset_revision', None )
- repository = suc.get_repository_by_name_and_owner( trans, name, owner )
+ repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
# TODO: We're currently returning the tool_dependencies.xml file that is available on disk. We need to enhance this process
# to retrieve older versions of the tool-dependencies.xml file from the repository manafest.
repo_dir = repository.repo_path( trans.app )
@@ -1511,7 +1512,7 @@
name = kwd[ 'name' ]
owner = kwd[ 'owner' ]
changeset_revision = kwd[ 'changeset_revision' ]
- repository = suc.get_repository_by_name_and_owner( trans, name, owner )
+ repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repo_dir = repository.repo_path( trans.app )
repo = hg.repository( suc.get_configured_ui(), repo_dir )
tool_version_dicts = []
@@ -1528,7 +1529,7 @@
@web.json
def get_updated_repository_information( self, trans, name, owner, changeset_revision, **kwd ):
"""Generate a dictionary that contains the information about a repository that is necessary for installing it into a local Galaxy instance."""
- repository = suc.get_repository_by_name_and_owner( trans, name, owner )
+ repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repository_id = trans.security.encode_id( repository.id )
repository_clone_url = suc.generate_clone_url_for_repository_in_tool_shed( trans, repository )
repository_metadata = suc.get_repository_metadata_by_changeset_revision( trans, repository_id, changeset_revision )
@@ -1692,7 +1693,7 @@
owner = kwd.get( 'owner', None )
galaxy_url = kwd.get( 'galaxy_url', None )
if not repository_ids:
- repository = suc.get_repository_by_name_and_owner( trans, name, owner )
+ repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repository_ids = trans.security.encode_id( repository.id )
if not galaxy_url:
# If galaxy_url is not in the request, it had to have been stored in a cookie by the tool shed.
@@ -2098,7 +2099,7 @@
name = params.get( 'name', None )
owner = params.get( 'owner', None )
changeset_revision = params.get( 'changeset_revision', None )
- repository = suc.get_repository_by_name_and_owner( trans, name, owner )
+ repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repo_dir = repository.repo_path( trans.app )
repo = hg.repository( suc.get_configured_ui(), repo_dir )
# Get the lower bound changeset revision.
@@ -2440,7 +2441,7 @@
name = params.get( 'name', None )
owner = params.get( 'owner', None )
changeset_revision = params.get( 'changeset_revision', None )
- repository = suc.get_repository_by_name_and_owner( trans, name, owner )
+ repository = suc.get_repository_by_name_and_owner( trans.app, name, owner )
repo_dir = repository.repo_path( trans.app )
repo = hg.repository( suc.get_configured_ui(), repo_dir )
# Get the upper bound changeset revision.
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
0