mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
Adapt tests
This commit is contained in:
parent
3662f5e0df
commit
c8c88ce520
13 changed files with 126 additions and 113 deletions
|
@ -86,7 +86,7 @@ def pytest_addoption(parser: Parser) -> None:
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def pytest_collection_modifyitems(config: Config, items: List[pytest.Item]) -> None:
|
def pytest_collection_modifyitems(config: Config, items: List[pytest.Function]) -> None:
|
||||||
for item in items:
|
for item in items:
|
||||||
if not hasattr(item, "module"): # e.g.: DoctestTextfile
|
if not hasattr(item, "module"): # e.g.: DoctestTextfile
|
||||||
continue
|
continue
|
||||||
|
@ -112,8 +112,7 @@ def pytest_collection_modifyitems(config: Config, items: List[pytest.Item]) -> N
|
||||||
if item.get_closest_marker("incompatible_with_sysconfig") and _USE_SYSCONFIG:
|
if item.get_closest_marker("incompatible_with_sysconfig") and _USE_SYSCONFIG:
|
||||||
item.add_marker(pytest.mark.skip("Incompatible with sysconfig"))
|
item.add_marker(pytest.mark.skip("Incompatible with sysconfig"))
|
||||||
|
|
||||||
# "Item" has no attribute "module"
|
module_file = item.module.__file__
|
||||||
module_file = item.module.__file__ # type: ignore[attr-defined]
|
|
||||||
module_path = os.path.relpath(
|
module_path = os.path.relpath(
|
||||||
module_file, os.path.commonprefix([__file__, module_file])
|
module_file, os.path.commonprefix([__file__, module_file])
|
||||||
)
|
)
|
||||||
|
@ -130,7 +129,7 @@ def pytest_collection_modifyitems(config: Config, items: List[pytest.Item]) -> N
|
||||||
|
|
||||||
# We don't want to allow using the script resource if this is a
|
# We don't want to allow using the script resource if this is a
|
||||||
# unit test, as unit tests should not need all that heavy lifting
|
# unit test, as unit tests should not need all that heavy lifting
|
||||||
if set(getattr(item, "funcargnames", [])) & {"script"}:
|
if "script" in item.fixturenames:
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
"Cannot use the ``script`` funcarg in a unit test: "
|
"Cannot use the ``script`` funcarg in a unit test: "
|
||||||
"(filename = {}, item = {})".format(module_path, item)
|
"(filename = {}, item = {})".format(module_path, item)
|
||||||
|
|
|
@ -174,7 +174,7 @@ def test_freeze_editable_not_vcs(script: PipTestEnvironment) -> None:
|
||||||
"""
|
"""
|
||||||
Test an editable install that is not version controlled.
|
Test an editable install that is not version controlled.
|
||||||
"""
|
"""
|
||||||
pkg_path = _create_test_package(script)
|
pkg_path = _create_test_package(script.scratch_path)
|
||||||
# Rename the .git directory so the directory is no longer recognized
|
# Rename the .git directory so the directory is no longer recognized
|
||||||
# as a VCS directory.
|
# as a VCS directory.
|
||||||
os.rename(os.path.join(pkg_path, ".git"), os.path.join(pkg_path, ".bak"))
|
os.rename(os.path.join(pkg_path, ".git"), os.path.join(pkg_path, ".bak"))
|
||||||
|
@ -201,7 +201,7 @@ def test_freeze_editable_git_with_no_remote(
|
||||||
"""
|
"""
|
||||||
Test an editable Git install with no remote url.
|
Test an editable Git install with no remote url.
|
||||||
"""
|
"""
|
||||||
pkg_path = _create_test_package(script)
|
pkg_path = _create_test_package(script.scratch_path)
|
||||||
script.pip("install", "-e", pkg_path)
|
script.pip("install", "-e", pkg_path)
|
||||||
result = script.pip("freeze")
|
result = script.pip("freeze")
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@ def test_freeze_editable_git_with_no_remote(
|
||||||
def test_freeze_svn(script: PipTestEnvironment) -> None:
|
def test_freeze_svn(script: PipTestEnvironment) -> None:
|
||||||
"""Test freezing a svn checkout"""
|
"""Test freezing a svn checkout"""
|
||||||
|
|
||||||
checkout_path = _create_test_package(script, vcs="svn")
|
checkout_path = _create_test_package(script.scratch_path, vcs="svn")
|
||||||
|
|
||||||
# Install with develop
|
# Install with develop
|
||||||
script.run("python", "setup.py", "develop", cwd=checkout_path, expect_stderr=True)
|
script.run("python", "setup.py", "develop", cwd=checkout_path, expect_stderr=True)
|
||||||
|
@ -250,7 +250,7 @@ def test_freeze_exclude_editable(script: PipTestEnvironment) -> None:
|
||||||
Test excluding editable from freezing list.
|
Test excluding editable from freezing list.
|
||||||
"""
|
"""
|
||||||
# Returns path to a generated package called "version_pkg"
|
# Returns path to a generated package called "version_pkg"
|
||||||
pkg_version = _create_test_package(script)
|
pkg_version = _create_test_package(script.scratch_path)
|
||||||
|
|
||||||
result = script.run(
|
result = script.run(
|
||||||
"git",
|
"git",
|
||||||
|
@ -283,7 +283,7 @@ def test_freeze_git_clone(script: PipTestEnvironment) -> None:
|
||||||
Test freezing a Git clone.
|
Test freezing a Git clone.
|
||||||
"""
|
"""
|
||||||
# Returns path to a generated package called "version_pkg"
|
# Returns path to a generated package called "version_pkg"
|
||||||
pkg_version = _create_test_package(script)
|
pkg_version = _create_test_package(script.scratch_path)
|
||||||
|
|
||||||
result = script.run(
|
result = script.run(
|
||||||
"git",
|
"git",
|
||||||
|
@ -343,7 +343,7 @@ def test_freeze_git_clone_srcdir(script: PipTestEnvironment) -> None:
|
||||||
relative to setup.py.
|
relative to setup.py.
|
||||||
"""
|
"""
|
||||||
# Returns path to a generated package called "version_pkg"
|
# Returns path to a generated package called "version_pkg"
|
||||||
pkg_version = _create_test_package_with_srcdir(script)
|
pkg_version = _create_test_package_with_srcdir(script.scratch_path)
|
||||||
|
|
||||||
result = script.run(
|
result = script.run(
|
||||||
"git",
|
"git",
|
||||||
|
@ -378,7 +378,7 @@ def test_freeze_mercurial_clone_srcdir(script: PipTestEnvironment) -> None:
|
||||||
relative to setup.py.
|
relative to setup.py.
|
||||||
"""
|
"""
|
||||||
# Returns path to a generated package called "version_pkg"
|
# Returns path to a generated package called "version_pkg"
|
||||||
pkg_version = _create_test_package_with_srcdir(script, vcs="hg")
|
pkg_version = _create_test_package_with_srcdir(script.scratch_path, vcs="hg")
|
||||||
|
|
||||||
result = script.run("hg", "clone", os.fspath(pkg_version), "pip-test-package")
|
result = script.run("hg", "clone", os.fspath(pkg_version), "pip-test-package")
|
||||||
repo_dir = script.scratch_path / "pip-test-package"
|
repo_dir = script.scratch_path / "pip-test-package"
|
||||||
|
@ -399,7 +399,7 @@ def test_freeze_git_remote(script: PipTestEnvironment) -> None:
|
||||||
Test freezing a Git clone.
|
Test freezing a Git clone.
|
||||||
"""
|
"""
|
||||||
# Returns path to a generated package called "version_pkg"
|
# Returns path to a generated package called "version_pkg"
|
||||||
pkg_version = _create_test_package(script)
|
pkg_version = _create_test_package(script.scratch_path)
|
||||||
|
|
||||||
result = script.run(
|
result = script.run(
|
||||||
"git",
|
"git",
|
||||||
|
@ -483,7 +483,7 @@ def test_freeze_mercurial_clone(script: PipTestEnvironment) -> None:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
# Returns path to a generated package called "version_pkg"
|
# Returns path to a generated package called "version_pkg"
|
||||||
pkg_version = _create_test_package(script, vcs="hg")
|
pkg_version = _create_test_package(script.scratch_path, vcs="hg")
|
||||||
|
|
||||||
result = script.run(
|
result = script.run(
|
||||||
"hg",
|
"hg",
|
||||||
|
@ -517,7 +517,7 @@ def test_freeze_bazaar_clone(script: PipTestEnvironment) -> None:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
checkout_path = _create_test_package(script, vcs="bazaar")
|
checkout_path = _create_test_package(script.scratch_path, vcs="bazaar")
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
pytest.fail(f"Invoking `bzr` failed: {e}")
|
pytest.fail(f"Invoking `bzr` failed: {e}")
|
||||||
|
|
||||||
|
@ -549,7 +549,7 @@ def test_freeze_nested_vcs(
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test VCS can be correctly freezed when resides inside another VCS repo."""
|
"""Test VCS can be correctly freezed when resides inside another VCS repo."""
|
||||||
# Create Python package.
|
# Create Python package.
|
||||||
pkg_path = _create_test_package(script, vcs=inner_vcs)
|
pkg_path = _create_test_package(script.scratch_path, vcs=inner_vcs)
|
||||||
|
|
||||||
# Create outer repo to clone into.
|
# Create outer repo to clone into.
|
||||||
root_path = script.scratch_path.joinpath("test_freeze_nested_vcs")
|
root_path = script.scratch_path.joinpath("test_freeze_nested_vcs")
|
||||||
|
@ -1011,7 +1011,7 @@ def test_freeze_pep610_editable(script: PipTestEnvironment) -> None:
|
||||||
Test that a package installed with a direct_url.json with editable=true
|
Test that a package installed with a direct_url.json with editable=true
|
||||||
is correctly frozeon as editable.
|
is correctly frozeon as editable.
|
||||||
"""
|
"""
|
||||||
pkg_path = _create_test_package(script, name="testpkg")
|
pkg_path = _create_test_package(script.scratch_path, name="testpkg")
|
||||||
result = script.pip("install", pkg_path)
|
result = script.pip("install", pkg_path)
|
||||||
direct_url_path = get_created_direct_url_path(result, "testpkg")
|
direct_url_path = get_created_direct_url_path(result, "testpkg")
|
||||||
assert direct_url_path
|
assert direct_url_path
|
||||||
|
|
|
@ -345,15 +345,15 @@ def test_basic_install_editable_from_svn(script: PipTestEnvironment) -> None:
|
||||||
"""
|
"""
|
||||||
Test checking out from svn.
|
Test checking out from svn.
|
||||||
"""
|
"""
|
||||||
checkout_path = _create_test_package(script)
|
checkout_path = _create_test_package(script.scratch_path)
|
||||||
repo_url = _create_svn_repo(script, checkout_path)
|
repo_url = _create_svn_repo(script.scratch_path, checkout_path)
|
||||||
result = script.pip("install", "-e", "svn+" + repo_url + "#egg=version-pkg")
|
result = script.pip("install", "-e", "svn+" + repo_url + "#egg=version-pkg")
|
||||||
result.assert_installed("version-pkg", with_files=[".svn"])
|
result.assert_installed("version-pkg", with_files=[".svn"])
|
||||||
|
|
||||||
|
|
||||||
def _test_install_editable_from_git(script: PipTestEnvironment) -> None:
|
def _test_install_editable_from_git(script: PipTestEnvironment) -> None:
|
||||||
"""Test cloning from Git."""
|
"""Test cloning from Git."""
|
||||||
pkg_path = _create_test_package(script, name="testpackage", vcs="git")
|
pkg_path = _create_test_package(script.scratch_path, name="testpackage", vcs="git")
|
||||||
args = [
|
args = [
|
||||||
"install",
|
"install",
|
||||||
"-e",
|
"-e",
|
||||||
|
@ -433,7 +433,7 @@ def test_install_editable_uninstalls_existing_from_path(
|
||||||
@need_mercurial
|
@need_mercurial
|
||||||
def test_basic_install_editable_from_hg(script: PipTestEnvironment) -> None:
|
def test_basic_install_editable_from_hg(script: PipTestEnvironment) -> None:
|
||||||
"""Test cloning and hg+file install from Mercurial."""
|
"""Test cloning and hg+file install from Mercurial."""
|
||||||
pkg_path = _create_test_package(script, name="testpackage", vcs="hg")
|
pkg_path = _create_test_package(script.scratch_path, name="testpackage", vcs="hg")
|
||||||
url = f"hg+{pkg_path.as_uri()}#egg=testpackage"
|
url = f"hg+{pkg_path.as_uri()}#egg=testpackage"
|
||||||
assert url.startswith("hg+file")
|
assert url.startswith("hg+file")
|
||||||
args = ["install", "-e", url]
|
args = ["install", "-e", url]
|
||||||
|
@ -446,7 +446,7 @@ def test_vcs_url_final_slash_normalization(script: PipTestEnvironment) -> None:
|
||||||
"""
|
"""
|
||||||
Test that presence or absence of final slash in VCS URL is normalized.
|
Test that presence or absence of final slash in VCS URL is normalized.
|
||||||
"""
|
"""
|
||||||
pkg_path = _create_test_package(script, name="testpackage", vcs="hg")
|
pkg_path = _create_test_package(script.scratch_path, name="testpackage", vcs="hg")
|
||||||
args = [
|
args = [
|
||||||
"install",
|
"install",
|
||||||
"-e",
|
"-e",
|
||||||
|
@ -459,7 +459,9 @@ def test_vcs_url_final_slash_normalization(script: PipTestEnvironment) -> None:
|
||||||
@need_bzr
|
@need_bzr
|
||||||
def test_install_editable_from_bazaar(script: PipTestEnvironment) -> None:
|
def test_install_editable_from_bazaar(script: PipTestEnvironment) -> None:
|
||||||
"""Test checking out from Bazaar."""
|
"""Test checking out from Bazaar."""
|
||||||
pkg_path = _create_test_package(script, name="testpackage", vcs="bazaar")
|
pkg_path = _create_test_package(
|
||||||
|
script.scratch_path, name="testpackage", vcs="bazaar"
|
||||||
|
)
|
||||||
args = [
|
args = [
|
||||||
"install",
|
"install",
|
||||||
"-e",
|
"-e",
|
||||||
|
|
|
@ -13,7 +13,7 @@ def test_install_find_links_no_direct_url(script: PipTestEnvironment) -> None:
|
||||||
|
|
||||||
@pytest.mark.usefixtures("with_wheel")
|
@pytest.mark.usefixtures("with_wheel")
|
||||||
def test_install_vcs_editable_no_direct_url(script: PipTestEnvironment) -> None:
|
def test_install_vcs_editable_no_direct_url(script: PipTestEnvironment) -> None:
|
||||||
pkg_path = _create_test_package(script, name="testpkg")
|
pkg_path = _create_test_package(script.scratch_path, name="testpkg")
|
||||||
args = ["install", "-e", f"git+{pkg_path.as_uri()}#egg=testpkg"]
|
args = ["install", "-e", f"git+{pkg_path.as_uri()}#egg=testpkg"]
|
||||||
result = script.pip(*args)
|
result = script.pip(*args)
|
||||||
# legacy editable installs do not generate .dist-info,
|
# legacy editable installs do not generate .dist-info,
|
||||||
|
@ -23,7 +23,7 @@ def test_install_vcs_editable_no_direct_url(script: PipTestEnvironment) -> None:
|
||||||
|
|
||||||
@pytest.mark.usefixtures("with_wheel")
|
@pytest.mark.usefixtures("with_wheel")
|
||||||
def test_install_vcs_non_editable_direct_url(script: PipTestEnvironment) -> None:
|
def test_install_vcs_non_editable_direct_url(script: PipTestEnvironment) -> None:
|
||||||
pkg_path = _create_test_package(script, name="testpkg")
|
pkg_path = _create_test_package(script.scratch_path, name="testpkg")
|
||||||
url = pkg_path.as_uri()
|
url = pkg_path.as_uri()
|
||||||
args = ["install", f"git+{url}#egg=testpkg"]
|
args = ["install", f"git+{url}#egg=testpkg"]
|
||||||
result = script.pip(*args)
|
result = script.pip(*args)
|
||||||
|
@ -57,7 +57,7 @@ def test_install_vcs_constraint_direct_url(script: PipTestEnvironment) -> None:
|
||||||
|
|
||||||
@pytest.mark.usefixtures("with_wheel")
|
@pytest.mark.usefixtures("with_wheel")
|
||||||
def test_install_vcs_constraint_direct_file_url(script: PipTestEnvironment) -> None:
|
def test_install_vcs_constraint_direct_file_url(script: PipTestEnvironment) -> None:
|
||||||
pkg_path = _create_test_package(script, name="testpkg")
|
pkg_path = _create_test_package(script.scratch_path, name="testpkg")
|
||||||
url = pkg_path.as_uri()
|
url = pkg_path.as_uri()
|
||||||
constraints_file = script.scratch_path / "constraints.txt"
|
constraints_file = script.scratch_path / "constraints.txt"
|
||||||
constraints_file.write_text(f"git+{url}#egg=testpkg")
|
constraints_file.write_text(f"git+{url}#egg=testpkg")
|
||||||
|
|
|
@ -145,7 +145,7 @@ def test_git_install_again_after_changes(script: PipTestEnvironment) -> None:
|
||||||
logged on the update: "Did not find branch or tag ..., assuming ref or
|
logged on the update: "Did not find branch or tag ..., assuming ref or
|
||||||
revision."
|
revision."
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
version = _install_version_pkg(script, version_pkg_path)
|
version = _install_version_pkg(script, version_pkg_path)
|
||||||
assert version == "0.1"
|
assert version == "0.1"
|
||||||
|
|
||||||
|
@ -161,7 +161,7 @@ def test_git_install_branch_again_after_branch_changes(
|
||||||
Test installing a branch again after the branch is updated in the remote
|
Test installing a branch again after the branch is updated in the remote
|
||||||
repository.
|
repository.
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
version = _install_version_pkg(script, version_pkg_path, rev="master")
|
version = _install_version_pkg(script, version_pkg_path, rev="master")
|
||||||
assert version == "0.1"
|
assert version == "0.1"
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ def test_git_with_sha1_revisions(script: PipTestEnvironment) -> None:
|
||||||
"""
|
"""
|
||||||
Git backend should be able to install from SHA1 revisions
|
Git backend should be able to install from SHA1 revisions
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
_change_test_package_version(script, version_pkg_path)
|
_change_test_package_version(script, version_pkg_path)
|
||||||
sha1 = script.run(
|
sha1 = script.run(
|
||||||
"git",
|
"git",
|
||||||
|
@ -219,7 +219,7 @@ def test_git_with_short_sha1_revisions(script: PipTestEnvironment) -> None:
|
||||||
"""
|
"""
|
||||||
Git backend should be able to install from SHA1 revisions
|
Git backend should be able to install from SHA1 revisions
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
_change_test_package_version(script, version_pkg_path)
|
_change_test_package_version(script, version_pkg_path)
|
||||||
sha1 = script.run(
|
sha1 = script.run(
|
||||||
"git",
|
"git",
|
||||||
|
@ -235,7 +235,7 @@ def test_git_with_branch_name_as_revision(script: PipTestEnvironment) -> None:
|
||||||
"""
|
"""
|
||||||
Git backend should be able to install from branch names
|
Git backend should be able to install from branch names
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
branch = "test_branch"
|
branch = "test_branch"
|
||||||
script.run("git", "checkout", "-b", branch, cwd=version_pkg_path)
|
script.run("git", "checkout", "-b", branch, cwd=version_pkg_path)
|
||||||
_change_test_package_version(script, version_pkg_path)
|
_change_test_package_version(script, version_pkg_path)
|
||||||
|
@ -247,7 +247,7 @@ def test_git_with_tag_name_as_revision(script: PipTestEnvironment) -> None:
|
||||||
"""
|
"""
|
||||||
Git backend should be able to install from tag names
|
Git backend should be able to install from tag names
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
script.run("git", "tag", "test_tag", cwd=version_pkg_path)
|
script.run("git", "tag", "test_tag", cwd=version_pkg_path)
|
||||||
_change_test_package_version(script, version_pkg_path)
|
_change_test_package_version(script, version_pkg_path)
|
||||||
version = _install_version_pkg(script, version_pkg_path, rev="test_tag")
|
version = _install_version_pkg(script, version_pkg_path, rev="test_tag")
|
||||||
|
@ -265,7 +265,7 @@ def test_git_install_ref(script: PipTestEnvironment) -> None:
|
||||||
"""
|
"""
|
||||||
The Git backend should be able to install a ref with the first install.
|
The Git backend should be able to install a ref with the first install.
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
_add_ref(script, version_pkg_path, "refs/foo/bar")
|
_add_ref(script, version_pkg_path, "refs/foo/bar")
|
||||||
_change_test_package_version(script, version_pkg_path)
|
_change_test_package_version(script, version_pkg_path)
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ def test_git_install_then_install_ref(script: PipTestEnvironment) -> None:
|
||||||
The Git backend should be able to install a ref after a package has
|
The Git backend should be able to install a ref after a package has
|
||||||
already been installed.
|
already been installed.
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
_add_ref(script, version_pkg_path, "refs/foo/bar")
|
_add_ref(script, version_pkg_path, "refs/foo/bar")
|
||||||
_change_test_package_version(script, version_pkg_path)
|
_change_test_package_version(script, version_pkg_path)
|
||||||
|
|
||||||
|
@ -431,7 +431,7 @@ def test_git_with_ambiguous_revs(script: PipTestEnvironment) -> None:
|
||||||
"""
|
"""
|
||||||
Test git with two "names" (tag/branch) pointing to the same commit
|
Test git with two "names" (tag/branch) pointing to the same commit
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
version_pkg_url = _make_version_pkg_url(version_pkg_path, rev="0.1")
|
version_pkg_url = _make_version_pkg_url(version_pkg_path, rev="0.1")
|
||||||
script.run("git", "tag", "0.1", cwd=version_pkg_path)
|
script.run("git", "tag", "0.1", cwd=version_pkg_path)
|
||||||
result = script.pip("install", "-e", version_pkg_url)
|
result = script.pip("install", "-e", version_pkg_url)
|
||||||
|
@ -445,7 +445,7 @@ def test_editable__no_revision(script: PipTestEnvironment) -> None:
|
||||||
"""
|
"""
|
||||||
Test a basic install in editable mode specifying no revision.
|
Test a basic install in editable mode specifying no revision.
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
_install_version_pkg_only(script, version_pkg_path)
|
_install_version_pkg_only(script, version_pkg_path)
|
||||||
|
|
||||||
branch = _get_editable_branch(script, "version-pkg")
|
branch = _get_editable_branch(script, "version-pkg")
|
||||||
|
@ -460,7 +460,7 @@ def test_editable__branch_with_sha_same_as_default(script: PipTestEnvironment) -
|
||||||
Test installing in editable mode a branch whose sha matches the sha
|
Test installing in editable mode a branch whose sha matches the sha
|
||||||
of the default branch, but is different from the default branch.
|
of the default branch, but is different from the default branch.
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
# Create a second branch with the same SHA.
|
# Create a second branch with the same SHA.
|
||||||
script.run("git", "branch", "develop", cwd=version_pkg_path)
|
script.run("git", "branch", "develop", cwd=version_pkg_path)
|
||||||
_install_version_pkg_only(script, version_pkg_path, rev="develop")
|
_install_version_pkg_only(script, version_pkg_path, rev="develop")
|
||||||
|
@ -479,7 +479,7 @@ def test_editable__branch_with_sha_different_from_default(
|
||||||
Test installing in editable mode a branch whose sha is different from
|
Test installing in editable mode a branch whose sha is different from
|
||||||
the sha of the default branch.
|
the sha of the default branch.
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
# Create a second branch.
|
# Create a second branch.
|
||||||
script.run("git", "branch", "develop", cwd=version_pkg_path)
|
script.run("git", "branch", "develop", cwd=version_pkg_path)
|
||||||
# Add another commit to the master branch to give it a different sha.
|
# Add another commit to the master branch to give it a different sha.
|
||||||
|
@ -500,7 +500,7 @@ def test_editable__non_master_default_branch(script: PipTestEnvironment) -> None
|
||||||
Test the branch you get after an editable install from a remote repo
|
Test the branch you get after an editable install from a remote repo
|
||||||
with a non-master default branch.
|
with a non-master default branch.
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
# Change the default branch of the remote repo to a name that is
|
# Change the default branch of the remote repo to a name that is
|
||||||
# alphabetically after "master".
|
# alphabetically after "master".
|
||||||
script.run("git", "checkout", "-b", "release", cwd=version_pkg_path)
|
script.run("git", "checkout", "-b", "release", cwd=version_pkg_path)
|
||||||
|
@ -517,7 +517,7 @@ def test_reinstalling_works_with_editable_non_master_branch(
|
||||||
Reinstalling an editable installation should not assume that the "master"
|
Reinstalling an editable installation should not assume that the "master"
|
||||||
branch exists. See https://github.com/pypa/pip/issues/4448.
|
branch exists. See https://github.com/pypa/pip/issues/4448.
|
||||||
"""
|
"""
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
|
|
||||||
# Switch the default branch to something other than 'master'
|
# Switch the default branch to something other than 'master'
|
||||||
script.run("git", "branch", "-m", "foobar", cwd=version_pkg_path)
|
script.run("git", "branch", "-m", "foobar", cwd=version_pkg_path)
|
||||||
|
@ -569,7 +569,7 @@ def test_install_git_branch_not_cached(script: PipTestEnvironment) -> None:
|
||||||
Installing git urls with a branch revision does not cause wheel caching.
|
Installing git urls with a branch revision does not cause wheel caching.
|
||||||
"""
|
"""
|
||||||
PKG = "gitbranchnotcached"
|
PKG = "gitbranchnotcached"
|
||||||
repo_dir = _create_test_package(script, name=PKG)
|
repo_dir = _create_test_package(script.scratch_path, name=PKG)
|
||||||
url = _make_version_pkg_url(repo_dir, rev="master", name=PKG)
|
url = _make_version_pkg_url(repo_dir, rev="master", name=PKG)
|
||||||
result = script.pip("install", url, "--only-binary=:all:")
|
result = script.pip("install", url, "--only-binary=:all:")
|
||||||
assert f"Successfully built {PKG}" in result.stdout, result.stdout
|
assert f"Successfully built {PKG}" in result.stdout, result.stdout
|
||||||
|
@ -585,7 +585,7 @@ def test_install_git_sha_cached(script: PipTestEnvironment) -> None:
|
||||||
Installing git urls with a sha revision does cause wheel caching.
|
Installing git urls with a sha revision does cause wheel caching.
|
||||||
"""
|
"""
|
||||||
PKG = "gitshacached"
|
PKG = "gitshacached"
|
||||||
repo_dir = _create_test_package(script, name=PKG)
|
repo_dir = _create_test_package(script.scratch_path, name=PKG)
|
||||||
commit = script.run("git", "rev-parse", "HEAD", cwd=repo_dir).stdout.strip()
|
commit = script.run("git", "rev-parse", "HEAD", cwd=repo_dir).stdout.strip()
|
||||||
url = _make_version_pkg_url(repo_dir, rev=commit, name=PKG)
|
url = _make_version_pkg_url(repo_dir, rev=commit, name=PKG)
|
||||||
result = script.pip("install", url)
|
result = script.pip("install", url)
|
||||||
|
|
|
@ -736,7 +736,7 @@ def test_list_pep610_editable(script: PipTestEnvironment) -> None:
|
||||||
Test that a package installed with a direct_url.json with editable=true
|
Test that a package installed with a direct_url.json with editable=true
|
||||||
is correctly listed as editable.
|
is correctly listed as editable.
|
||||||
"""
|
"""
|
||||||
pkg_path = _create_test_package(script, name="testpkg")
|
pkg_path = _create_test_package(script.scratch_path, name="testpkg")
|
||||||
result = script.pip("install", pkg_path)
|
result = script.pip("install", pkg_path)
|
||||||
direct_url_path = get_created_direct_url_path(result, "testpkg")
|
direct_url_path = get_created_direct_url_path(result, "testpkg")
|
||||||
assert direct_url_path
|
assert direct_url_path
|
||||||
|
|
|
@ -221,7 +221,7 @@ def test_is_commit_id_equal(script: PipTestEnvironment) -> None:
|
||||||
"""
|
"""
|
||||||
Test Git.is_commit_id_equal().
|
Test Git.is_commit_id_equal().
|
||||||
"""
|
"""
|
||||||
version_pkg_path = os.fspath(_create_test_package(script))
|
version_pkg_path = os.fspath(_create_test_package(script.scratch_path))
|
||||||
script.run("git", "branch", "branch0.1", cwd=version_pkg_path)
|
script.run("git", "branch", "branch0.1", cwd=version_pkg_path)
|
||||||
commit = script.run("git", "rev-parse", "HEAD", cwd=version_pkg_path).stdout.strip()
|
commit = script.run("git", "rev-parse", "HEAD", cwd=version_pkg_path).stdout.strip()
|
||||||
|
|
||||||
|
@ -234,7 +234,7 @@ def test_is_commit_id_equal(script: PipTestEnvironment) -> None:
|
||||||
|
|
||||||
|
|
||||||
def test_is_immutable_rev_checkout(script: PipTestEnvironment) -> None:
|
def test_is_immutable_rev_checkout(script: PipTestEnvironment) -> None:
|
||||||
version_pkg_path = os.fspath(_create_test_package(script))
|
version_pkg_path = os.fspath(_create_test_package(script.scratch_path))
|
||||||
commit = script.run("git", "rev-parse", "HEAD", cwd=version_pkg_path).stdout.strip()
|
commit = script.run("git", "rev-parse", "HEAD", cwd=version_pkg_path).stdout.strip()
|
||||||
assert Git().is_immutable_rev_checkout(
|
assert Git().is_immutable_rev_checkout(
|
||||||
"git+https://g.c/o/r@" + commit, version_pkg_path
|
"git+https://g.c/o/r@" + commit, version_pkg_path
|
||||||
|
@ -246,7 +246,7 @@ def test_is_immutable_rev_checkout(script: PipTestEnvironment) -> None:
|
||||||
|
|
||||||
|
|
||||||
def test_get_repository_root(script: PipTestEnvironment) -> None:
|
def test_get_repository_root(script: PipTestEnvironment) -> None:
|
||||||
version_pkg_path = _create_test_package(script)
|
version_pkg_path = _create_test_package(script.scratch_path)
|
||||||
tests_path = version_pkg_path.joinpath("tests")
|
tests_path = version_pkg_path.joinpath("tests")
|
||||||
tests_path.mkdir()
|
tests_path.mkdir()
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ from tests.lib import PipTestEnvironment, _create_test_package, need_mercurial
|
||||||
|
|
||||||
@need_mercurial
|
@need_mercurial
|
||||||
def test_get_repository_root(script: PipTestEnvironment) -> None:
|
def test_get_repository_root(script: PipTestEnvironment) -> None:
|
||||||
version_pkg_path = _create_test_package(script, vcs="hg")
|
version_pkg_path = _create_test_package(script.scratch_path, vcs="hg")
|
||||||
tests_path = version_pkg_path.joinpath("tests")
|
tests_path = version_pkg_path.joinpath("tests")
|
||||||
tests_path.mkdir()
|
tests_path.mkdir()
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ def test_get_remote_url__no_remote(script: PipTestEnvironment, tmpdir: Path) ->
|
||||||
repo_path.mkdir()
|
repo_path.mkdir()
|
||||||
repo_dir = str(repo_path)
|
repo_dir = str(repo_path)
|
||||||
|
|
||||||
_create_svn_repo(script, repo_dir)
|
_create_svn_repo(script.scratch_path, repo_dir)
|
||||||
|
|
||||||
with pytest.raises(RemoteNotFoundError):
|
with pytest.raises(RemoteNotFoundError):
|
||||||
Subversion().get_remote_url(repo_dir)
|
Subversion().get_remote_url(repo_dir)
|
||||||
|
@ -29,7 +29,7 @@ def test_get_remote_url__no_remote_with_setup(
|
||||||
setup.touch()
|
setup.touch()
|
||||||
repo_dir = str(repo_path)
|
repo_dir = str(repo_path)
|
||||||
|
|
||||||
_create_svn_repo(script, repo_dir)
|
_create_svn_repo(script.scratch_path, repo_dir)
|
||||||
|
|
||||||
with pytest.raises(RemoteNotFoundError):
|
with pytest.raises(RemoteNotFoundError):
|
||||||
Subversion().get_remote_url(repo_dir)
|
Subversion().get_remote_url(repo_dir)
|
||||||
|
|
|
@ -895,18 +895,21 @@ def _git_commit(
|
||||||
|
|
||||||
|
|
||||||
def _vcs_add(
|
def _vcs_add(
|
||||||
script: PipTestEnvironment,
|
location: pathlib.Path,
|
||||||
version_pkg_path: pathlib.Path,
|
version_pkg_path: pathlib.Path,
|
||||||
vcs: str = "git",
|
vcs: str = "git",
|
||||||
) -> pathlib.Path:
|
) -> pathlib.Path:
|
||||||
if vcs == "git":
|
if vcs == "git":
|
||||||
script.run("git", "init", cwd=version_pkg_path)
|
subprocess.check_call(["git", "init"], cwd=os.fspath(version_pkg_path))
|
||||||
script.run("git", "add", ".", cwd=version_pkg_path)
|
subprocess.check_call(["git", "add", "."], cwd=os.fspath(version_pkg_path))
|
||||||
_git_commit(script, version_pkg_path, message="initial version")
|
subprocess.check_call(
|
||||||
|
["git", "commit", "-m", "initial version"], cwd=os.fspath(version_pkg_path)
|
||||||
|
)
|
||||||
elif vcs == "hg":
|
elif vcs == "hg":
|
||||||
script.run("hg", "init", cwd=version_pkg_path)
|
subprocess.check_call(["hg", "init"], cwd=os.fspath(version_pkg_path))
|
||||||
script.run("hg", "add", ".", cwd=version_pkg_path)
|
subprocess.check_call(["hg", "add", "."], cwd=os.fspath(version_pkg_path))
|
||||||
script.run(
|
subprocess.check_call(
|
||||||
|
[
|
||||||
"hg",
|
"hg",
|
||||||
"commit",
|
"commit",
|
||||||
"-q",
|
"-q",
|
||||||
|
@ -914,23 +917,26 @@ def _vcs_add(
|
||||||
"pip <distutils-sig@python.org>",
|
"pip <distutils-sig@python.org>",
|
||||||
"-m",
|
"-m",
|
||||||
"initial version",
|
"initial version",
|
||||||
cwd=version_pkg_path,
|
],
|
||||||
|
cwd=os.fspath(version_pkg_path),
|
||||||
)
|
)
|
||||||
elif vcs == "svn":
|
elif vcs == "svn":
|
||||||
repo_url = _create_svn_repo(script, version_pkg_path)
|
repo_url = _create_svn_repo(location, version_pkg_path)
|
||||||
script.run(
|
subprocess.check_call(
|
||||||
"svn", "checkout", repo_url, "pip-test-package", cwd=script.scratch_path
|
["svn", "checkout", repo_url, "pip-test-package"], cwd=os.fspath(location)
|
||||||
)
|
)
|
||||||
checkout_path = script.scratch_path / "pip-test-package"
|
checkout_path = location / "pip-test-package"
|
||||||
|
|
||||||
version_pkg_path = checkout_path
|
version_pkg_path = checkout_path
|
||||||
elif vcs == "bazaar":
|
elif vcs == "bazaar":
|
||||||
script.run("bzr", "init", cwd=version_pkg_path)
|
subprocess.check_call(["bzr", "init"], cwd=os.fspath(version_pkg_path))
|
||||||
script.run("bzr", "add", ".", cwd=version_pkg_path)
|
subprocess.check_call(["bzr", "add", "."], cwd=os.fspath(version_pkg_path))
|
||||||
script.run(
|
subprocess.check_call(
|
||||||
"bzr", "whoami", "pip <distutils-sig@python.org>", cwd=version_pkg_path
|
["bzr", "whoami", "pip <distutils-sig@python.org>"],
|
||||||
|
cwd=os.fspath(version_pkg_path),
|
||||||
)
|
)
|
||||||
script.run(
|
subprocess.check_call(
|
||||||
|
[
|
||||||
"bzr",
|
"bzr",
|
||||||
"commit",
|
"commit",
|
||||||
"-q",
|
"-q",
|
||||||
|
@ -938,7 +944,8 @@ def _vcs_add(
|
||||||
"pip <distutils-sig@python.org>",
|
"pip <distutils-sig@python.org>",
|
||||||
"-m",
|
"-m",
|
||||||
"initial version",
|
"initial version",
|
||||||
cwd=version_pkg_path,
|
],
|
||||||
|
cwd=os.fspath(version_pkg_path),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Unknown vcs: {vcs}")
|
raise ValueError(f"Unknown vcs: {vcs}")
|
||||||
|
@ -995,10 +1002,10 @@ def _create_test_package_with_subdirectory(
|
||||||
|
|
||||||
|
|
||||||
def _create_test_package_with_srcdir(
|
def _create_test_package_with_srcdir(
|
||||||
script: PipTestEnvironment, name: str = "version_pkg", vcs: str = "git"
|
dir_path: pathlib.Path, name: str = "version_pkg", vcs: str = "git"
|
||||||
) -> pathlib.Path:
|
) -> pathlib.Path:
|
||||||
script.scratch_path.joinpath(name).mkdir()
|
dir_path.joinpath(name).mkdir()
|
||||||
version_pkg_path = script.scratch_path / name
|
version_pkg_path = dir_path / name
|
||||||
subdir_path = version_pkg_path.joinpath("subdir")
|
subdir_path = version_pkg_path.joinpath("subdir")
|
||||||
subdir_path.mkdir()
|
subdir_path.mkdir()
|
||||||
src_path = subdir_path.joinpath("src")
|
src_path = subdir_path.joinpath("src")
|
||||||
|
@ -1021,14 +1028,14 @@ def _create_test_package_with_srcdir(
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
return _vcs_add(script, version_pkg_path, vcs)
|
return _vcs_add(dir_path, version_pkg_path, vcs)
|
||||||
|
|
||||||
|
|
||||||
def _create_test_package(
|
def _create_test_package(
|
||||||
script: PipTestEnvironment, name: str = "version_pkg", vcs: str = "git"
|
dir_path: pathlib.Path, name: str = "version_pkg", vcs: str = "git"
|
||||||
) -> pathlib.Path:
|
) -> pathlib.Path:
|
||||||
script.scratch_path.joinpath(name).mkdir()
|
dir_path.joinpath(name).mkdir()
|
||||||
version_pkg_path = script.scratch_path / name
|
version_pkg_path = dir_path / name
|
||||||
_create_main_file(version_pkg_path, name=name, output="0.1")
|
_create_main_file(version_pkg_path, name=name, output="0.1")
|
||||||
version_pkg_path.joinpath("setup.py").write_text(
|
version_pkg_path.joinpath("setup.py").write_text(
|
||||||
textwrap.dedent(
|
textwrap.dedent(
|
||||||
|
@ -1046,20 +1053,24 @@ def _create_test_package(
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
return _vcs_add(script, version_pkg_path, vcs)
|
return _vcs_add(dir_path, version_pkg_path, vcs)
|
||||||
|
|
||||||
|
|
||||||
def _create_svn_repo(script: PipTestEnvironment, version_pkg_path: StrPath) -> str:
|
def _create_svn_repo(repo_path: pathlib.Path, version_pkg_path: StrPath) -> str:
|
||||||
repo_url = script.scratch_path.joinpath("pip-test-package-repo", "trunk").as_uri()
|
repo_url = repo_path.joinpath("pip-test-package-repo", "trunk").as_uri()
|
||||||
script.run("svnadmin", "create", "pip-test-package-repo", cwd=script.scratch_path)
|
subprocess.check_call(
|
||||||
script.run(
|
"svnadmin create pip-test-package-repo".split(), cwd=repo_path
|
||||||
|
)
|
||||||
|
subprocess.check_call(
|
||||||
|
[
|
||||||
"svn",
|
"svn",
|
||||||
"import",
|
"import",
|
||||||
str(version_pkg_path),
|
os.fspath(version_pkg_path),
|
||||||
repo_url,
|
repo_url,
|
||||||
"-m",
|
"-m",
|
||||||
"Initial import of pip-test-package",
|
"Initial import of pip-test-package",
|
||||||
cwd=script.scratch_path,
|
],
|
||||||
|
cwd=os.fspath(repo_path),
|
||||||
)
|
)
|
||||||
return repo_url
|
return repo_url
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import os
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
@ -8,7 +9,7 @@ from pip._internal.utils.direct_url_helpers import (
|
||||||
direct_url_as_pep440_direct_reference,
|
direct_url_as_pep440_direct_reference,
|
||||||
direct_url_from_link,
|
direct_url_from_link,
|
||||||
)
|
)
|
||||||
from tests.lib import PipTestEnvironment
|
from pip._internal.vcs.git import Git
|
||||||
|
|
||||||
|
|
||||||
def test_as_pep440_requirement_archive() -> None:
|
def test_as_pep440_requirement_archive() -> None:
|
||||||
|
@ -110,17 +111,15 @@ def test_from_link_vcs(mock_get_backend_for_scheme: mock.Mock) -> None:
|
||||||
assert direct_url.to_dict()["url"] == "https://g.c/u/p.git"
|
assert direct_url.to_dict()["url"] == "https://g.c/u/p.git"
|
||||||
|
|
||||||
|
|
||||||
def test_from_link_vcs_with_source_dir_obtains_commit_id(
|
def test_from_link_vcs_with_source_dir_obtains_commit_id(tmpdir: Path) -> None:
|
||||||
script: PipTestEnvironment, tmpdir: Path
|
|
||||||
) -> None:
|
|
||||||
repo_path = tmpdir / "test-repo"
|
repo_path = tmpdir / "test-repo"
|
||||||
repo_path.mkdir()
|
repo_path.mkdir()
|
||||||
repo_dir = str(repo_path)
|
repo_dir = os.fspath(repo_path)
|
||||||
script.run("git", "init", cwd=repo_dir)
|
Git.run_command(["init"], cwd=repo_dir)
|
||||||
(repo_path / "somefile").touch()
|
(repo_path / "somefile").touch()
|
||||||
script.run("git", "add", ".", cwd=repo_dir)
|
Git.run_command(["add", "."], cwd=repo_dir)
|
||||||
script.run("git", "commit", "-m", "commit msg", cwd=repo_dir)
|
Git.run_command(["commit", "-m", "commit msg"], cwd=repo_dir)
|
||||||
commit_id = script.run("git", "rev-parse", "HEAD", cwd=repo_dir).stdout.strip()
|
commit_id = Git.get_revision(repo_dir)
|
||||||
direct_url = direct_url_from_link(
|
direct_url = direct_url_from_link(
|
||||||
Link("git+https://g.c/u/p.git"), source_dir=repo_dir
|
Link("git+https://g.c/u/p.git"), source_dir=repo_dir
|
||||||
)
|
)
|
||||||
|
@ -129,7 +128,7 @@ def test_from_link_vcs_with_source_dir_obtains_commit_id(
|
||||||
assert direct_url.info.commit_id == commit_id
|
assert direct_url.info.commit_id == commit_id
|
||||||
|
|
||||||
|
|
||||||
def test_from_link_vcs_without_source_dir(script: PipTestEnvironment) -> None:
|
def test_from_link_vcs_without_source_dir() -> None:
|
||||||
direct_url = direct_url_from_link(
|
direct_url = direct_url_from_link(
|
||||||
Link("git+https://g.c/u/p.git@1"), link_is_in_wheel_cache=True
|
Link("git+https://g.c/u/p.git@1"), link_is_in_wheel_cache=True
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
from pathlib import Path
|
||||||
from typing import Optional, cast
|
from typing import Optional, cast
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
|
@ -9,7 +10,8 @@ from pip._internal import wheel_builder
|
||||||
from pip._internal.models.link import Link
|
from pip._internal.models.link import Link
|
||||||
from pip._internal.operations.build.wheel_legacy import format_command_result
|
from pip._internal.operations.build.wheel_legacy import format_command_result
|
||||||
from pip._internal.req.req_install import InstallRequirement
|
from pip._internal.req.req_install import InstallRequirement
|
||||||
from tests.lib import PipTestEnvironment, _create_test_package
|
from pip._internal.vcs.git import Git
|
||||||
|
from tests.lib import _create_test_package
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
|
@ -173,9 +175,9 @@ def test_should_cache(req: ReqMock, expected: bool) -> None:
|
||||||
assert wheel_builder._should_cache(cast(InstallRequirement, req)) is expected
|
assert wheel_builder._should_cache(cast(InstallRequirement, req)) is expected
|
||||||
|
|
||||||
|
|
||||||
def test_should_cache_git_sha(script: PipTestEnvironment) -> None:
|
def test_should_cache_git_sha(tmpdir: Path) -> None:
|
||||||
repo_path = os.fspath(_create_test_package(script, name="mypkg"))
|
repo_path = os.fspath(_create_test_package(tmpdir, name="mypkg"))
|
||||||
commit = script.run("git", "rev-parse", "HEAD", cwd=repo_path).stdout.strip()
|
commit = Git.get_revision(repo_path)
|
||||||
|
|
||||||
# a link referencing a sha should be cached
|
# a link referencing a sha should be cached
|
||||||
url = "git+https://g.c/o/r@" + commit + "#egg=mypkg"
|
url = "git+https://g.c/o/r@" + commit + "#egg=mypkg"
|
||||||
|
|
Loading…
Reference in a new issue