mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
- Add flake8-import-order to flake8 Pipfile and remove py27-lint-imports and py27-lint-imports-include-list tox envs - Fix most E201 and E202 errors reported by flake8-import-order v0.15, but pin flake8-import-order to v0.14.3 until https://github.com/PyCQA/flake8-import-order/issues/123 is fixed This let us drop 2 jobs on Travis per each job.
147 lines
4.4 KiB
Python
147 lines
4.4 KiB
Python
from galaxy import model
|
|
from galaxy.workflow.run_request import (
|
|
_normalize_inputs,
|
|
_normalize_step_parameters
|
|
)
|
|
from .workflow_support import MockTrans
|
|
|
|
STEP_ID_OFFSET = 4 # Offset a little so ids and order index are different.
|
|
|
|
|
|
def test_normalize_parameters_empty():
|
|
normalized_params = __normalize_parameters_against_fixture({})
|
|
assert normalized_params == {}
|
|
|
|
|
|
def test_normalize_parameters_by_tool():
|
|
normalized_params = __normalize_parameters_against_fixture({
|
|
'cat1': {'foo': 'bar'}
|
|
})
|
|
# Tool specified parameters are expanded out.
|
|
assert normalized_params[STEP_ID_OFFSET + 3] == {'foo': 'bar'}
|
|
assert normalized_params[STEP_ID_OFFSET + 4] == {'foo': 'bar'}
|
|
assert len(normalized_params.keys()) == 2
|
|
|
|
|
|
def test_step_parameters():
|
|
normalized_params = __normalize_parameters_against_fixture({
|
|
str(STEP_ID_OFFSET + 1): {'foo': 'bar'}
|
|
})
|
|
assert normalized_params[STEP_ID_OFFSET + 1] == {'foo': 'bar'}
|
|
assert len(normalized_params.keys()) == 1
|
|
|
|
|
|
def test_step_parameters_legacy():
|
|
normalized_params = __normalize_parameters_against_fixture({
|
|
str(STEP_ID_OFFSET + 1): {'param': 'foo', 'value': 'bar'}
|
|
})
|
|
assert normalized_params[STEP_ID_OFFSET + 1] == {'foo': 'bar'}, normalized_params
|
|
assert len(normalized_params.keys()) == 1
|
|
|
|
|
|
def test_inputs_by_step_id():
|
|
input1 = __new_input()
|
|
input2 = __new_input()
|
|
normalized_inputs = __normalize_inputs_against_fixture({
|
|
str(STEP_ID_OFFSET + 1): input1,
|
|
str(STEP_ID_OFFSET + 2): input2
|
|
}, inputs_by="step_id")
|
|
assert normalized_inputs[STEP_ID_OFFSET + 1]['content'] == input1['content']
|
|
assert normalized_inputs[STEP_ID_OFFSET + 2]['content'] == input2['content']
|
|
|
|
|
|
def test_inputs_by_step_index():
|
|
input1 = __new_input()
|
|
input2 = __new_input()
|
|
normalized_inputs = __normalize_inputs_against_fixture({
|
|
str(0): input1,
|
|
str(1): input2
|
|
}, inputs_by="step_index")
|
|
assert normalized_inputs[STEP_ID_OFFSET + 1]['content'] == input1['content']
|
|
assert normalized_inputs[STEP_ID_OFFSET + 2]['content'] == input2['content']
|
|
|
|
|
|
def test_inputs_by_name():
|
|
input1 = __new_input()
|
|
input2 = __new_input()
|
|
normalized_inputs = __normalize_inputs_against_fixture({
|
|
"input1": input1,
|
|
"input2": input2
|
|
}, inputs_by="name")
|
|
assert normalized_inputs[STEP_ID_OFFSET + 1]['content'] == input1['content']
|
|
assert normalized_inputs[STEP_ID_OFFSET + 2]['content'] == input2['content']
|
|
|
|
|
|
def __normalize_parameters_against_fixture(params):
|
|
trans = MockTrans()
|
|
# Create a throw away workflow so step ids and order_index
|
|
# are different for actual fixture.
|
|
__workflow_fixure(trans)
|
|
|
|
workflow = __workflow_fixure(trans)
|
|
normalized_params = _normalize_step_parameters(workflow.steps, params, legacy=True)
|
|
return normalized_params
|
|
|
|
|
|
def __normalize_inputs_against_fixture(inputs, inputs_by):
|
|
trans = MockTrans()
|
|
# Create a throw away workflow so step ids and order_index
|
|
# are different for actual fixture.
|
|
__workflow_fixure(trans)
|
|
|
|
workflow = __workflow_fixure(trans)
|
|
normalized_inputs = _normalize_inputs(workflow.steps, inputs, inputs_by)
|
|
return normalized_inputs
|
|
|
|
|
|
def __new_input():
|
|
return dict(content=model.HistoryDatasetAssociation())
|
|
|
|
|
|
def __workflow_fixure(trans):
|
|
user = model.User(
|
|
email="testworkflow_params@bx.psu.edu",
|
|
password="pass"
|
|
)
|
|
stored_workflow = model.StoredWorkflow()
|
|
stored_workflow.user = user
|
|
workflow = model.Workflow()
|
|
workflow.stored_workflow = stored_workflow
|
|
|
|
def add_step(**kwds):
|
|
workflow_step = model.WorkflowStep()
|
|
for key, value in kwds.items():
|
|
setattr(workflow_step, key, value)
|
|
workflow.steps.append(workflow_step)
|
|
|
|
trans.app.model.context.add(
|
|
workflow,
|
|
)
|
|
|
|
add_step(
|
|
type="data_input",
|
|
order_index=0,
|
|
tool_inputs={"name": "input1"}
|
|
)
|
|
add_step(
|
|
type="data_input",
|
|
order_index=1,
|
|
tool_inputs={"name": "input2"}
|
|
)
|
|
add_step(
|
|
type="tool",
|
|
tool_id="cat1",
|
|
order_index=2,
|
|
)
|
|
add_step(
|
|
type="tool",
|
|
tool_id="cat1",
|
|
order_index=4,
|
|
)
|
|
trans.app.model.context.flush()
|
|
# Expunge and reload to ensure step state is as expected from database.
|
|
workflow_id = workflow.id
|
|
trans.app.model.context.expunge_all()
|
|
|
|
return trans.app.model.context.query(model.Workflow).get(workflow_id)
|