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(): |
@@ -133,6 +133,15 b' class ipnsdict(dict):' | |||||
133 | # ipython. |
|
133 | # ipython. | |
134 | self['__builtins__'] = __builtin__ |
|
134 | self['__builtins__'] = __builtin__ | |
135 |
|
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 | ||||
|
144 | ||||
136 |
|
145 | |||
137 | def get_ipython(): |
|
146 | def get_ipython(): | |
138 | # This will get replaced by the real thing once we start IPython below |
|
147 | # This will get replaced by the real thing once we start IPython below |
General Comments 0
You need to be logged in to leave comments.
Login now