Fix borgmatic error when not finding the configuration schema for certain "pip install --editable" development installs (#687).
This commit is contained in:
parent
a60d7fd173
commit
0b397a5bf9
3 changed files with 8 additions and 4 deletions
2
NEWS
2
NEWS
|
@ -10,6 +10,8 @@
|
||||||
* #682: Fix "source_directories_must_exist" option to expand globs and tildes in source directories.
|
* #682: Fix "source_directories_must_exist" option to expand globs and tildes in source directories.
|
||||||
* #684: Rename "master" development branch to "main" to use more inclusive language. You'll need to
|
* #684: Rename "master" development branch to "main" to use more inclusive language. You'll need to
|
||||||
update your development checkouts accordingly.
|
update your development checkouts accordingly.
|
||||||
|
* #687: Fix borgmatic error when not finding the configuration schema for certain "pip install
|
||||||
|
--editable" development installs.
|
||||||
* Run "borgmatic borg" action without capturing output so interactive prompts and flags like
|
* Run "borgmatic borg" action without capturing output so interactive prompts and flags like
|
||||||
"--progress" still work.
|
"--progress" still work.
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ try:
|
||||||
except ModuleNotFoundError: # pragma: nocover
|
except ModuleNotFoundError: # pragma: nocover
|
||||||
import importlib.metadata as importlib_metadata
|
import importlib.metadata as importlib_metadata
|
||||||
|
|
||||||
|
import borgmatic.config
|
||||||
from borgmatic.config import environment, load, normalize, override
|
from borgmatic.config import environment, load, normalize, override
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,7 +26,9 @@ def schema_filename():
|
||||||
if path.match('config/schema.yaml')
|
if path.match('config/schema.yaml')
|
||||||
)
|
)
|
||||||
except StopIteration:
|
except StopIteration:
|
||||||
raise FileNotFoundError('Configuration file schema could not be found')
|
# If the schema wasn't found in the package's files, this is probably a pip editable
|
||||||
|
# install, so try a different approach to get the schema.
|
||||||
|
return os.path.join(os.path.dirname(borgmatic.config.__file__), 'schema.yaml')
|
||||||
|
|
||||||
|
|
||||||
def format_json_error_path_element(path_element):
|
def format_json_error_path_element(path_element):
|
||||||
|
|
|
@ -16,14 +16,13 @@ def test_schema_filename_finds_schema_path():
|
||||||
assert module.schema_filename() == schema_path
|
assert module.schema_filename() == schema_path
|
||||||
|
|
||||||
|
|
||||||
def test_schema_filename_with_missing_schema_path_raises():
|
def test_schema_filename_with_missing_schema_path_in_package_still_finds_it_in_config_directory():
|
||||||
flexmock(module.importlib_metadata).should_receive('files').and_return(
|
flexmock(module.importlib_metadata).should_receive('files').and_return(
|
||||||
flexmock(match=lambda path: False, locate=lambda: None),
|
flexmock(match=lambda path: False, locate=lambda: None),
|
||||||
flexmock(match=lambda path: False, locate=lambda: None),
|
flexmock(match=lambda path: False, locate=lambda: None),
|
||||||
)
|
)
|
||||||
|
|
||||||
with pytest.raises(FileNotFoundError):
|
assert module.schema_filename().endswith('/borgmatic/config/schema.yaml')
|
||||||
assert module.schema_filename()
|
|
||||||
|
|
||||||
|
|
||||||
def test_format_json_error_path_element_formats_array_index():
|
def test_format_json_error_path_element_formats_array_index():
|
||||||
|
|
Loading…
Reference in a new issue