This commit is contained in:
DarkDefender 2024-09-26 17:13:05 +00:00 committed by GitHub
commit ba0e20ce6d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 8 deletions

View file

@ -35,6 +35,8 @@ Fixed
crashes (by DarkDefender)
* Fixed a crash when pressing the crop shortcut while dragging an image
(by DarkDefender)
* Fix commandline arguments meant for pytest being parsed by BeeRef
(by DarkDefender)
Changed

View file

@ -80,16 +80,17 @@ class CommandlineArgs:
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance or kwargs.get('with_check'):
if not cls._instance:
cls._instance = super().__new__(cls)
return cls._instance
def __init__(self, with_check=False):
if not hasattr(self, '_args'):
if with_check:
self._args = parser.parse_args()
else:
self._args = parser.parse_known_args()[0]
if with_check:
self._args = parser.parse_args()
elif not hasattr(self, '_args'):
# Do not parse any flags from sys.argv unless speficially
# told to do so.
self._args = parser.parse_args([])
def __getattribute__(self, name):
if name == '_args':

View file

@ -19,9 +19,13 @@ def test_command_line_args_singleton():
@patch('beeref.config.settings.parser.parse_args')
def test_command_line_args_with_check_forces_new_parsing(parse_mock):
args1 = CommandlineArgs()
parse_mock.assert_called_with([])
args2 = CommandlineArgs(with_check=True)
parse_mock.assert_called_once()
assert args1 is not args2
parse_mock.assert_called_with()
args3 = CommandlineArgs()
assert parse_mock.call_count == 2
assert args1 is args2
assert args2 is args3
CommandlineArgs._instance = None