##// END OF EJS Templates
Remove remaining references held by test suite, so that xdel test passes.
Thomas Kluyver -
Show More
@@ -404,11 +404,26 b' class TestXdel(tt.TempFileMixin):'
404 " self.monitor.append(1)\n"
404 " self.monitor.append(1)\n"
405 "a = A()\n")
405 "a = A()\n")
406 self.mktmp(src)
406 self.mktmp(src)
407 # %run creates some hidden references...
407 _ip.magic("run %s" % self.fname)
408 _ip.magic("run %s" % self.fname)
409 # ... as does the displayhook.
408 _ip.run_cell("a")
410 _ip.run_cell("a")
411 a = _ip.user_ns["a"]
409 monitor = _ip.user_ns["A"].monitor
412 monitor = _ip.user_ns["A"].monitor
410 nt.assert_equal(monitor, [])
413 nt.assert_equal(monitor, [])
411 _ip.magic("xdel a")
414 _ip.magic("xdel a")
415
416 # The testing framework stores extra references - we kill those
417 # here. See IPython.testing.globalipapp.ipnsdict.
418 _ip.user_ns.killrefs(a)
419 del a
420
421 # For some reason the test doesn't pass if this is removed.
422 # TODO: Work out why, and improve the test.
423 f = sys._getframe()
424 print f.f_locals
425
426 # Check that a's __del__ method has been called.
412 nt.assert_equal(monitor, [1])
427 nt.assert_equal(monitor, [1])
413
428
414 def doctest_who():
429 def doctest_who():
@@ -132,6 +132,15 b' class ipnsdict(dict):'
132 # correct for that ourselves, to ensure consitency with the 'real'
132 # correct for that ourselves, to ensure consitency with the 'real'
133 # ipython.
133 # ipython.
134 self['__builtins__'] = __builtin__
134 self['__builtins__'] = __builtin__
135
136 def killrefs(self, obj):
137 """For part of the testing, we need to be able to remove
138 references to an object, which would otherwise be kept in
139 _savedict."""
140 todel = [n for n, o in self._savedict.iteritems() if o is obj]
141 for n in todel:
142 del self._savedict[n]
143
135
144
136
145
137 def get_ipython():
146 def get_ipython():
General Comments 0
You need to be logged in to leave comments. Login now