Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog/14793.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Raise a clean :class:`~_pytest.config.UsageError` when explicit ``-c`` or ``--config-file`` paths do not exist or have unparsable configurations.
11 changes: 7 additions & 4 deletions src/_pytest/config/findpaths.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,13 @@ class ConfigValue:


def _parse_ini_config(path: Path) -> iniconfig.IniConfig:
"""Parse the given generic '.ini' file using legacy IniConfig parser, returning
the parsed object.
"""Parse an ini file.

Raise UsageError if the file cannot be parsed.
"""
try:
return iniconfig.IniConfig(str(path))
except iniconfig.ParseError as exc:
except (FileNotFoundError, iniconfig.ParseError) as exc:
raise UsageError(str(exc)) from exc


Expand Down Expand Up @@ -313,8 +312,12 @@ def determine_setup(

if inifile:
inipath_ = absolutepath(inifile)
if not inipath_.is_file():
raise UsageError(f"Config file not found: {inipath_}")
inipath: Path | None = inipath_
inicfg = load_config_dict_from_file(inipath_) or {}
inicfg = load_config_dict_from_file(inipath_)
if inicfg is None:
raise UsageError(f"Unrecognized or invalid config file: {inipath_}")
if rootdir_cmd_arg is None:
rootdir = inipath_.parent
else:
Expand Down
Loading