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)
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)
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)
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)
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'
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'
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']
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'
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'
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
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)]