Let setup_globals check for known globals
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Sun, 12 Jun 2011 15:36:49 +0000 (17:36 +0200)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Sun, 12 Jun 2011 15:43:54 +0000 (17:43 +0200)
To avoid typos in calling setup_globals(), only allow
globals, which are already known to the system.
Plugins should have their own globals.

mediagoblin/globals.py
mediagoblin/tests/test_globals.py

index 80d1f01d5524d474f39a0cc3536bb1b34cca1feb..49a513a27733239bc334c3ec9102aa620b10bdba 100644 (file)
@@ -19,6 +19,15 @@ database = None
 public_store = None
 queue_store = None
 
+# Dump mail to stdout instead of sending it:
+email_debug_mode = False
+
+# Address for sending out mails
+email_sender_address = None
+
+# A WorkBenchManager
+workbench_manager = None
+
 # gettext
 translations = gettext.find(
     'mediagoblin',
@@ -30,4 +39,6 @@ def setup_globals(**kwargs):
     from mediagoblin import globals as mg_globals
 
     for key, value in kwargs.iteritems():
+        if not hasattr(mg_globals, key):
+            raise AssertionError("Global %s not known" % key)
         setattr(mg_globals, key, value)
index 6d2e01dab8814a09fb906b150593249586192143..b285cdf5b408868e6aff54f718c4bf3060263a91 100644 (file)
@@ -14,6 +14,8 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from nose.tools import assert_raises
+
 from mediagoblin import globals as mg_globals
 
 def test_setup_globals():
@@ -27,3 +29,8 @@ def test_setup_globals():
     assert mg_globals.database == 'my favorite database!'
     assert mg_globals.public_store == 'my favorite public_store!'
     assert mg_globals.queue_store == 'my favorite queue_store!'
+
+    assert_raises(
+        AssertionError,
+        mg_globals.setup_globals,
+        no_such_global_foo = "Dummy")