From f50347e675e2520d7cae1b22f7d02b7ba55a65b2 Mon Sep 17 00:00:00 2001 From: signalw Date: Sat, 11 Aug 2018 23:49:48 -0400 Subject: [PATCH] throw error if 'environ' in extra arg. remove extra_orig. --- boddle.py | 16 ++++++---------- tests.py | 7 ++++++- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/boddle.py b/boddle.py index c9d7d24..8a31e4b 100644 --- a/boddle.py +++ b/boddle.py @@ -25,7 +25,6 @@ def __init__(self, params={}, path=None, method=None, headers=None, json=None, u environ = {} self.extras = extras - self.extra_orig = {} self.orig_app_reader = bottle.BaseRequest.app if params is not None: @@ -72,21 +71,18 @@ def __enter__(self): self.orig = bottle.request.environ bottle.request.environ = self.environ for k,v in self.extras.items(): - if hasattr(bottle.request, k): - self.extra_orig[k] = getattr(bottle.request, k) + if k == 'environ': + raise ValueError('%s cannot be used as an extra argument.' % k) setattr(bottle.request, k, v) setattr(bottle.BaseRequest, 'app', True) def __exit__(self,a,b,c): bottle.request.environ = self.orig for k,v in self.extras.items(): - if k in self.extra_orig: - setattr(bottle.request, k, self.extra_orig[k]) - else: - try: - delattr(bottle.request, k) - except AttributeError: - pass + try: + delattr(bottle.request, k) + except AttributeError: + pass setattr(bottle.BaseRequest, 'app', self.orig_app_reader) diff --git a/tests.py b/tests.py index 463ac9d..7fb9644 100644 --- a/tests.py +++ b/tests.py @@ -45,7 +45,12 @@ def testExtraStuff(self): with boddle(extra='woot2'): self.assertEqual(bottle.request.extra, 'woot2') self.assertFalse(hasattr(bottle.request,'extra')) - + + def testExtraEnviron(self): + with self.assertRaises(ValueError): + with boddle(environ='bad'): + pass + def testJSON(self): with boddle(json={'name':'derek'}): self.assertEqual(bottle.request.json['name'], 'derek')