summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorŁukasz Langa <lukasz@langa.pl>2013-01-01 22:45:33 (GMT)
committerŁukasz Langa <lukasz@langa.pl>2013-01-01 22:45:33 (GMT)
commita2e7acd17d64cfef3f502473c3b56db8cce24234 (patch)
tree702d51c468cf9ea9d9e3a17ad02948334aaf8574 /Lib/test
parente4110dc11f9e90d3a7fcd8f0a5f9ded344f433c6 (diff)
downloadcpython-a2e7acd17d64cfef3f502473c3b56db8cce24234.zip
cpython-a2e7acd17d64cfef3f502473c3b56db8cce24234.tar.gz
cpython-a2e7acd17d64cfef3f502473c3b56db8cce24234.tar.bz2
configparser: preserve section order when using `__setitem__` (issue #16820)
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_cfgparser.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py
index 7a9e8a8..cec9b44 100644
--- a/Lib/test/test_cfgparser.py
+++ b/Lib/test/test_cfgparser.py
@@ -797,6 +797,32 @@ boolean {0[0]} NO
self.assertEqual(set(cf.sections()), set())
self.assertEqual(set(cf[self.default_section].keys()), {'foo'})
+ def test_setitem(self):
+ cf = self.fromstring("""
+ [section1]
+ name1 {0[0]} value1
+ [section2]
+ name2 {0[0]} value2
+ [section3]
+ name3 {0[0]} value3
+ """.format(self.delimiters), defaults={"nameD": "valueD"})
+ self.assertEqual(set(cf['section1'].keys()), {'name1', 'named'})
+ self.assertEqual(set(cf['section2'].keys()), {'name2', 'named'})
+ self.assertEqual(set(cf['section3'].keys()), {'name3', 'named'})
+ self.assertEqual(cf['section1']['name1'], 'value1')
+ self.assertEqual(cf['section2']['name2'], 'value2')
+ self.assertEqual(cf['section3']['name3'], 'value3')
+ self.assertEqual(cf.sections(), ['section1', 'section2', 'section3'])
+ cf['section2'] = {'name22': 'value22'}
+ self.assertEqual(set(cf['section2'].keys()), {'name22', 'named'})
+ self.assertEqual(cf['section2']['name22'], 'value22')
+ self.assertNotIn('name2', cf['section2'])
+ self.assertEqual(cf.sections(), ['section1', 'section2', 'section3'])
+ cf['section3'] = {}
+ self.assertEqual(set(cf['section3'].keys()), {'named'})
+ self.assertNotIn('name3', cf['section3'])
+ self.assertEqual(cf.sections(), ['section1', 'section2', 'section3'])
+
class StrictTestCase(BasicTestCase):
config_class = configparser.RawConfigParser