def test_invalid_path_prefix(): with mock.patch("uvicorn.run"), tempfile.TemporaryDirectory() as temp_dir: instance = DagsterInstance.local_temp(temp_dir) with load_workspace_process_context_from_yaml_paths( instance, [file_relative_path(__file__, "./workspace.yaml") ]) as workspace_process_context: with pytest.raises(Exception) as exc_info: host_dagit_ui_with_workspace_process_context( workspace_process_context=workspace_process_context, host=None, port=2343, path_prefix="no-leading-slash", ) assert "path prefix should begin with a leading" in str( exc_info.value) with pytest.raises(Exception) as exc_info: host_dagit_ui_with_workspace_process_context( workspace_process_context=workspace_process_context, host=None, port=2343, path_prefix="/extra-trailing-slash/", ) assert "path prefix should not include a trailing" in str( exc_info.value)
def test_successful_host_dagit_ui_from_legacy_repository(): with mock.patch("uvicorn.run"), tempfile.TemporaryDirectory() as temp_dir: instance = DagsterInstance.local_temp(temp_dir) with load_workspace_process_context_from_yaml_paths( instance, [file_relative_path(__file__, "./workspace.yaml") ]) as workspace_process_context: host_dagit_ui_with_workspace_process_context( workspace_process_context=workspace_process_context, host=None, port=2343, path_prefix="", )
def test_valid_path_prefix(): with mock.patch("gevent.pywsgi.WSGIServer"), tempfile.TemporaryDirectory() as temp_dir: instance = DagsterInstance.local_temp(temp_dir) with load_workspace_process_context_from_yaml_paths( instance, [file_relative_path(__file__, "./workspace.yaml")] ) as workspace_process_context: host_dagit_ui_with_workspace_process_context( workspace_process_context=workspace_process_context, host=None, port=2343, port_lookup=False, path_prefix="/dagster-path", )
def test_successful_host_dagit_ui_from_multiple_workspace_files(): with mock.patch("gevent.pywsgi.WSGIServer"), tempfile.TemporaryDirectory() as temp_dir: instance = DagsterInstance.local_temp(temp_dir) with load_workspace_process_context_from_yaml_paths( instance, [ file_relative_path(__file__, "./workspace.yaml"), file_relative_path(__file__, "./override.yaml"), ], ) as workspace_process_context: host_dagit_ui_with_workspace_process_context( workspace_process_context=workspace_process_context, host=None, port=2343, path_prefix="", )
def test_port_collision(): def _raise_os_error(): raise OSError("Address already in use") with mock.patch( "gevent.pywsgi.WSGIServer", new=_define_mock_server(_raise_os_error) ), tempfile.TemporaryDirectory() as temp_dir: instance = DagsterInstance.local_temp(temp_dir) with load_workspace_process_context_from_yaml_paths( instance, [file_relative_path(__file__, "./workspace.yaml")] ) as workspace_process_context: with pytest.raises(Exception) as exc_info: host_dagit_ui_with_workspace_process_context( workspace_process_context=workspace_process_context, host=None, port=2343, port_lookup=False, path_prefix="", ) assert "another instance of dagit " in str(exc_info.value)
def test_unknown_error(): class AnException(Exception): pass def _raise_custom_error(): raise AnException("foobar") with mock.patch( "gevent.pywsgi.WSGIServer", new=_define_mock_server(_raise_custom_error) ), tempfile.TemporaryDirectory() as temp_dir: instance = DagsterInstance.local_temp(temp_dir) with load_workspace_process_context_from_yaml_paths( instance, [file_relative_path(__file__, "./workspace.yaml")] ) as workspace_process_context: with pytest.raises(AnException): host_dagit_ui_with_workspace_process_context( workspace_process_context=workspace_process_context, host=None, port=2343, path_prefix="", )