Skip to content

Commit

Permalink
registry: Make subvalues inherit privacy. Closes GH-519.
Browse files Browse the repository at this point in the history
  • Loading branch information
progval committed Oct 6, 2013
1 parent 16b95bb commit 359d3c6
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/registry.py
Expand Up @@ -252,7 +252,9 @@ def register(self, name, node=None):
if not isValidRegistryName(name):
raise InvalidRegistryName, name
if node is None:
node = Group()
node = Group(private=self._private)
else:
node._private = node._private or self._private
# We tried in any number of horrible ways to make it so that
# re-registering something would work. It doesn't, plain and simple.
# For the longest time, we had an "Is this right?" comment here, but
Expand Down
25 changes: 25 additions & 0 deletions test/test_registry.py
Expand Up @@ -199,4 +199,29 @@ def testWith(self):
self.assertEqual(v(), 'bar')
self.assertEqual(v(), 'foo')

class SecurityTestCase(SupyTestCase):
def testPrivate(self):
v = registry.String('foo', 'help')
self.assertFalse(v._private)
v = registry.String('foo', 'help', private=True)
self.assertTrue(v._private)

g = registry.Group('foo')
v = registry.String('foo', 'help')
g.register('val', v)
self.assertFalse(g._private)
self.assertFalse(g.val._private)

g = registry.Group('foo', private=True)
v = registry.String('foo', 'help')
g.register('val', v)
self.assertTrue(g._private)
self.assertTrue(g.val._private)

g = registry.Group('foo')
v = registry.String('foo', 'help', private=True)
g.register('val', v)
self.assertFalse(g._private)
self.assertTrue(g.val._private)

# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:

0 comments on commit 359d3c6

Please sign in to comment.