Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
gregorybchris committed Dec 30, 2024
1 parent 405515f commit d784fd6
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 20 deletions.
11 changes: 10 additions & 1 deletion src/myxa/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,20 @@ def _find_namespace(self, name: str, index: Index) -> Namespace:
msg = f"Package {name} not found in the provided index: {index.name}"
raise UserError(msg)

def _get_package(self, name: str, version: Version, index: Index) -> Package:
namespace = self._find_namespace(name, index)
if not namespace.packages.get(version.to_str()):
msg = f"Package {name}~={version.to_str()} not found in the provided index: {index.name}"
raise UserError(msg)
return namespace.packages[version.to_str()]

def _get_latest_package(self, name: str, index: Index) -> Package:
namespace = self._find_namespace(name, index)
versions = [Version.from_str(s) for s in namespace.packages]
latest_version = max(versions)
return namespace.packages[latest_version.to_str()]

def add(self, package: Package, dep_name: str, index: Index, version: Optional[Version]) -> None:
def add(self, package: Package, dep_name: str, index: Index, version: Optional[Version] = None) -> None:
self.printer.print_message(f"Adding dependency {dep_name} to package {package.info.name}...")
if package.info.deps.get(dep_name) and (version is None or package.info.deps[dep_name].version == version):
msg = f"{dep_name} is already a dependency of {package.info.name}"
Expand All @@ -116,6 +123,8 @@ def remove(self, package: Package, dep_name: str) -> None:

def lock(self, package: Package, index: Index) -> None:
self.printer.print_message(f"Locking package {package.info.name}...")
for dep in package.info.deps.values():
self._get_package(dep.name, dep.version, index)
resolver = Resolver(index=index)
package.lock = resolver.resolve(package)
n_deps = len(package.lock.deps)
Expand Down
23 changes: 14 additions & 9 deletions tests/test_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,6 @@ def test_init_package_twice_raises_user_error(
with pytest.raises(UserError, match="Package file already exists at"):
manager.init("myxa", "Compatibility aware package manager", package_filepath)

def test_print_package_without_lock_raises_user_error(
self,
manager: Manager,
euler_package: Package,
) -> None:
with pytest.raises(UserError, match="No lock found for package euler"):
manager.printer.print_package(euler_package, show_lock=True)

def test_publish_without_lock_raises_user_error(
self,
manager: Manager,
Expand Down Expand Up @@ -176,7 +168,20 @@ def test_lock_dep_not_in_index_raises_user_error(
primary_index: Index,
) -> None:
interlet_package.info.deps["flatty"] = Dep(name="flatty", version=Version.from_str("2.0"))
with pytest.raises(UserError, match="Dependency flatty not found in index primary"):
with pytest.raises(UserError, match="Package flatty not found in the provided index: primary"):
manager.lock(interlet_package, primary_index)

def test_lock_dep_version_not_in_index_raises_user_error(
self,
manager: Manager,
interlet_package: Package,
flatty_package: Package,
primary_index: Index,
) -> None:
manager.lock(flatty_package, primary_index)
manager.publish(flatty_package, primary_index)
interlet_package.info.deps["flatty"] = Dep(name="flatty", version=Version.from_str("100.0"))
with pytest.raises(UserError, match="Package flatty~=100.0 not found in the provided index: primary"):
manager.lock(interlet_package, primary_index)

def test_unlock(
Expand Down
10 changes: 0 additions & 10 deletions tests/test_printer.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import pytest
from rich.console import Console

from myxa.errors import UserError
from myxa.models import Index, Package, PackageLock
from myxa.printer import Printer

Expand All @@ -24,15 +23,6 @@ def test_print_package(
show_lock: bool,
show_modules: bool,
) -> None:
if show_lock:
with pytest.raises(UserError, match="No lock found for package app"):
printer.print_package(
app_package,
show_deps=show_deps,
show_lock=show_lock,
show_modules=show_modules,
)

app_package.lock = PackageLock(deps=app_package.info.deps)
printer.print_package(
app_package,
Expand Down

0 comments on commit d784fd6

Please sign in to comment.