Skip to content

Commit 1b080e4

Browse files
Merge pull request #31 from BrunoSilvaAndrade/develop
2 parents 99fe3a4 + 16a8c01 commit 1b080e4

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

pyconfigparser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ def _extract_env_variable_key(variable):
9797
return variable
9898

9999

100-
_VARIABLE_PATTERN = r'\$([a-zA-Z][\w]+|\{[a-zA-Z][\w]+\})$'
100+
_VARIABLE_PATTERN = r'^\$([a-zA-Z][\w]+|\{[a-zA-Z][\w]+\})$'
101101
_DEFAULT_CONFIG_FILES = ('config.json', 'config.yaml', 'config.yml')
102102
_ENTITY_NAME_PATTERN = r'^[a-zA-Z][\w]+$'
103103
_SUPPORTED_EXTENSIONS = {

test_configparser.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from pyconfigparser import ConfigParser, ConfigError, ConfigFileNotFoundError
1+
from pyconfigparser import ConfigParser, ConfigError, ConfigFileNotFoundError, _is_variable
22
from config.schemas import SIMPLE_SCHEMA_CONFIG, UNSUPPORTED_OBJECT_KEYS_SCHEMA
33
import unittest
44
import os
@@ -92,6 +92,33 @@ def assign_a_bad_type_ignore_unsetted_env_vars():
9292
self.assertIs(configparser.ignore_unset_env_vars, True)
9393
self.assertIsInstance(configparser.ignore_unset_env_vars, bool)
9494

95+
def test_variable_pattern_matching(self) -> None:
96+
"""Test the regex pattern for environment variable matching."""
97+
98+
valid_env_vars = [
99+
"$FOO",
100+
"${FOO}",
101+
"$My_Var123"
102+
]
103+
104+
invalid_env_vars = [
105+
"FOO", # no $
106+
"$", # missing name
107+
"${}", # empty braces
108+
"$1VAR", # starts with number
109+
"${1VAR}", # starts with number in braces
110+
"foo$VAR", # not at start
111+
"<L/f\\U<Uj2{.S95@^$Rx" # random password
112+
]
113+
114+
for var in valid_env_vars:
115+
with self.subTest(var=var):
116+
self.assertTrue(_is_variable(var), f"{var} should match")
117+
118+
for var in invalid_env_vars:
119+
with self.subTest(var=var):
120+
self.assertFalse(_is_variable(var), f"{var} should not match")
121+
95122

96123
if __name__ == '__main__':
97124
unittest.main()

0 commit comments

Comments
 (0)