Skip to content

Commit

Permalink
Add more test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
q0w committed Mar 31, 2023
1 parent 13459a8 commit 1dd2328
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 30 deletions.
12 changes: 4 additions & 8 deletions src/pip/_internal/cli/req_command.py
Expand Up @@ -10,7 +10,7 @@
import sys
from functools import partial
from optparse import Values
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
from typing import TYPE_CHECKING, Any, List, Optional, Tuple

from pip._internal.cache import WheelCache
from pip._internal.cli import cmdoptions
Expand Down Expand Up @@ -441,13 +441,9 @@ def get_requirements(
else None
)
cli_config_settings = getattr(options, "config_settings", None)
config_settings: Optional[Dict[str, Union[str, List[str]]]]
if req_config_settings and cli_config_settings:
config_settings = merge_config_settings(
req_config_settings, cli_config_settings
)
else:
config_settings = req_config_settings or cli_config_settings
config_settings = merge_config_settings(
req_config_settings, cli_config_settings
)
req_to_add = install_req_from_parsed_requirement(
parsed_req,
isolated=options.isolated_mode,
Expand Down
8 changes: 5 additions & 3 deletions src/pip/_internal/utils/misc.py
Expand Up @@ -27,7 +27,6 @@
Iterable,
Iterator,
List,
Mapping,
Optional,
TextIO,
Tuple,
Expand Down Expand Up @@ -733,9 +732,12 @@ def prepare_metadata_for_build_editable(


def merge_config_settings(
reqs_settings: Mapping[str, Union[str, List[str]]],
cli_settings: Mapping[str, Union[str, List[str]]],
reqs_settings: Optional[Dict[str, Union[str, List[str]]]],
cli_settings: Optional[Dict[str, Union[str, List[str]]]],
) -> Dict[str, Union[str, List[str]]]:
if not reqs_settings or not cli_settings:
return reqs_settings or cli_settings

dd: Dict[str, Union[str, List[str]]] = {}
for d in (reqs_settings, cli_settings):
for k, v in d.items():
Expand Down
38 changes: 19 additions & 19 deletions tests/unit/test_utils_misc.py
@@ -1,25 +1,25 @@
from typing import Dict, List, Union

import pytest

from pip._internal.utils.misc import merge_config_settings


def test_merge_config_settings() -> None:
reqs: Dict[str, Union[str, List[str]]] = {
"foo": "bar",
"bar": "foo",
"foobar": ["bar"],
"baz": ["foo"],
}
cli: Dict[str, Union[str, List[str]]] = {
"foo": ["baz"],
"bar": "bar",
"foobar": ["baz"],
"baz": "bar",
}
expected = {
"foo": ["bar", "baz"],
"bar": ["foo", "bar"],
"foobar": ["bar", "baz"],
"baz": ["foo", "bar"],
}
@pytest.mark.parametrize(
"reqs, cli, expected",
[
({"foo": "bar"}, {"foo": ["baz"]}, {"foo": ["bar", "baz"]}),
({"foo": "bar"}, {"foo": "baz"}, {"foo": ["bar", "baz"]}),
({"foo": ["bar"]}, {"foo": ["baz"]}, {"foo": ["bar", "baz"]}),
({"foo": ["bar"]}, {"foo": "baz"}, {"foo": ["bar", "baz"]}),
({"foo": "bar"}, {"foo": ["baz"]}, {"foo": ["bar", "baz"]}),
({"foo": "bar"}, {}, {"foo": "bar"}),
({}, {"foo": ["bar"]}, {"foo": ["bar"]}),
],
)
def test_merge_config_settings(
reqs: Dict[str, Union[str, List[str]]],
cli: Dict[str, Union[str, List[str]]],
expected: Dict[str, Union[str, List[str]]],
) -> None:
assert merge_config_settings(reqs, cli) == expected

0 comments on commit 1dd2328

Please sign in to comment.