Merge "Check atom doesn't provide and return same values"
This commit is contained in:
@@ -19,6 +19,7 @@ import logging
|
|||||||
|
|
||||||
import six
|
import six
|
||||||
|
|
||||||
|
from taskflow import exceptions
|
||||||
from taskflow.utils import misc
|
from taskflow.utils import misc
|
||||||
from taskflow.utils import reflection
|
from taskflow.utils import reflection
|
||||||
|
|
||||||
@@ -129,6 +130,12 @@ class Atom(object):
|
|||||||
auto_extract=True):
|
auto_extract=True):
|
||||||
self.rebind = _build_arg_mapping(self.name, requires, rebind,
|
self.rebind = _build_arg_mapping(self.name, requires, rebind,
|
||||||
executor, auto_extract)
|
executor, auto_extract)
|
||||||
|
out_of_order = self.provides.intersection(self.requires)
|
||||||
|
if out_of_order:
|
||||||
|
raise exceptions.InvariantViolation(
|
||||||
|
"Atom %(item)s provides %(oo)s that are required "
|
||||||
|
"by this atom"
|
||||||
|
% dict(item=self.name, oo=sorted(out_of_order)))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
|
|||||||
@@ -107,13 +107,6 @@ class FlowDependenciesTest(test.TestCase):
|
|||||||
self.assertEqual(flow.requires, set(['a', 'b', 'c', 'z']))
|
self.assertEqual(flow.requires, set(['a', 'b', 'c', 'z']))
|
||||||
self.assertEqual(flow.provides, set(['x', 'y', 'q', 'i', 'j', 'k']))
|
self.assertEqual(flow.provides, set(['x', 'y', 'q', 'i', 'j', 'k']))
|
||||||
|
|
||||||
def test_linear_flow_self_requires(self):
|
|
||||||
flow = lf.Flow('lf')
|
|
||||||
self.assertRaises(exceptions.InvariantViolation,
|
|
||||||
flow.add,
|
|
||||||
utils.TaskNoRequiresNoReturns(rebind=['x'],
|
|
||||||
provides='x'))
|
|
||||||
|
|
||||||
def test_linear_flow_provides_same_values(self):
|
def test_linear_flow_provides_same_values(self):
|
||||||
flow = lf.Flow('lf').add(utils.TaskOneReturn(provides='x'))
|
flow = lf.Flow('lf').add(utils.TaskOneReturn(provides='x'))
|
||||||
self.assertRaises(exceptions.DependencyFailure,
|
self.assertRaises(exceptions.DependencyFailure,
|
||||||
@@ -134,13 +127,6 @@ class FlowDependenciesTest(test.TestCase):
|
|||||||
self.assertEqual(flow.requires, set())
|
self.assertEqual(flow.requires, set())
|
||||||
self.assertEqual(flow.provides, set())
|
self.assertEqual(flow.provides, set())
|
||||||
|
|
||||||
def test_unordered_flow_self_requires(self):
|
|
||||||
flow = uf.Flow('uf')
|
|
||||||
self.assertRaises(exceptions.InvariantViolation,
|
|
||||||
flow.add,
|
|
||||||
utils.TaskNoRequiresNoReturns(rebind=['x'],
|
|
||||||
provides='x'))
|
|
||||||
|
|
||||||
def test_unordered_flow_requires_values(self):
|
def test_unordered_flow_requires_values(self):
|
||||||
flow = uf.Flow('uf').add(
|
flow = uf.Flow('uf').add(
|
||||||
utils.TaskOneArg('task1'),
|
utils.TaskOneArg('task1'),
|
||||||
@@ -234,13 +220,6 @@ class FlowDependenciesTest(test.TestCase):
|
|||||||
self.assertEqual(flow.requires, set())
|
self.assertEqual(flow.requires, set())
|
||||||
self.assertEqual(flow.provides, set())
|
self.assertEqual(flow.provides, set())
|
||||||
|
|
||||||
def test_graph_flow_self_requires(self):
|
|
||||||
flow = gf.Flow('g-1-req-error')
|
|
||||||
self.assertRaisesRegexp(exceptions.DependencyFailure, '^No path',
|
|
||||||
flow.add,
|
|
||||||
utils.TaskOneArgOneReturn(requires=['a'],
|
|
||||||
provides='a'))
|
|
||||||
|
|
||||||
def test_graph_flow_requires_values(self):
|
def test_graph_flow_requires_values(self):
|
||||||
flow = gf.Flow('gf').add(
|
flow = gf.Flow('gf').add(
|
||||||
utils.TaskOneArg('task1'),
|
utils.TaskOneArg('task1'),
|
||||||
@@ -296,3 +275,9 @@ class FlowDependenciesTest(test.TestCase):
|
|||||||
requires=['c']),
|
requires=['c']),
|
||||||
utils.TaskOneArgOneReturn(provides='c',
|
utils.TaskOneArgOneReturn(provides='c',
|
||||||
requires=['a']))
|
requires=['a']))
|
||||||
|
|
||||||
|
def test_task_requires_and_provides_same_values(self):
|
||||||
|
self.assertRaises(exceptions.InvariantViolation,
|
||||||
|
utils.TaskOneArgOneReturn,
|
||||||
|
requires='a',
|
||||||
|
provides='a')
|
||||||
|
|||||||
Reference in New Issue
Block a user