Merge lp:~veebers/autopilot/fix-config-contains-equals into lp:autopilot

Proposed by Christopher Lee
Status: Merged
Approved by: Leo Arias
Approved revision: 526
Merged at revision: 538
Proposed branch: lp:~veebers/autopilot/fix-config-contains-equals
Merge into: lp:autopilot
Diff against target: 57 lines (+19/-9)
2 files modified
autopilot/_config.py (+8/-8)
autopilot/tests/unit/test_config.py (+11/-1)
To merge this branch: bzr merge lp:~veebers/autopilot/fix-config-contains-equals
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Approve
Leo Arias (community) Approve
Review via email: mp+247540@code.launchpad.net

Commit message

Command line test config values can now contain the '=' character.

Description of the change

Command line test config values can now contain the '=' character.

To post a comment you must log in.
Revision history for this message
Leo Arias (elopio) wrote :

I like the new tests, and they all pass. Thanks.

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'autopilot/_config.py'
--- autopilot/_config.py 2014-05-21 07:42:24 +0000
+++ autopilot/_config.py 2015-01-25 21:35:22 +0000
@@ -71,14 +71,14 @@
7171
72 def __init__(self, config_string):72 def __init__(self, config_string):
73 self._data = {}73 self._data = {}
74 for item in config_string.split(','):74 config_items = (item for item in config_string.split(',') if item)
75 if not item:75 for item in config_items:
76 continue76 parts = item.split('=', 1)
77 parts = item.split('=')77 safe_key = parts[0].lstrip()
78 if len(parts) == 1:78 if len(parts) == 1 and safe_key != '':
79 self._data[parts[0].lstrip()] = '1'79 self._data[safe_key] = '1'
80 elif len(parts) == 2:80 elif len(parts) == 2 and safe_key != '':
81 self._data[parts[0].lstrip()] = parts[1]81 self._data[safe_key] = parts[1]
82 else:82 else:
83 raise ValueError(83 raise ValueError(
84 "Invalid configuration string '{}'".format(config_string)84 "Invalid configuration string '{}'".format(config_string)
8585
=== modified file 'autopilot/tests/unit/test_config.py'
--- autopilot/tests/unit/test_config.py 2014-05-23 11:28:21 +0000
+++ autopilot/tests/unit/test_config.py 2015-01-25 21:35:22 +0000
@@ -51,6 +51,10 @@
51 d = config.ConfigDict('foo')51 d = config.ConfigDict('foo')
52 self.assertEqual(d['foo'], '1')52 self.assertEqual(d['foo'], '1')
5353
54 def test_single_value_containing_equals_symbol(self):
55 d = config.ConfigDict('foo=b=a')
56 self.assertEqual(d['foo'], 'b=a')
57
54 def test_multiple_simple_keys(self):58 def test_multiple_simple_keys(self):
55 d = config.ConfigDict('foo,bar')59 d = config.ConfigDict('foo,bar')
56 self.assertTrue('foo' in d)60 self.assertTrue('foo' in d)
@@ -87,8 +91,14 @@
87 d = config.ConfigDict(' foo=bar, bar=baz')91 d = config.ConfigDict(' foo=bar, bar=baz')
88 self.assertEqual(set(d.keys()), {'foo', 'bar'})92 self.assertEqual(set(d.keys()), {'foo', 'bar'})
8993
94 def test_raises_ValueError_on_blank_key(self):
95 self.assertRaises(ValueError, lambda: config.ConfigDict('=,'))
96
97 def test_raises_ValueError_on_space_key(self):
98 self.assertRaises(ValueError, lambda: config.ConfigDict(' =,'))
99
90 def test_raises_ValueError_on_invalid_string(self):100 def test_raises_ValueError_on_invalid_string(self):
91 self.assertRaises(ValueError, lambda: config.ConfigDict('f=b=c'))101 self.assertRaises(ValueError, lambda: config.ConfigDict('f,='))
92102
93 def test_iter(self):103 def test_iter(self):
94 k = config.ConfigDict('foo').keys()104 k = config.ConfigDict('foo').keys()

Subscribers

People subscribed via source and target branches