mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
install report: add suport for stdout output
This commit is contained in:
parent
d32a62b3df
commit
7fdff17543
|
@ -4,6 +4,7 @@ import operator
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import site
|
import site
|
||||||
|
import sys
|
||||||
from optparse import SUPPRESS_HELP, Values
|
from optparse import SUPPRESS_HELP, Values
|
||||||
from typing import Iterable, List, Optional
|
from typing import Iterable, List, Optional
|
||||||
|
|
||||||
|
@ -261,7 +262,8 @@ class InstallCommand(RequirementCommand):
|
||||||
"Generate a JSON file describing what pip did to install "
|
"Generate a JSON file describing what pip did to install "
|
||||||
"the provided requirements. "
|
"the provided requirements. "
|
||||||
"Can be used in combination with --dry-run and --ignore-installed "
|
"Can be used in combination with --dry-run and --ignore-installed "
|
||||||
"to 'resolve' the requirements."
|
"to 'resolve' the requirements. "
|
||||||
|
"When - is used as file name it writes to stdout."
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -370,8 +372,11 @@ class InstallCommand(RequirementCommand):
|
||||||
|
|
||||||
if options.json_report_file:
|
if options.json_report_file:
|
||||||
report = InstallationReport(requirement_set.requirements_to_install)
|
report = InstallationReport(requirement_set.requirements_to_install)
|
||||||
|
if options.json_report_file == "-":
|
||||||
|
json.dump(report.to_dict(), sys.stdout, indent=2, ensure_ascii=True)
|
||||||
|
else:
|
||||||
with open(options.json_report_file, "w", encoding="utf-8") as f:
|
with open(options.json_report_file, "w", encoding="utf-8") as f:
|
||||||
json.dump(report.to_dict(), f)
|
json.dump(report.to_dict(), f, indent=2, ensure_ascii=False)
|
||||||
|
|
||||||
if options.dry_run:
|
if options.dry_run:
|
||||||
would_install_items = sorted(
|
would_install_items = sorted(
|
||||||
|
|
|
@ -175,3 +175,24 @@ def test_install_report_vcs_editable(
|
||||||
"/src/pip-test-package"
|
"/src/pip-test-package"
|
||||||
)
|
)
|
||||||
assert pip_test_package_report["download_info"]["dir_info"]["editable"] is True
|
assert pip_test_package_report["download_info"]["dir_info"]["editable"] is True
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures("with_wheel")
|
||||||
|
def test_install_report_to_stdout(
|
||||||
|
script: PipTestEnvironment, shared_data: TestData
|
||||||
|
) -> None:
|
||||||
|
result = script.pip(
|
||||||
|
"install",
|
||||||
|
"simplewheel",
|
||||||
|
"--quiet",
|
||||||
|
"--dry-run",
|
||||||
|
"--no-index",
|
||||||
|
"--find-links",
|
||||||
|
str(shared_data.root / "packages/"),
|
||||||
|
"--report",
|
||||||
|
"-",
|
||||||
|
)
|
||||||
|
assert not result.stderr
|
||||||
|
report = json.loads(result.stdout)
|
||||||
|
assert "install" in report
|
||||||
|
assert len(report["install"]) == 1
|
||||||
|
|
Loading…
Reference in a new issue