Show More
@@ -18,74 +18,75 b' from IPython.kernel.core.interpreter import Interpreter' | |||||
18 | import IPython.kernel.engineservice as es |
|
18 | import IPython.kernel.engineservice as es | |
19 | from IPython.testing.util import DeferredTestCase |
|
19 | from IPython.testing.util import DeferredTestCase | |
20 | from twisted.internet.defer import succeed |
|
20 | from twisted.internet.defer import succeed | |
21 | from IPython.frontend.cocoa.cocoa_frontend import IPythonCocoaController |
|
|||
22 |
|
||||
23 | from Foundation import NSMakeRect |
|
|||
24 | from AppKit import NSTextView, NSScrollView |
|
|||
25 |
|
21 | |||
26 | class TestIPythonCocoaControler(DeferredTestCase): |
|
22 | try: | |
27 | """Tests for IPythonCocoaController""" |
|
23 | from IPython.frontend.cocoa.cocoa_frontend import IPythonCocoaController | |
|
24 | from Foundation import NSMakeRect | |||
|
25 | from AppKit import NSTextView, NSScrollView | |||
|
26 | except ImportError: | |||
|
27 | class TestIPythonCocoaControler(DeferredTestCase): | |||
|
28 | """Tests for IPythonCocoaController""" | |||
28 |
|
29 | |||
29 | def setUp(self): |
|
30 | def setUp(self): | |
30 | self.controller = IPythonCocoaController.alloc().init() |
|
31 | self.controller = IPythonCocoaController.alloc().init() | |
31 | self.engine = es.EngineService() |
|
32 | self.engine = es.EngineService() | |
32 | self.engine.startService() |
|
33 | self.engine.startService() | |
33 |
|
34 | |||
34 |
|
35 | |||
35 | def tearDown(self): |
|
36 | def tearDown(self): | |
36 | self.controller = None |
|
37 | self.controller = None | |
37 | self.engine.stopService() |
|
38 | self.engine.stopService() | |
38 |
|
39 | |||
39 | def testControllerExecutesCode(self): |
|
40 | def testControllerExecutesCode(self): | |
40 | code ="""5+5""" |
|
41 | code ="""5+5""" | |
41 | expected = Interpreter().execute(code) |
|
42 | expected = Interpreter().execute(code) | |
42 | del expected['number'] |
|
43 | del expected['number'] | |
43 | def removeNumberAndID(result): |
|
44 | def removeNumberAndID(result): | |
44 | del result['number'] |
|
45 | del result['number'] | |
45 | del result['id'] |
|
46 | del result['id'] | |
46 | return result |
|
47 | return result | |
47 | self.assertDeferredEquals( |
|
48 | self.assertDeferredEquals( | |
48 | self.controller.execute(code).addCallback(removeNumberAndID), |
|
49 | self.controller.execute(code).addCallback(removeNumberAndID), | |
49 | expected) |
|
50 | expected) | |
50 |
|
51 | |||
51 | def testControllerMirrorsUserNSWithValuesAsStrings(self): |
|
52 | def testControllerMirrorsUserNSWithValuesAsStrings(self): | |
52 | code = """userns1=1;userns2=2""" |
|
53 | code = """userns1=1;userns2=2""" | |
53 | def testControllerUserNS(result): |
|
54 | def testControllerUserNS(result): | |
54 | self.assertEquals(self.controller.userNS['userns1'], 1) |
|
55 | self.assertEquals(self.controller.userNS['userns1'], 1) | |
55 | self.assertEquals(self.controller.userNS['userns2'], 2) |
|
56 | self.assertEquals(self.controller.userNS['userns2'], 2) | |
56 |
|
57 | |||
57 | self.controller.execute(code).addCallback(testControllerUserNS) |
|
58 | self.controller.execute(code).addCallback(testControllerUserNS) | |
58 |
|
59 | |||
59 |
|
60 | |||
60 | def testControllerInstantiatesIEngine(self): |
|
61 | def testControllerInstantiatesIEngine(self): | |
61 | self.assert_(es.IEngineBase.providedBy(self.controller.engine)) |
|
62 | self.assert_(es.IEngineBase.providedBy(self.controller.engine)) | |
62 |
|
63 | |||
63 | def testControllerCompletesToken(self): |
|
64 | def testControllerCompletesToken(self): | |
64 | code = """longNameVariable=10""" |
|
65 | code = """longNameVariable=10""" | |
65 | def testCompletes(result): |
|
66 | def testCompletes(result): | |
66 | self.assert_("longNameVariable" in result) |
|
67 | self.assert_("longNameVariable" in result) | |
67 |
|
68 | |||
68 | def testCompleteToken(result): |
|
69 | def testCompleteToken(result): | |
69 | self.controller.complete("longNa").addCallback(testCompletes) |
|
70 | self.controller.complete("longNa").addCallback(testCompletes) | |
70 |
|
71 | |||
71 | self.controller.execute(code).addCallback(testCompletes) |
|
72 | self.controller.execute(code).addCallback(testCompletes) | |
72 |
|
73 | |||
73 |
|
74 | |||
74 | def testCurrentIndent(self): |
|
75 | def testCurrentIndent(self): | |
75 | """test that current_indent_string returns current indent or None. |
|
76 | """test that current_indent_string returns current indent or None. | |
76 | Uses _indent_for_block for direct unit testing. |
|
77 | Uses _indent_for_block for direct unit testing. | |
77 | """ |
|
78 | """ | |
78 |
|
79 | |||
79 | self.controller.tabUsesSpaces = True |
|
80 | self.controller.tabUsesSpaces = True | |
80 | self.assert_(self.controller._indent_for_block("""a=3""") == None) |
|
81 | self.assert_(self.controller._indent_for_block("""a=3""") == None) | |
81 | self.assert_(self.controller._indent_for_block("") == None) |
|
82 | self.assert_(self.controller._indent_for_block("") == None) | |
82 | block = """def test():\n a=3""" |
|
83 | block = """def test():\n a=3""" | |
83 | self.assert_(self.controller._indent_for_block(block) == \ |
|
84 | self.assert_(self.controller._indent_for_block(block) == \ | |
84 | ' ' * self.controller.tabSpaces) |
|
85 | ' ' * self.controller.tabSpaces) | |
85 |
|
86 | |||
86 | block = """if(True):\n%sif(False):\n%spass""" % \ |
|
87 | block = """if(True):\n%sif(False):\n%spass""" % \ | |
87 | (' '*self.controller.tabSpaces, |
|
88 | (' '*self.controller.tabSpaces, | |
88 | 2*' '*self.controller.tabSpaces) |
|
89 | 2*' '*self.controller.tabSpaces) | |
89 | self.assert_(self.controller._indent_for_block(block) == \ |
|
90 | self.assert_(self.controller._indent_for_block(block) == \ | |
90 | 2*(' '*self.controller.tabSpaces)) |
|
91 | 2*(' '*self.controller.tabSpaces)) | |
91 |
|
92 |
@@ -20,7 +20,6 b' from twisted.internet import defer' | |||||
20 | from IPython.kernel import engineservice as es |
|
20 | from IPython.kernel import engineservice as es | |
21 | from IPython.kernel import multiengine as me |
|
21 | from IPython.kernel import multiengine as me | |
22 | from IPython.kernel import newserialized |
|
22 | from IPython.kernel import newserialized | |
23 | from IPython.kernel.error import NotDefined |
|
|||
24 | from IPython.testing import util |
|
23 | from IPython.testing import util | |
25 | from IPython.testing.parametric import parametric, Parametric |
|
24 | from IPython.testing.parametric import parametric, Parametric | |
26 | from IPython.kernel import newserialized |
|
25 | from IPython.kernel import newserialized |
@@ -349,6 +349,39 b' IPython. The current prototype of ``tconfig`` is located in the IPython sandbox.' | |||||
349 | .. _ConfigObj: http://www.voidspace.org.uk/python/configobj.html |
|
349 | .. _ConfigObj: http://www.voidspace.org.uk/python/configobj.html | |
350 | .. _Traits: http://code.enthought.com/traits/ |
|
350 | .. _Traits: http://code.enthought.com/traits/ | |
351 |
|
351 | |||
|
352 | Installation and testing scenarios | |||
|
353 | ================================== | |||
|
354 | ||||
|
355 | This section outlines the various scenarios that we need to test before we release an IPython version. These scenarios represent different ways of installing IPython and its dependencies. | |||
|
356 | ||||
|
357 | Installation scenarios | |||
|
358 | ---------------------- | |||
|
359 | ||||
|
360 | 1. Install from tarball using `python setup.py install`. | |||
|
361 | a. With only readline+nose dependencies installed (test1) | |||
|
362 | b. With all dependencies installed (readline, zope.interface, | |||
|
363 | Twisted, foolscap, Sphinx, nose, pyOpenSSL) (test2) | |||
|
364 | 2. Install using easy_install. | |||
|
365 | a. With only readline+nose dependencies installed (test3) | |||
|
366 | i. Default dependencies. | |||
|
367 | ii. Optional dependency sets (kernel, doc, test, security) | |||
|
368 | easy_install -f ipython-0.9.beta3-py2.5.egg IPython[kernel,doc,test,security] | |||
|
369 | ||||
|
370 | b. With all dependencies already installed (test2) | |||
|
371 | ||||
|
372 | ||||
|
373 | Tests to run for these scenarios | |||
|
374 | -------------------------------- | |||
|
375 | ||||
|
376 | 1. Run the full test suite. | |||
|
377 | 2. Start a controller and engines and try a few things by hand. | |||
|
378 | a. Using ipcluster. | |||
|
379 | b. Using ipcontroller/ipengine by hand. | |||
|
380 | 3. Run a few of the parallel examples. | |||
|
381 | 4. Try the kernel with and without security with and without PyOpenSSL | |||
|
382 | installed. | |||
|
383 | 5. Beat on the IPython terminal a bunch. | |||
|
384 | 6. Make sure that furl files are being put in proper locations. | |||
352 |
|
385 | |||
353 |
|
386 | |||
354 |
|
387 |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now