Refactor twill tool test driver to encode hda id earlier.

And pass an encoded id to display action in root controller.

Would definitely like to simplify or better yet remove root.display if not used anywhere else, it should be coming in through dataset controller.
Refactor shared code in functional_tests.py into a method.
Small simplification to test/functional/test_toolbox.py.
Refactor test data input setup logic out of TestToolBox into ToolTestBuilder.

Simplifying test_toolbox.py will hopefully make it easier to provide an alternative API driven option.
Refactor data staging and tool running logic out of test/functional/test_toolbox.py.

In a new twill specific interactor class, idea here is to proceed by implementing a matching API interactor class.
Add stderr and stdout to provenance information.
Allow raw display of composite files via API.
Allow simple use of multi-page tools via API.

In tools module, when process_state=='populate' (i.e. coming from tool API without existing tool_state specified), populate and validate state of all pages of tools.
Upload a tool test's inputs in parallel.

Probably small optimization in most cases since tests generally have few inputs.
Inject master API key into functional test Galaxy.

Override or set external key with GALAXY_TEST_MASTER_API_KEY.
Tool functional tests - refactor out out reusable function for verifing output

... from verify_dataset_correctness. Introduce simple, extensible abstraction for fetching outputs for verification in twilltestcase.py. Will want to reuse the core verification of the displayed dataset in the API driven case and will not need or be able to use the extra cruft related to checking UI, job state, etc...

Also small twilltestcase code structure updates for Python 2.6+.
Outline new API based galaxy interactor for functional tests.

Add mechanism to tool test parser code to determine which Galaxy interactor should be used ('twill' or 'api' are current options). This maybe a stop gap to force usage of the API interactor until that becomes the default or may prove in the long term to be essential if there are certain tools that will always require Twill-specific functionality or if new browser-based JavaScript (e.g. w/selenium) are implemented. An interactor value can be specified at the tests level and/or at the level of individual test elements in the tool XML (using the 'interactor' attribute on either element).

The current default interactor is 'twill'. The default interactor app-wide can be overridden with the GALAXY_TEST_DEFAULT_INTERACTOR environment variable.
Twill-less tool tests initial implementation.

Implement GalaxyInteractorApi, is working for simple tests.

Lots left to do likely - conditionals, repeats, composite uploads, pages(?).

Introduces dependency on Python requests package (needed-ish for API uploads).
Twill-less tool tests - allow tests with GALAXY_TEST_EXTERNAL...

... if GALAXY_TEST_EXTERNAL is ever fixed.
Move test_toolbox's expand_grouping out into tool/test.py.

Would be good to merge these two implementations there at very least easier to reuse/test in its new home.
Simplify logic in tool test expand_grouping.
Tool functional tests - all unspecified default conditional values.

Fix should apply to both twill and API variants. For now just grabbing first option, but TODO should find option labelled default if exists.
Twill-less tool tests - handle repeats and conditionals.

Expand 'inputs' tree when building tool inputs for API functional tests.

Code is in there for both flat inputs (the way the UI would submit them), and a nested tree structure. The nested tree structure will not work with the Galaxy API currently - but it is the way the API should work :).
Twill-less tool tests fix for nested input filenames.
Twill-less tool tests fix for tests with html outputs.

For example gatk_analyze_covariates.