From 7fedb4aeb13ee1da2a8f50681faf313b21c8fae0 2012-07-21 16:14:49 From: Min RK Date: 2012-07-21 16:14:49 Subject: [PATCH] Merge pull request #2185 from cqmckay/magicfix fix %store, and add test closes #2099 --- diff --git a/IPython/core/tests/test_magic.py b/IPython/core/tests/test_magic.py index 52e85ad..8a69bff 100644 --- a/IPython/core/tests/test_magic.py +++ b/IPython/core/tests/test_magic.py @@ -777,3 +777,22 @@ def test_save(): content = f.read() nt.assert_equal(content.count(cmds[0]), 2) nt.assert_true('coding: utf-8' in content) + + +def test_store(): + """Test %store.""" + ip = get_ipython() + ip.run_line_magic('load_ext', 'storemagic') + + # make sure the storage is empty + ip.run_line_magic('store', '-z') + ip.user_ns['var'] = 42 + ip.run_line_magic('store', 'var') + ip.user_ns['var'] = 39 + ip.run_line_magic('store', '-r') + nt.assert_equal(ip.user_ns['var'], 42) + + ip.run_line_magic('store', '-d var') + ip.user_ns['var'] = 39 + ip.run_line_magic('store' , '-r') + nt.assert_equal(ip.user_ns['var'], 39) diff --git a/IPython/extensions/storemagic.py b/IPython/extensions/storemagic.py index 6402e86..9c9e7c2 100644 --- a/IPython/extensions/storemagic.py +++ b/IPython/extensions/storemagic.py @@ -140,7 +140,7 @@ class StoreMagics(Magics): # run without arguments -> list variables & values elif not args: - vars = self.db.keys('autorestore/*') + vars = db.keys('autorestore/*') vars.sort() if vars: size = max(map(len, vars)) @@ -186,9 +186,9 @@ class StoreMagics(Magics): except KeyError: # it might be an alias # This needs to be refactored to use the new AliasManager stuff. - if args[0] in self.alias_manager: + if args[0] in ip.alias_manager: name = args[0] - nargs, cmd = self.alias_manager.alias_table[ name ] + nargs, cmd = ip.alias_manager.alias_table[ name ] staliases = db.get('stored_aliases',{}) staliases[ name ] = cmd db['stored_aliases'] = staliases @@ -207,7 +207,7 @@ class StoreMagics(Magics): """ % (args[0], obj) ) return #pickled = pickle.dumps(obj) - self.db[ 'autorestore/' + args[0] ] = obj + db[ 'autorestore/' + args[0] ] = obj print "Stored '%s' (%s)" % (args[0], obj.__class__.__name__)