1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/97d124fbe9fb/
Changeset: 97d124fbe9fb
User: greg
Date: 2014-01-08 22:26:51
Summary: Filter out deprecated repositories when resetting metadata on repositories in the tool shed - resetting metadata on deprecated repositories is essential only for ensuring reproducibility.
Affected #: 1 file
diff -r 626622be165b95acf40430ef309b92c1daa0b9ae -r 97d124fbe9fbbe2e7026b92db35e77e87e4ef435 lib/tool_shed/util/shed_util_common.py
--- a/lib/tool_shed/util/shed_util_common.py
+++ b/lib/tool_shed/util/shed_util_common.py
@@ -865,9 +865,10 @@
def get_query_for_setting_metadata_on_repositories( trans, my_writable=False, order=True ):
"""
- Return a query containing repositories for resetting metadata. This method is called from both the Tool Shed and Galaxy. The
- my_writable parameter is ignored unless called from the Tool Shed, and the order parameter is used for displaying the list of
- repositories ordered alphabetically for display on a page. When called from wither the Tool Shed or Galaxy API, order is False.
+ Return a query containing repositories for resetting metadata. This method is called from both the
+ Tool Shed and Galaxy. The my_writable parameter is ignored unless called from the Tool Shed, and the
+ order parameter is used for displaying the list of repositories ordered alphabetically for display on
+ a page. When called from either the Tool Shed or Galaxy API, order is False.
"""
if trans.webapp.name == 'tool_shed':
# When called from the Tool Shed API, the metadata is reset on all repositories of type tool_dependency_definition in addition
@@ -876,7 +877,8 @@
username = trans.user.username
clause_list = []
for repository in trans.sa_session.query( trans.model.Repository ) \
- .filter( trans.model.Repository.table.c.deleted == False ):
+ .filter( and_( trans.model.Repository.table.c.deleted == False,
+ trans.model.Repository.table.c.deprecated == False ) ):
# Always reset metadata on all repositories of type tool_dependency_definition.
if repository.type == rt_util.TOOL_DEPENDENCY_DEFINITION:
clause_list.append( trans.model.Repository.table.c.id == repository.id )
@@ -903,12 +905,14 @@
else:
if order:
return trans.sa_session.query( trans.model.Repository ) \
- .filter( trans.model.Repository.table.c.deleted == False ) \
+ .filter( and_( trans.model.Repository.table.c.deleted == False,
+ trans.model.Repository.table.c.deprecated == False ) ) \
.order_by( trans.model.Repository.table.c.name,
trans.model.Repository.table.c.user_id )
else:
return trans.sa_session.query( trans.model.Repository ) \
- .filter( trans.model.Repository.table.c.deleted == False )
+ .filter( and_( trans.model.Repository.table.c.deleted == False,
+ trans.model.Repository.table.c.deprecated == False ) )
else:
# We're in Galaxy.
if order:
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/ea6d81ebd300/
Changeset: ea6d81ebd300
User: greg
Date: 2014-01-08 21:48:54
Summary: Fix the single broken tool shed functional test.
Affected #: 1 file
diff -r b315c617830932da07e9cd3247790d3d2d3486c7 -r ea6d81ebd3006f7aed499e80805d71842d6d8c1c test/tool_shed/functional/test_1160_circular_prior_installation_required.py
--- a/test/tool_shed/functional/test_1160_circular_prior_installation_required.py
+++ b/test/tool_shed/functional/test_1160_circular_prior_installation_required.py
@@ -222,14 +222,16 @@
filter_repository = self.test_db_util.get_installed_repository_by_name_owner( filter_repository_name, common.test_user_1_name )
column_repository = self.test_db_util.get_installed_repository_by_name_owner( column_repository_name, common.test_user_1_name )
convert_repository = self.test_db_util.get_installed_repository_by_name_owner( convert_repository_name, common.test_user_1_name )
+ # TODO: Tweak the uninstall_repository method by pulling out the stuff that deactivates a repository
+ # instead of uninstalling it and create a new deactivate_repository method.
self.uninstall_repository( filter_repository, remove_from_disk=False )
self.uninstall_repository( column_repository, remove_from_disk=False )
self.uninstall_repository( convert_repository, remove_from_disk=False )
- def test_0045_reinstall_filter_repository( self ):
+ def test_0045_reactivatel_filter_repository( self ):
'''Reinstall the filtering_0160 repository.'''
filter_repository = self.test_db_util.get_installed_repository_by_name_owner( filter_repository_name, common.test_user_1_name )
- self.reinstall_repository( filter_repository )
+ self.reactivate_repository( filter_repository )
strings_displayed = [ 'filtering_0160',
"Galaxy's filtering tool for test 0160",
'user1',
@@ -242,6 +244,7 @@
def test_0050_verify_reinstallation_order( self ):
'''Verify that convert_chars_0160 and column_maker_0160 were reinstalled before filtering_0160.'''
+ # Fixme: this test is not covering any important behavior since repositories were only deactivated and not uninstalled.
filter_repository = self.test_db_util.get_installed_repository_by_name_owner( filter_repository_name, common.test_user_1_name )
column_repository = self.test_db_util.get_installed_repository_by_name_owner( column_repository_name, common.test_user_1_name )
convert_repository = self.test_db_util.get_installed_repository_by_name_owner( convert_repository_name, common.test_user_1_name )
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/b315c6178309/
Changeset: b315c6178309
User: carlfeberhard
Date: 2014-01-08 21:41:32
Summary: Functional browser tests: update history panel tests
Affected #: 3 files
diff -r a7101734b29e8ff8aff0a8170bb8d0c5ec1a5455 -r b315c617830932da07e9cd3247790d3d2d3486c7 test/casperjs/history-panel-tests.js
--- a/test/casperjs/history-panel-tests.js
+++ b/test/casperjs/history-panel-tests.js
@@ -40,7 +40,7 @@
// selectors and labels
var tooltipSelector = spaceghost.data.selectors.tooltipBalloon,
editableTextClass = spaceghost.data.selectors.editableText,
- editableTextInput = spaceghost.data.selectors.editableTextInput,
+ editableTextInput = spaceghost.historypanel.data.selectors.history.nameEditableTextInput,
nameSelector = spaceghost.historypanel.data.selectors.history.name,
subtitleSelector = spaceghost.historypanel.data.selectors.history.subtitle,
@@ -56,8 +56,7 @@
nameTooltip = spaceghost.historypanel.data.text.history.tooltips.name,
refreshButtonSelector = 'a#history-refresh-button',
- refreshButtonIconSelector = 'span.fa-icon-refresh',
- refreshButtonHref = '/history',
+ refreshButtonIconSelector = 'span.fa-refresh',
includeDeletedOptionsLabel = spaceghost.historyoptions.data.labels.options.includeDeleted;
@@ -76,9 +75,6 @@
// ------------------------------------------------------------------- check structure of empty history
spaceghost.thenOpen( spaceghost.baseUrl ).historypanel.waitForHdas( function(){
this.test.comment( 'history panel with a new, empty history should be well formed' );
- this.test.comment( "frame should have proper url and title: 'History'" );
- this.test.assertMatch( this.getCurrentUrl(), /\/history/, 'Found history frame url' );
- this.test.assertTitle( this.getTitle(), 'History', 'Found history frame title' );
this.test.comment( "history name should exist, be visible, and have text " + unnamedName );
this.test.assertExists( nameSelector, nameSelector + ' exists' );
@@ -103,11 +99,11 @@
});
// ------------------------------------------------------------------- name editing
-spaceghost.withHistoryPanel( function(){
+spaceghost.then( function(){
this.test.comment( 'history panel, editing the history name' );
this.test.comment( 'name should have a tooltip with proper info on name editing' );
- this.historypanel.hoverOver( nameSelector );
+ this.hoverOver( nameSelector );
this.test.assertExists( tooltipSelector, "Found tooltip after name hover" );
this.test.assertSelectorHasText( tooltipSelector, nameTooltip );
// clear the tooltip
@@ -116,6 +112,7 @@
this.test.comment( 'name should be create an input when clicked' );
this.assertHasClass( nameSelector, editableTextClass, "Name field classed for editable text" );
this.click( nameSelector );
+ spaceghost.debug( editableTextInput );
this.test.assertExists( editableTextInput, "Clicking on name creates an input" );
this.test.comment( 'name should be editable by entering keys and pressing enter' );
@@ -129,7 +126,7 @@
});
});
-spaceghost.withHistoryPanel( function(){
+spaceghost.then( function(){
this.test.comment( 'name should revert if user clicks away while editing' );
this.click( nameSelector );
@@ -142,7 +139,7 @@
});
});
-spaceghost.withHistoryPanel( function(){
+spaceghost.then( function(){
this.test.comment( 'name should revert if user hits ESC while editing' );
this.click( nameSelector );
@@ -168,7 +165,7 @@
testUploadInfo = _uploadInfo;
});
-spaceghost.withHistoryPanel( function checkPanelStructure(){
+spaceghost.then( function checkPanelStructure(){
this.test.comment( 'checking structure of non-empty panel' );
this.test.comment( "history name should exist, be visible, and have text " + unnamedName );
@@ -196,7 +193,7 @@
// ------------------------------------------------------------------- tags
// keeping this light here - better for it's own test file
//TODO: check tooltips
-spaceghost.withHistoryPanel( function openTags(){
+spaceghost.then( function openTags(){
this.test.comment( 'tag area should open when the history panel tag icon is clicked' );
this.click( tagIconSelector );
@@ -204,7 +201,7 @@
this.test.assertVisible( tagAreaSelector, 'Tag area is now displayed' );
});
});
-spaceghost.withHistoryPanel( function closeAnnotation(){
+spaceghost.then( function closeAnnotation(){
this.test.comment( 'annotation area should close when the history panel tag icon is clicked again' );
this.click( tagIconSelector );
@@ -216,7 +213,7 @@
// ------------------------------------------------------------------- annotation
// keeping this light here - better for it's own test file
//TODO: check tooltips
-spaceghost.withHistoryPanel( function openAnnotation(){
+spaceghost.then( function openAnnotation(){
this.test.comment( 'annotation area should open when the history panel annotation icon is clicked' );
this.click( annoIconSelector );
@@ -224,7 +221,7 @@
this.test.assertVisible( annoAreaSelector, 'Annotation area is now displayed' );
});
});
-spaceghost.withHistoryPanel( function closeAnnotation(){
+spaceghost.then( function closeAnnotation(){
this.test.comment( 'annotation area should close when the history panel tag icon is clicked again' );
this.click( annoIconSelector );
@@ -240,12 +237,10 @@
this.test.assertExists( refreshButtonSelector, "Found refresh button" );
this.test.assertVisible( refreshButtonSelector, "Refresh button is visible" );
this.test.assertVisible( refreshButtonSelector + ' ' + refreshButtonIconSelector, "Refresh icon is visible" );
- this.test.assert( this.getElementAttribute( refreshButtonSelector, 'href' ) === refreshButtonHref,
- "Refresh button has href: " + refreshButtonHref );
- this.assertNavigationRequested( refreshButtonHref, "History refreshed when clicking refresh icon", function(){
- this.click( refreshButtonSelector );
- });
+ //this.assertNavigationRequested( refreshButtonHref, "History refreshed when clicking refresh icon", function(){
+ // this.click( refreshButtonSelector );
+ //});
});
// ------------------------------------------------------------------- hdas can be expanded by clicking on the hda name
@@ -275,7 +270,7 @@
});
// ------------------------------------------------------------------- expanded hdas collapse by clicking name again
-spaceghost.withHistoryPanel( function(){
+spaceghost.then( function(){
this.test.comment( 'Expanded hdas collapse by clicking name again' );
var uploadedSelector = '#' + testUploadInfo.hdaElement.attributes.id;
diff -r a7101734b29e8ff8aff0a8170bb8d0c5ec1a5455 -r b315c617830932da07e9cd3247790d3d2d3486c7 test/casperjs/modules/historypanel.js
--- a/test/casperjs/modules/historypanel.js
+++ b/test/casperjs/modules/historypanel.js
@@ -330,6 +330,7 @@
history : {
title : '.history-title',
name : '.history-title .history-name',
+ nameEditableTextInput : '.history-name input',
subtitle : '.history-subtitle',
tagIcon : '.history-secondary-actions .history-tag-btn',
tagArea : '.history-controls .tags-display',
diff -r a7101734b29e8ff8aff0a8170bb8d0c5ec1a5455 -r b315c617830932da07e9cd3247790d3d2d3486c7 test/casperjs/spaceghost.js
--- a/test/casperjs/spaceghost.js
+++ b/test/casperjs/spaceghost.js
@@ -559,7 +559,7 @@
SpaceGhost.prototype.hoverOver = function hoverOver( selector, whenHovering ){
var elementInfo = this.getElementInfo( selector );
this.page.sendEvent( 'mousemove', elementInfo.x + 1, elementInfo.y + 1 );
- whenHovering.call( this );
+ if( whenHovering ){ whenHovering.call( this ); }
return this;
};
@@ -1107,7 +1107,6 @@
tooltipBalloon : '.tooltip',
editableText : '.editable-text',
- editableTextInput : 'input#renaming-active',
messages : {
all : '[class*="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 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/a7101734b29e/
Changeset: a7101734b29e
User: greg
Date: 2014-01-08 21:27:25
Summary: Fix for pruning content from the tool shed's repository dependencies container.
Affected #: 1 file
diff -r 8ee5977b21731ee1815995bbcc290b09a46a13cc -r a7101734b29e8ff8aff0a8170bb8d0c5ec1a5455 lib/tool_shed/util/container_util.py
--- a/lib/tool_shed/util/container_util.py
+++ b/lib/tool_shed/util/container_util.py
@@ -744,7 +744,8 @@
lock.release()
return containers_dict
-def build_repository_containers_for_tool_shed( trans, repository, changeset_revision, repository_dependencies, repository_metadata, exclude=None ):
+def build_repository_containers_for_tool_shed( trans, repository, changeset_revision, repository_dependencies, repository_metadata,
+ exclude=None ):
"""Return a dictionary of containers for the received repository's dependencies and contents for display in the tool shed."""
if exclude is None:
exclude = []
@@ -806,11 +807,12 @@
containers_dict[ 'readme_files' ] = readme_files_root_folder
if 'repository_dependencies' not in exclude:
# Repository dependencies container.
- folder_id, repository_dependencies_root_folder = build_repository_dependencies_folder( trans=trans,
- folder_id=folder_id,
- repository_dependencies=repository_dependencies,
- label='Repository dependencies',
- installed=False )
+ folder_id, repository_dependencies_root_folder = \
+ build_repository_dependencies_folder( trans=trans,
+ folder_id=folder_id,
+ repository_dependencies=repository_dependencies,
+ label='Repository dependencies',
+ installed=False )
if repository_dependencies_root_folder:
containers_dict[ 'repository_dependencies' ] = repository_dependencies_root_folder
# Tool dependencies container.
@@ -868,11 +870,13 @@
if metadata:
if 'data_manager' not in exclude and 'data_manager' in metadata:
data_managers = metadata['data_manager'].get( 'data_managers', None )
- folder_id, data_managers_root_folder = build_data_managers_folder( trans, folder_id, data_managers, label="Data Managers" )
+ folder_id, data_managers_root_folder = \
+ build_data_managers_folder( trans, folder_id, data_managers, label="Data Managers" )
containers_dict[ 'valid_data_managers' ] = data_managers_root_folder
error_messages = metadata['data_manager'].get( 'error_messages', None )
data_managers = metadata['data_manager'].get( 'invalid_data_managers', None )
- folder_id, data_managers_root_folder = build_invalid_data_managers_folder( trans, folder_id, data_managers, error_messages, label="Invalid Data Managers" )
+ folder_id, data_managers_root_folder = \
+ build_invalid_data_managers_folder( trans, folder_id, data_managers, error_messages, label="Invalid Data Managers" )
containers_dict[ 'invalid_data_managers' ] = data_managers_root_folder
except Exception, e:
log.exception( "Exception in build_repository_containers_for_tool_shed: %s" % str( e ) )
@@ -890,15 +894,22 @@
folder_id += 1
# Create the Repository dependencies folder and add it to the root folder.
repository_dependencies_folder_key = repository_dependencies[ 'root_key' ]
- repository_dependencies_folder = Folder( id=folder_id, key=repository_dependencies_folder_key, label=label, parent=repository_dependencies_root_folder )
+ repository_dependencies_folder = Folder( id=folder_id,
+ key=repository_dependencies_folder_key,
+ label=label,
+ parent=repository_dependencies_root_folder )
del repository_dependencies[ 'root_key' ]
- # The received repository_dependencies is a dictionary with keys: 'root_key', 'description', and one or more repository_dependency keys.
- # We want the description value associated with the repository_dependencies_folder.
+ # The received repository_dependencies is a dictionary with keys: 'root_key', 'description', and one or more
+ # repository_dependency keys. We want the description value associated with the repository_dependencies_folder.
repository_dependencies_folder.description = repository_dependencies.get( 'description', None )
repository_dependencies_root_folder.folders.append( repository_dependencies_folder )
del repository_dependencies[ 'description' ]
repository_dependencies_folder, folder_id, repository_dependency_id = \
- populate_repository_dependencies_container( trans, repository_dependencies_folder, repository_dependencies, folder_id, repository_dependency_id )
+ populate_repository_dependencies_container( trans,
+ repository_dependencies_folder,
+ repository_dependencies,
+ folder_id,
+ repository_dependency_id )
repository_dependencies_folder = prune_repository_dependencies( repository_dependencies_folder )
else:
repository_dependencies_root_folder = None
@@ -985,11 +996,13 @@
tools_root_folder = None
return folder_id, tools_root_folder
-def build_tool_dependencies_folder( trans, folder_id, tool_dependencies, label='Tool dependencies', missing=False, new_install=False, reinstalling=False ):
+def build_tool_dependencies_folder( trans, folder_id, tool_dependencies, label='Tool dependencies', missing=False,
+ new_install=False, reinstalling=False ):
"""Return a folder hierarchy containing tool dependencies."""
- # When we're in Galaxy (not the tool shed) and the tool dependencies are not installed or are in an error state, they are considered missing. The tool
- # dependency status will be displayed only if a record exists for the tool dependency in the Galaxy database, but the tool dependency is not installed.
- # The value for new_install will be True only if the associated repository in being installed for the first time. This value is used in setting the
+ # When we're in Galaxy (not the tool shed) and the tool dependencies are not installed or are in an error state,
+ # they are considered missing. The tool dependency status will be displayed only if a record exists for the tool
+ # dependency in the Galaxy database, but the tool dependency is not installed. The value for new_install will be
+ # True only if the associated repository in being installed for the first time. This value is used in setting the
# container description.
if tool_dependencies:
tool_dependency_id = 0
@@ -1138,7 +1151,10 @@
else:
containing_folder = tool_test_results_root_folder
folder_id += 1
- test_environment_folder = Folder( id=folder_id, key='test_environment', label='Automated test environment', parent=containing_folder )
+ test_environment_folder = Folder( id=folder_id,
+ key='test_environment',
+ label='Automated test environment',
+ parent=containing_folder )
containing_folder.folders.append( test_environment_folder )
try:
architecture = test_environment_dict.get( 'architecture', '' )
@@ -1184,7 +1200,10 @@
passed_tests_dicts = tool_test_results_dict.get( 'passed_tests', [] )
if len( passed_tests_dicts ) > 0:
folder_id += 1
- passed_tests_folder = Folder( id=folder_id, key='passed_tests', label='Tests that passed successfully', parent=containing_folder )
+ passed_tests_folder = Folder( id=folder_id,
+ key='passed_tests',
+ label='Tests that passed successfully',
+ parent=containing_folder )
containing_folder.folders.append( passed_tests_folder )
passed_test_id = 0
for passed_tests_dict in passed_tests_dicts:
@@ -1395,7 +1414,8 @@
rd_tool_shed = str( repository_dependency_successful_installation_dict.get( 'tool_shed', '' ) )
rd_name = str( repository_dependency_successful_installation_dict.get( 'name', '' ) )
rd_owner = str( repository_dependency_successful_installation_dict.get( 'owner', '' ) )
- rd_changeset_revision = str( repository_dependency_successful_installation_dict.get( 'changeset_revision', '' ) )
+ rd_changeset_revision = \
+ str( repository_dependency_successful_installation_dict.get( 'changeset_revision', '' ) )
except Exception, e:
rd_tool_shed = 'unknown'
rd_name = 'unknown'
@@ -1495,7 +1515,8 @@
# only the "test_environment" entry, but we want at least 1 of "passed_tests", "failed_tests",
# "installation_errors", "missing_test_components" "skipped_tests", "not_tested" or any other
# entry that may be added in the future.
- display_entries = [ 'failed_tests', 'installation_errors', 'missing_test_components', 'not_tested', 'passed_tests', 'skipped_tests' ]
+ display_entries = [ 'failed_tests', 'installation_errors', 'missing_test_components',
+ 'not_tested', 'passed_tests', 'skipped_tests' ]
for k, v in tool_test_results_dict.items():
if k in display_entries:
# We've discovered an entry that can be displayed, so see if it has a value since displaying
@@ -1506,8 +1527,9 @@
def cast_empty_repository_dependency_folders( folder, repository_dependency_id ):
"""
- Change any empty folders contained within the repository dependencies container into a repository dependency since it has no repository dependencies
- of it's own. This method is not used (and may not be needed), but here it is just in case.
+ Change any empty folders contained within the repository dependencies container into a repository dependency
+ since it has no repository dependencies of it's own. This method is not used (and may not be needed), but here
+ it is just in case.
"""
if not folder.folders and not folder.repository_dependencies:
repository_dependency_id += 1
@@ -1519,10 +1541,14 @@
return cast_empty_repository_dependency_folders( sub_folder, repository_dependency_id )
return folder, repository_dependency_id
-def generate_repository_dependencies_folder_label_from_key( repository_name, repository_owner, changeset_revision, prior_installation_required,
- only_if_compiling_contained_td, key ):
+def generate_repository_dependencies_folder_label_from_key( repository_name, repository_owner, changeset_revision,
+ prior_installation_required, only_if_compiling_contained_td, key ):
"""Return a repository dependency label based on the repository dependency key."""
- if key_is_current_repositorys_key( repository_name, repository_owner, changeset_revision, prior_installation_required, only_if_compiling_contained_td, key ):
+ if key_is_current_repositorys_key( repository_name,
+ repository_owner,
+ changeset_revision,
+ prior_installation_required,
+ only_if_compiling_contained_td, key ):
label = 'Repository dependencies'
else:
if galaxy.util.asbool( prior_installation_required ):
@@ -1533,8 +1559,8 @@
( repository_name, changeset_revision, repository_owner, prior_installation_required_str )
return label
-def generate_repository_dependencies_key_for_repository( toolshed_base_url, repository_name, repository_owner, changeset_revision, prior_installation_required,
- only_if_compiling_contained_td ):
+def generate_repository_dependencies_key_for_repository( toolshed_base_url, repository_name, repository_owner, changeset_revision,
+ prior_installation_required, only_if_compiling_contained_td ):
"""Assumes tool shed is current tool shed since repository dependencies across tool sheds is not yet supported."""
return '%s%s%s%s%s%s%s%s%s%s%s' % ( str( toolshed_base_url ).rstrip( '/' ),
STRSEP,
@@ -1551,13 +1577,6 @@
def generate_tool_dependencies_key( name, version, type ):
return '%s%s%s%s%s' % ( str( name ), STRSEP, str( version ), STRSEP, str( type ) )
-def get_folder( folder, key ):
- if folder.key == key:
- return folder
- for sub_folder in folder.folders:
- return get_folder( sub_folder, key )
- return None
-
def get_components_from_repository_dependency_for_installed_repository( trans, repository_dependency ):
"""Parse a repository dependency and return components necessary for proper display in Galaxy on the Manage repository page."""
# Default prior_installation_required and only_if_compiling_contained_td to False.
@@ -1610,7 +1629,15 @@
# For backward compatibility to the 12/20/12 Galaxy release we have to return the following, and callers must handle exceptions.
return toolshed_base_url, repository_name, repository_owner, changeset_revision
-def handle_repository_dependencies_container_entry( trans, repository_dependencies_folder, rd_key, rd_value, folder_id, repository_dependency_id, folder_keys ):
+def get_folder( folder, key ):
+ if folder.key == key:
+ return folder
+ for sub_folder in folder.folders:
+ return get_folder( sub_folder, key )
+ return None
+
+def handle_repository_dependencies_container_entry( trans, repository_dependencies_folder, rd_key, rd_value, folder_id,
+ repository_dependency_id, folder_keys ):
repository_components_tuple = get_components_from_key( rd_key )
components_list = suc.extract_components_from_tuple( repository_components_tuple )
toolshed, repository_name, repository_owner, changeset_revision = components_list[ 0:4 ]
@@ -1713,11 +1740,21 @@
return True
return False
-def populate_repository_dependencies_container( trans, repository_dependencies_folder, repository_dependencies, folder_id, repository_dependency_id ):
- folder_keys = repository_dependencies.keys()
+def populate_repository_dependencies_container( trans, repository_dependencies_folder, repository_dependencies, folder_id,
+ repository_dependency_id ):
+ folder_keys = []
+ for key in repository_dependencies.keys():
+ if key not in folder_keys:
+ folder_keys.append( key )
for key, value in repository_dependencies.items():
repository_dependencies_folder, folder_id, repository_dependency_id = \
- handle_repository_dependencies_container_entry( trans, repository_dependencies_folder, key, value, folder_id, repository_dependency_id, folder_keys )
+ handle_repository_dependencies_container_entry( trans,
+ repository_dependencies_folder,
+ key,
+ value,
+ folder_id,
+ repository_dependency_id,
+ folder_keys )
return repository_dependencies_folder, folder_id, repository_dependency_id
def print_folders( pad, folder ):
@@ -1731,19 +1768,22 @@
for sub_folder in folder.folders:
print_folders( pad+5, sub_folder )
+def prune_folder( folder, repository_dependency ):
+ listified_repository_dependency = repository_dependency.listify
+ if is_subfolder_of( folder, listified_repository_dependency ):
+ folder.repository_dependencies.remove( repository_dependency )
+
def prune_repository_dependencies( folder ):
"""
- Since the object used to generate a repository dependencies container is a dictionary and not an odict() (it must be json-serialize-able), the
- order in which the dictionary is processed to create the container sometimes results in repository dependency entries in a folder that also
- includes the repository dependency as a sub-folder (if the repository dependency has it's own repository dependency). This method will remove
- all repository dependencies from folder that are also sub-folders of folder.
+ Since the object used to generate a repository dependencies container is a dictionary and not an odict() (it must be
+ json-serialize-able), the order in which the dictionary is processed to create the container sometimes results in
+ repository dependency entries in a folder that also includes the repository dependency as a sub-folder (if the
+ repository dependency has it's own repository dependency). This method will remove all repository dependencies from
+ folder that are also sub-folders of folder.
"""
repository_dependencies = [ rd for rd in folder.repository_dependencies ]
for repository_dependency in repository_dependencies:
- listified_repository_dependency = repository_dependency.listify
- if is_subfolder_of( folder, listified_repository_dependency ):
- repository_dependencies.remove( repository_dependency )
- folder.repository_dependencies = repository_dependencies
+ prune_folder( folder, repository_dependency )
for sub_folder in folder.folders:
return prune_repository_dependencies( sub_folder )
return folder
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/83cbc7f17682/
Changeset: 83cbc7f17682
User: inithello
Date: 2014-01-08 20:50:19
Summary: Allow specifying the functional tests' install_database_connection with an environment variable.
Affected #: 1 file
diff -r 16495aaa26ea3d8feabcd25ee395608568156b6f -r 83cbc7f1768231d92ee26604d1b03b8650f020a6 scripts/functional_tests.py
--- a/scripts/functional_tests.py
+++ b/scripts/functional_tests.py
@@ -313,6 +313,7 @@
file_path = os.path.join( galaxy_db_path, 'files' )
new_file_path = tempfile.mkdtemp( prefix='new_files_path_', dir=tempdir )
job_working_directory = tempfile.mkdtemp( prefix='job_working_directory_', dir=tempdir )
+ install_database_connection = os.environ.get( 'GALAXY_TEST_INSTALL_DBURI', None )
if 'GALAXY_TEST_DBURI' in os.environ:
database_connection = os.environ['GALAXY_TEST_DBURI']
else:
@@ -372,6 +373,8 @@
user_library_import_dir=user_library_import_dir,
master_api_key=master_api_key,
)
+ if install_database_connection is not None:
+ kwargs[ 'install_database_connection' ] = install_database_connection
if psu_production:
kwargs[ 'global_conf' ] = None
if not database_connection.startswith( 'sqlite://' ):
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.