コード例 #1
0
def test_open_or_get_error_no_plugin(mock_npe2_pm):
    """Assert error is raised when no plugin is available."""
    viewer = ViewerModel()

    with pytest.raises(NoAvailableReaderError,
                       match='No plugin found capable of reading'):
        viewer._open_or_raise_error(['my_file.fake'])
コード例 #2
0
ファイル: test_viewer_model.py プロジェクト: kne42/napari
def test_open_or_get_error_preferred_fails(builtins, tmp_path):
    viewer = ViewerModel()
    pth = tmp_path / 'my-file.npy'

    get_settings().plugins.extension2reader = {'*.npy': builtins.name}

    with pytest.raises(ReaderPluginError,
                       match='Tried opening with napari, but failed.'):
        viewer._open_or_raise_error([str(pth)])
コード例 #3
0
def test_open_or_get_error_preferred_fails(tmp_path):
    viewer = ViewerModel()
    pth = tmp_path / 'my-file.npy'

    with restore_settings_on_exit():
        get_settings().plugins.extension2reader = {'.npy': 'napari'}

        with pytest.raises(ReaderPluginError,
                           match='Tried opening with napari, but failed.'):
            viewer._open_or_raise_error([str(pth)])
コード例 #4
0
def test_open_or_get_error_multiple_readers(mock_npe2_pm, tmp_reader):
    """Assert error is returned when multiple plugins are available to read."""
    viewer = ViewerModel()

    tmp_reader(mock_npe2_pm, 'p1')
    tmp_reader(mock_npe2_pm, 'p2')

    with pytest.raises(MultipleReaderError,
                       match='Multiple plugins found capable'):
        viewer._open_or_raise_error(['my_file.fake'])
コード例 #5
0
def test_open_or_get_error_cant_find_plugin(mock_npe2_pm, tmp_reader):
    """Test correct error message is returned when prefered plugin is missing."""
    viewer = ViewerModel()

    with restore_settings_on_exit():
        get_settings().plugins.extension2reader = {'*.fake': 'fake-reader'}

        tmp_reader(mock_npe2_pm, 'other-fake-reader')

        with pytest.raises(MissingAssociatedReaderError,
                           match="Can't find fake-reader plugin"):
            viewer._open_or_raise_error(['my_file.fake'])
コード例 #6
0
ファイル: test_viewer_model.py プロジェクト: kne42/napari
def test_open_or_get_error_multiple_readers(tmp_plugin: DynamicPlugin):
    """Assert error is returned when multiple plugins are available to read."""
    viewer = ViewerModel()
    tmp2 = tmp_plugin.spawn(register=True)

    @tmp_plugin.contribute.reader(filename_patterns=['*.fake'])
    def _(path):
        ...

    @tmp2.contribute.reader(filename_patterns=['*.fake'])
    def _(path):
        ...

    with pytest.raises(MultipleReaderError,
                       match='Multiple plugins found capable'):
        viewer._open_or_raise_error(['my_file.fake'])
コード例 #7
0
ファイル: test_viewer_model.py プロジェクト: kne42/napari
def test_open_or_get_error_no_prefered_plugin_many_available(
    tmp_plugin: DynamicPlugin, ):
    """Test MultipleReaderError raised if preferred plugin missing."""
    viewer = ViewerModel()
    tmp2 = tmp_plugin.spawn(register=True)

    @tmp_plugin.contribute.reader(filename_patterns=['*.fake'])
    def _(path):
        ...

    @tmp2.contribute.reader(filename_patterns=['*.fake'])
    def _(path):
        ...

    get_settings().plugins.extension2reader = {'*.fake': 'not-a-plugin'}

    with pytest.warns(RuntimeWarning, match="Can't find not-a-plugin plugin"):
        with pytest.raises(MultipleReaderError,
                           match='Multiple plugins found capable'):
            viewer._open_or_raise_error(['my_file.fake'])
コード例 #8
0
ファイル: test_viewer_model.py プロジェクト: jojoelfe/napari
def test_open_or_get_error_no_prefered_plugin_many_available(
    mock_npe2_pm, tmp_reader
):
    """Test MultipleReaderError raised if preferred plugin missing."""
    viewer = ViewerModel()

    with restore_settings_on_exit():
        get_settings().plugins.extension2reader = {'*.fake': 'not-a-plugin'}

        tmp_reader(mock_npe2_pm, 'fake-reader', filename_patterns=['*.fake'])
        tmp_reader(
            mock_npe2_pm, 'other-fake-reader', filename_patterns=['*.fake']
        )

        with pytest.warns(
            RuntimeWarning, match="Can't find not-a-plugin plugin"
        ):
            with pytest.raises(
                MultipleReaderError, match='Multiple plugins found capable'
            ):
                viewer._open_or_raise_error(['my_file.fake'])
コード例 #9
0
ファイル: test_viewer_model.py プロジェクト: kne42/napari
def test_open_or_get_error_cant_find_plugin(tmp_path, builtins: DynamicPlugin):
    """Test user is warned and only plugin used if preferred plugin missing."""
    viewer = ViewerModel()
    pth = tmp_path / 'my-file.npy'
    np.save(pth, np.random.random((10, 10)))

    get_settings().plugins.extension2reader = {'*.npy': 'fake-reader'}

    with pytest.warns(RuntimeWarning, match="Can't find fake-reader plugin"):
        added = viewer._open_or_raise_error([str(pth)])
    assert len(added) == 1
    assert added[0].source.reader_plugin == builtins.name
コード例 #10
0
def test_open_or_get_error_builtins(mock_npe2_pm, tmp_path):
    """Test builtins is available to read npy files."""
    viewer = ViewerModel()

    f_pth = tmp_path / 'my-file.npy'
    data = np.random.random((10, 10))
    np.save(f_pth, data)

    added = viewer._open_or_raise_error([str(f_pth)])
    assert len(added) == 1
    layer = added[0]
    assert isinstance(layer, Image)
    np.testing.assert_allclose(layer.data, data)
    assert layer.source.reader_plugin == 'builtins'
コード例 #11
0
ファイル: test_viewer_model.py プロジェクト: kne42/napari
def test_open_or_get_error_prefered_plugin(tmp_path, builtins: DynamicPlugin,
                                           tmp_plugin: DynamicPlugin):
    """Test plugin preference is respected."""
    viewer = ViewerModel()
    pth = tmp_path / 'my-file.npy'
    np.save(pth, np.random.random((10, 10)))

    @tmp_plugin.contribute.reader(filename_patterns=['*.npy'])
    def _(path):
        ...

    get_settings().plugins.extension2reader = {'*.npy': builtins.name}

    added = viewer._open_or_raise_error([str(pth)])
    assert len(added) == 1
    assert added[0].source.reader_plugin == builtins.name
コード例 #12
0
def test_open_or_get_error_prefered_plugin(mock_npe2_pm, tmp_reader, tmp_path):
    """Test plugin preference is respected."""
    viewer = ViewerModel()
    pth = tmp_path / 'my-file.npy'
    np.save(pth, np.random.random((10, 10)))

    with restore_settings_on_exit():
        get_settings().plugins.extension2reader = {'*.npy': 'builtins'}

        tmp_reader(mock_npe2_pm, 'fake-reader', filename_patterns=['*.npy'])
        tmp_reader(mock_npe2_pm,
                   'other-fake-reader',
                   filename_patterns=['*.npy'])

        added = viewer._open_or_raise_error([str(pth)])
        assert len(added) == 1
        assert added[0].source.reader_plugin == 'builtins'