Skip to content

Commit

Permalink
fix: Add error and log for locking unknown plugins (meltano#7358)
Browse files Browse the repository at this point in the history
* add error and log for locking plugins

* Update src/meltano/cli/lock.py

Co-authored-by: Edgar R. M. <edgar@meltano.com>

* Add test

---------

Co-authored-by: Edgar R. M. <edgar@meltano.com>
Co-authored-by: Edgar Ramírez Mondragón <edgarrm358@gmail.com>
  • Loading branch information
3 people committed Mar 2, 2023
1 parent b1f65b7 commit e0bd40e
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
9 changes: 8 additions & 1 deletion src/meltano/cli/lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

if t.TYPE_CHECKING:
from meltano.core.project import Project
from meltano.core.tracking import Tracker


__all__ = ["lock"]
Expand Down Expand Up @@ -54,7 +55,7 @@ def lock(
\b\nRead more at https://docs.meltano.com/reference/command-line-interface#lock
"""
tracker = ctx.obj["tracker"]
tracker: Tracker = ctx.obj["tracker"]

lock_service = PluginLockService(project)
if (all_plugins and plugin_name) or not (all_plugins or plugin_name):
Expand All @@ -77,6 +78,12 @@ def lock(

tracked_plugins = []

if not plugins:
tracker.track_command_event(CliEvent.aborted)
errmsg = "No matching plugin(s) found"
raise CliError(errmsg)

click.echo(f"Locking {len(plugins)} plugin(s)...")
for plugin in plugins:
descriptor = f"{plugin.type.descriptor} {plugin.name}"
if plugin.is_custom():
Expand Down
8 changes: 7 additions & 1 deletion tests/meltano/cli/test_lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import pytest
from click.testing import CliRunner

from meltano.cli import cli
from meltano.cli import CliError, cli
from meltano.core.hub import MeltanoHubService
from meltano.core.plugin.project_plugin import ProjectPlugin
from meltano.core.plugin_lock_service import PluginLock
Expand Down Expand Up @@ -103,3 +103,9 @@ def test_lockfile_update_extractors(
assert "Lockfile exists" not in result.stdout
assert "Locked definition for extractor tap-mock" in result.stdout
assert "Extractor tap-mock-inherited is an inherited plugin" in result.stdout

def test_lock_plugin_not_found(self, cli_runner: CliRunner):
result = cli_runner.invoke(cli, ["lock", "not-a-plugin"])
assert result.exit_code == 1
assert isinstance(result.exception, CliError)
assert "No matching plugin(s) found" in str(result.exception)

0 comments on commit e0bd40e

Please sign in to comment.