@@ -43,7 +43,7 @@ class CfgParserTestCaseClass:
4343 default_section = configparser .DEFAULTSECT
4444 interpolation = configparser ._UNSET
4545
46- def newconfig (self , defaults = None ):
46+ def newconfig (self , defaults = None , ** kwargs ):
4747 arguments = dict (
4848 defaults = defaults ,
4949 allow_no_value = self .allow_no_value ,
@@ -56,6 +56,7 @@ def newconfig(self, defaults=None):
5656 default_section = self .default_section ,
5757 interpolation = self .interpolation ,
5858 )
59+ arguments .update (kwargs )
5960 instance = self .config_class (** arguments )
6061 return instance
6162
@@ -358,6 +359,32 @@ def test_basic(self):
358359 the larch {0[1]} 1
359360 """ .format (self .delimiters )))
360361
362+ @support .subTests ('data' , [
363+ 'foo bar=baz' ,
364+ 'foo bar=baz' ,
365+ 'foo=bar=baz' ,
366+ 'foo = bar=baz' ,
367+ 'foo\t \t =\t \t bar=baz' ,
368+ ])
369+ def test_space_delimiter (self , data ):
370+ # gh-156353: Space should be accepted as a delimiter
371+ cf = self .newconfig (delimiters = (' ' , '=' ))
372+ cf .read_string (f"[all]\n { data } " )
373+ self .assertEqual (cf .options ('all' ), ['foo' ])
374+ self .assertEqual (cf .get ('all' , 'foo' ), 'bar=baz' )
375+
376+ @support .subTests ('delimiter' , ' =:;#x\t \0 \N{RS} \N{CEDILLA} \N{CAT} ' )
377+ @support .subTests ('space_before' , ['' , ' ' , '\t ' , ' \t ' ])
378+ @support .subTests ('space_after' , ['' , ' ' , '\t ' , ' \t ' ])
379+ def test_any_delimiter (self , delimiter , space_before , space_after ):
380+ cf = self .newconfig (
381+ delimiters = (delimiter ,),
382+ inline_comment_prefixes = None ,
383+ )
384+ cf .read_string (f"[all]\n foo{ space_before } { delimiter } { space_after } bar=baz" )
385+ self .assertEqual (cf .options ('all' ), ['foo' ])
386+ self .assertEqual (cf .get ('all' , 'foo' ), 'bar=baz' )
387+
361388 def test_basic_from_dict (self ):
362389 config = {
363390 "Foo Bar" : {
@@ -1991,8 +2018,8 @@ class ConvertersTestCase(BasicTestCase, unittest.TestCase):
19912018
19922019 config_class = configparser .ConfigParser
19932020
1994- def newconfig (self , defaults = None ):
1995- instance = super ().newconfig (defaults = defaults )
2021+ def newconfig (self , defaults = None , ** kwargs ):
2022+ instance = super ().newconfig (defaults = defaults , ** kwargs )
19962023 instance .converters ['list' ] = lambda v : [e .strip () for e in v .split ()
19972024 if e .strip ()]
19982025 return instance
0 commit comments