def test_package_clone(f: Factory) -> None: # TODO(nic): this test is not future-proof, in that any attributes added # to the Package object and not filled out in this test setup might # cause comparisons to match that otherwise should not. A factory method # to create a Package object with all fields fully randomized would be the # most rigorous test for this, but that's likely overkill. p = Package( "lol_wut", "3.141.5926535", pretty_version="③.⑭.⑮", source_type="git", source_url="http://some.url", source_reference="fe4d2adabf3feb5d32b70ab5c105285fa713b10c", source_resolved_reference="fe4d2adabf3feb5d32b70ab5c105285fa713b10c", features=["abc", "def"], develop=random.choice((True, False)), ) p.add_dependency(Factory.create_dependency("foo", "^1.2.3")) p.add_dependency(Factory.create_dependency("foo", "^1.2.3", groups=["dev"])) p.files = (["file1", "file2", "file3"], ) # type: ignore[assignment] p.homepage = "https://some.other.url" p.repository_url = "http://bug.farm" p.documentation_url = "http://lorem.ipsum/dolor/sit.amet" p2 = p.clone() assert p == p2 assert p.__dict__ == p2.__dict__ assert len(p2.requires) == 1 assert len(p2.all_requires) == 2
def package_with_groups(): package = Package("foo", "1.2.3") optional_group = DependencyGroup("optional", optional=True) optional_group.add_dependency(Factory.create_dependency("bam", "^3.0.0")) package.add_dependency(Factory.create_dependency("bar", "^1.0.0")) package.add_dependency(Factory.create_dependency("baz", "^1.1.0")) package.add_dependency(Factory.create_dependency("bim", "^2.0.0", groups=["dev"])) package.add_dependency_group(optional_group) return package
def test_package_add_dependency_vcs_groups_default_main(f: Factory) -> None: package = Package("foo", "0.1.0") dependency = package.add_dependency( f.create_dependency( "poetry", {"git": "https://github.com/python-poetry/poetry.git"})) assert dependency.groups == frozenset(["main"])
def test_create_dependency_marker_variants(constraint: dict[str, Any], exp_python: str, exp_marker: str) -> None: constraint["version"] = "1.0.0" dep = Factory.create_dependency("foo", constraint) assert dep.python_versions == exp_python assert dep.python_constraint == parse_constraint(exp_python) assert str(dep.marker) == exp_marker
def test_package_add_dependency_vcs_groups(groups: list[str], f: Factory) -> None: package = Package("foo", "0.1.0") dependency = package.add_dependency( f.create_dependency( "poetry", {"git": "https://github.com/python-poetry/poetry.git"}, groups=groups, )) assert dependency.groups == frozenset(groups)
def test_package_url_groups_optional(groups: list[str], optional: bool, f: Factory) -> None: package = Package("foo", "0.1.0") dependency = package.add_dependency( f.create_dependency( "poetry", { "url": "https://github.com/python-poetry/poetry/releases/download/1.0.5/poetry-1.0.5-linux.tar.gz", "optional": optional, }, groups=groups, )) assert dependency.groups == frozenset(groups) assert dependency.is_optional() == optional