示例#1
0
def test_single_transform_returning_result():
    solid_inst = single_output_transform(
        'test_return_result',
        inputs=[],
        transform_fn=lambda *_args, **_kwargs: Result(None),
        output=OutputDefinition(),
    )

    with pytest.raises(DagsterInvariantViolationError):
        execute_single_solid_in_isolation(ExecutionContext(), solid_inst)
示例#2
0
def test_do_not_yield_result():
    solid_inst = SolidDefinition(
        name='do_not_yield_result',
        inputs=[],
        outputs=[OutputDefinition()],
        transform_fn=lambda *_args, **_kwargs: Result('foo'),
    )

    with pytest.raises(
            DagsterInvariantViolationError,
            match='Transform for solid do_not_yield_result returned a Result',
    ):
        execute_single_solid_in_isolation(ExecutionContext(), solid_inst)
示例#3
0
def test_yield_non_result():
    def _tn(*_args, **_kwargs):
        yield 'foo'

    solid_inst = SolidDefinition(name='yield_wrong_thing',
                                 inputs=[],
                                 outputs=[OutputDefinition()],
                                 transform_fn=_tn)

    with pytest.raises(
            DagsterInvariantViolationError,
            match="Transform for solid yield_wrong_thing yielded 'foo'"):
        execute_single_solid_in_isolation(ExecutionContext(), solid_inst)
示例#4
0
def test_solid_return_list_instead_of_multiple_results():
    @solid(outputs=[OutputDefinition(name='foo'), OutputDefinition(name='bar')])
    def hello_world(_info):
        return ['foo', 'bar']

    with pytest.raises(DagsterInvariantViolationError) as exc_info:
        result = execute_single_solid_in_isolation(create_test_context(), hello_world)

    assert 'unexpectedly returned output [\'foo\', \'bar\']' in str(exc_info.value)
示例#5
0
def test_solid_one_output():
    @lambda_solid
    def hello_world():
        return {'foo': 'bar'}

    result = execute_single_solid_in_isolation(create_test_context(), hello_world)

    assert result.success
    assert len(result.result_list) == 1
    assert result.result_list[0].transformed_value()['foo'] == 'bar'
示例#6
0
def test_solid():
    @solid(outputs=[OutputDefinition()])
    def hello_world(_info):
        return {'foo': 'bar'}

    result = execute_single_solid_in_isolation(create_test_context(), hello_world)

    assert result.success
    assert len(result.result_list) == 1
    assert result.result_list[0].transformed_value()['foo'] == 'bar'
示例#7
0
def test_empty_solid():
    called = {}

    @lambda_solid()
    def hello_world():
        called['yup'] = True

    result = execute_single_solid_in_isolation(create_test_context(), hello_world)

    assert called['yup']
示例#8
0
def test_solid_with_implicit_single_output():
    @solid()
    def hello_world(_info):
        return 'foo'

    result = execute_single_solid_in_isolation(create_test_context(), hello_world)

    assert result.success
    assert len(result.result_list) == 1
    solid_result = result.result_list[0]
    assert solid_result.transformed_value() == 'foo'
示例#9
0
def test_dict_multiple_outputs():
    @solid(outputs=[OutputDefinition(name="left"), OutputDefinition(name="right")])
    def hello_world(_info):
        return MultipleResults.from_dict({'left': {'foo': 'left'}, 'right': {'foo': 'right'}})

    result = execute_single_solid_in_isolation(create_test_context(), hello_world)

    assert result.success
    assert len(result.result_list) == 1
    solid_result = result.result_list[0]
    assert solid_result.transformed_value('left')['foo'] == 'left'
    assert solid_result.transformed_value('right')['foo'] == 'right'
示例#10
0
def test_solid_with_explicit_empty_outputs():
    @solid(outputs=[])
    def hello_world(_info):
        return 'foo'

    with pytest.raises(DagsterInvariantViolationError) as exc_info:
        result = execute_single_solid_in_isolation(create_test_context(), hello_world)

    assert 'Solid unexpectedly returned output foo of type <class \'str\'>. Solid is explicitly ' 'defined to return no results.' in str(
        exc_info.value
    ) or 'Solid unexpectedly returned output foo of type <type \'str\'>. Solid is explicitly ' 'defined to return no results.' in str(
        exc_info.value
    )  # py2
示例#11
0
def test_any_config_field():
    called = {}
    conf_value = 234

    @solid(config_field=Field(Any))
    def hello_world(info):
        assert info.config == conf_value
        called['yup'] = True

    result = execute_single_solid_in_isolation(
        create_test_context(),
        hello_world,
        environment={'solids': {'hello_world': {'config': conf_value}}},
    )

    assert called['yup']
def test_basic_isolated_sql_solid():
    context = in_mem_context()

    sql_text = '''CREATE TABLE sum_table AS SELECT num1, num2, num1 + num2 as sum FROM num_table'''

    basic_isolated_sql_solid = create_sql_statement_solid(
        'basic_isolated_sql_solid', sql_text)

    result = execute_single_solid_in_isolation(context,
                                               basic_isolated_sql_solid)

    assert result.success

    results = context.resources.sa.engine.connect().execute(
        'SELECT * from sum_table').fetchall()
    assert results == [(1, 2, 3), (3, 4, 7)]