From 8c14c12df8c9e260a508e462a196bb2c580717f7 Mon Sep 17 00:00:00 2001 From: Brian Helba Date: Tue, 26 Oct 2021 22:48:37 -0400 Subject: [PATCH] Place global "use_pathlib" option directly on "PathValue" Also, add an associated test. --- configurations/values.py | 5 +++-- tests/test_values.py | 13 ++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/configurations/values.py b/configurations/values.py index db4c38e..cf53cd9 100644 --- a/configurations/values.py +++ b/configurations/values.py @@ -29,7 +29,6 @@ class Value: multiple = False late_binding = False environ_required = False - use_pathlib = False @property def value(self): @@ -391,9 +390,11 @@ class RegexValue(ValidationMixin, Value): class PathValue(Value): + use_pathlib = False + def __init__(self, *args, **kwargs): self.check_exists = kwargs.pop('check_exists', True) - self.use_pathlib = kwargs.pop('use_pathlib', self.use_pathlib) + self.use_pathlib = kwargs.pop('use_pathlib', PathValue.use_pathlib) super().__init__(*args, **kwargs) def setup(self, name): diff --git a/tests/test_values.py b/tests/test_values.py index 3d2f44a..6f29631 100644 --- a/tests/test_values.py +++ b/tests/test_values.py @@ -354,7 +354,7 @@ class ValueTests(TestCase): with env(DJANGO_TEST='/does/not/exist'): self.assertEqual(value.setup('TEST'), '/does/not/exist') - def test_path_values_with_pathlib(self): + def test_path_values_use_pathlib(self): value = PathValue(use_pathlib=True) with env(DJANGO_TEST='/'): self.assertEqual(value.setup('TEST'), Path('/')) @@ -363,6 +363,17 @@ class ValueTests(TestCase): with env(DJANGO_TEST='/does/not/exist'): self.assertRaises(ValueError, value.setup, 'TEST') + def test_path_values_use_pathlib_global(self): + PathValue.use_pathlib = True + try: + value = PathValue() + self.assertTrue(value.use_pathlib) + with env(DJANGO_TEST='/'): + self.assertEqual(value.setup('TEST'), Path('/')) + finally: + # Reset global state + PathValue.use_pathlib = False + def test_secret_value(self): # no default allowed, only environment values are self.assertRaises(ValueError, SecretValue, 'default')