Small tweaks to some functional test tools.
Add data labels so the tools works in the workflow editor and added a conditional switches to some with collection params and multiple input data parameters to test some state-y logic in workflow editor.
Add functional test tool demonstrating special parameters.
:(
Add functional test tool demonstrating setting output dataset formats.
Directly setting format attribute, setting to format to 'input' (ambigious, non-deterministic and should be deprecated IMO), using format_source, and using change_format actions.
Add functional test tool demonstrating output filters.
Add new 'expect_num_outputs' attribute to 'test' element in tool XML to verify the produced number - needed to test output filtering.
PEP-8 fixes for tools/actions/__init__.py.
Unit test for galaxy.tools.action to ensure all datasets get same object store id.
Enables subsequent refactoring.
Small galaxy.tools.actions refactor related to object store...
Breaks up the big loop in execute a little bit but will enable a much bigger breakup in subsequent refactoring because the loop will no longer have to update the object_store_id local variable - that will be tracked in new object.
Refactor tool action loop allowing reuse of job dataset creation logic.
Reusing this logic will be useful in the context of creating datasets belonging to output collections. This also breaks up the big loop slightly and allows a small reduction in cyclomatic complexity in subsequent refactoring.
Unit tests for tool action code determining output formats.
With refactoring to reduce cyclomatic complexity. Also renaming 'input_ext' what it actually is 'random_input_ext'. We should fix that or at least issue a huge warning if we detect 'input' could have reasonable been different things.
Break up tool action loop by refactoring filtering logic out.
Small optimization for implicit collection creation from tool execution.
Don't write out encode identifier, add to dict, and then reload object in dataset collection service - just pass through the object in the dictionary as is.
Refactor some collection-y tool methods ahead of collection outputs.
Tool mapping "structure" logic no longer assumes tool outputs are datasets - could also potentially handle logic related to structure of output collections as well now.

These variable names will make for sense down the road when tools that explicitly create collections exist and can be mapped over.
Fix unit tests broken with 9f63d96.
Delete incorrect unit test added in d15f9a1.
Don't know what I was thinking - it doesn't look like that method ever had that behavior.
Fix workflow rendering unit test when run in suite.
It was stubbing out connection stuff which worked fine when running test on its own - but after any test sets up the sql alchemy mappings this breaks down because events are trying to fire. This just uses actual model classes - which is just as easy anyway really.
Initial work on tool dataset collection outputs from James Johnson.
Allow tools to produce a fixed number of output datasets for a collection.

Valid for tools such as a FASTQ de-interlacer to produce a pair - but not tools that produce a dynamic number of inputs. So far these tools are unusable in workflows and cannot be 'mapped' over - for instance you cannot take a list of interlaced files a produce a list of de-interlaced pairs.

Rename data_collection element to collection to match pattern already formed in tests.
Prevent tools producing workflow collections from being used in workflows or for multimapping.
WIP: Allow a known variable number of outputs from collections.

Should allow N->N operations without crazy workflow scheduling.
Model changes to track output collection parts...

Jobs just producing HistoryDatasetCollectionAssociations works fine for simple jobs producing collections - but you don't want to map a list over a tool that produces a pair and produce a bunch of pairs HDCAs and a list:pair HDCA- you just want a bunch of pieces and the one list:pair at that the top.  I think anyway... could totally be wrong.