diff --git a/beeref/config/settings.py b/beeref/config/settings.py index 92d50be..9f9e73f 100644 --- a/beeref/config/settings.py +++ b/beeref/config/settings.py @@ -80,18 +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: - # Do not parse any flags from sys.argv as we are - # being used as a module. - self._args = parser.parse_args([]) + 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': diff --git a/tests/config/test_settings.py b/tests/config/test_settings.py index 54046b7..29cf691 100644 --- a/tests/config/test_settings.py +++ b/tests/config/test_settings.py @@ -19,10 +19,12 @@ 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_with() args3 = CommandlineArgs() assert parse_mock.call_count == 2 - assert args1 is not args2 + assert args1 is args2 assert args2 is args3 CommandlineArgs._instance = None