def test_strings(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) # String exception response = ipi.ExecuteLine("raise 'foo'", True) AreEqual( response.replace("\r\r\n", "\n").replace("\r", ""), """Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: exceptions must be classes or instances, not str""") # Multi-line string literal ipi.ExecutePartialLine("\"\"\"Hello") ipi.ExecutePartialLine("") ipi.ExecutePartialLine("") AreEqual("'Hello\\n\\n\\nWorld'", ipi.ExecuteLine("World\"\"\"")) ipi.ExecutePartialLine("if False: print 3") ipi.ExecutePartialLine("else: print 'hello'") AreEqual(r'hello', ipi.ExecuteLine("")) # Empty line AreEqual("", ipi.ExecuteLine("")) ipi.End()
def test_indentation(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) ipi.ExecutePartialLine("if False:") ipi.ExecutePartialLine(" print 'hello'") response = ipi.ExecuteLine(" print 'goodbye'", True) AreEqual(response.find('IndentationError') > 1, True) ipi.End()
def test_indentation_levels(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) ipi.ExecutePartialLine("class K:") ipi.ExecutePartialLine(" def M(self):") ipi.ExecutePartialLine(" if 1:") ipi.ExecutePartialLine(" pass") response = ipi.ExecuteLine("") ipi.End()
def test_mta(): ipi = IronPythonInstance(executable, exec_prefix, '-X:MTA') AreEqual(ipi.Start(), True) ipi.ExecutePartialLine("class C:pass") response = ipi.ExecuteLine("") AreEqual(response, "") ipi.ExecutePartialLine("class D(C):") response = ipi.ExecuteLine("", True) Assert("IndentationError:" in response) ipi.End()
def test_try_except(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) ipi.ExecutePartialLine("try:") ipi.ExecutePartialLine(" raise Exception('foo')") ipi.ExecutePartialLine("except Exception, e:") ipi.ExecutePartialLine(" if e.message=='foo':") ipi.ExecutePartialLine(" print 'okay'") response = ipi.ExecuteLine("") Assert(response.find('okay') > -1) ipi.End()
def test_future_with(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) ipi.ExecutePartialLine("class K(object):") ipi.ExecutePartialLine(" def __enter__(self): return 3.14") ipi.ExecutePartialLine(" def __exit__(self, type, value, tb): return False") ipi.ExecuteLine("") ipi.ExecutePartialLine("with K() as d:") ipi.ExecutePartialLine(" print d") response = ipi.ExecuteLine("") AreEqual(response, "3.14") ipi.End()
def test_incomplate_syntax_backslash(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) for i in xrange(4): for j in xrange(i): ipi.ExecutePartialLine("\\") ipi.ExecutePartialLine("1 + \\") for j in xrange(i): ipi.ExecutePartialLine("\\") response = ipi.ExecuteLine("2", True) Assert("3" in response) ipi.End()
def test_aform_feeds(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) response = ipi.ExecuteLine("\fprint 'hello'") AreEqual(response, "hello") response = ipi.ExecuteLine(" \fprint 'hello'") AreEqual(response, "hello") ipi.ExecutePartialLine("def f():") ipi.ExecutePartialLine("\f print 'hello'") ipi.ExecuteLine('') response = ipi.ExecuteLine('f()') AreEqual(response, "hello") # \f resets indent to 0 ipi.ExecutePartialLine("def f():") ipi.ExecutePartialLine(" \f x = 'hello'") ipi.ExecutePartialLine("\f print x") ipi.ExecuteLine('') response = ipi.ExecuteLine('f()') AreEqual(response, "hello") # \f resets indent to 0 ipi.ExecutePartialLine("def f():") ipi.ExecutePartialLine(" \f x = 'hello'") ipi.ExecutePartialLine(" print x") ipi.ExecuteLine('') response = ipi.ExecuteLine('f()') AreEqual(response, "hello")
def test_partial_lists(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) ipi.ExecutePartialLine("[1") ipi.ExecutePartialLine(" ,") ipi.ExecutePartialLine(" 2") response = ipi.ExecuteLine("]") Assert("[1, 2]" in response) ipi.ExecutePartialLine("[") ipi.ExecutePartialLine("") ipi.ExecutePartialLine("") response = ipi.ExecuteLine("]") Assert("[]" in response) ipi.End()
def test_incomplate_syntax(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) ipi.ExecutePartialLine("class K:") response = ipi.ExecuteLine("", True) Assert("IndentationError:" in response) ipi.End()
def test_exceptions_nested(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) ipi.ExecutePartialLine("def a(): return b()") ipi.ExecuteLine("") ipi.ExecutePartialLine("def b(): return 1/0") ipi.ExecuteLine("") response = ipi.ExecuteLine("a()", True) response = response.replace("\r\r\n", "\n").strip() Assert(response.startswith('''Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 1, in a File "<stdin>", line 1, in b ZeroDivisionError:'''), response) ipi.End()
def test_comments(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) response = ipi.ExecuteLine("# this is some comment line") AreEqual(response, "") response = ipi.ExecuteLine(" # this is some comment line") AreEqual(response, "") response = ipi.ExecuteLine("# this is some more comment line") AreEqual(response, "") ipi.ExecutePartialLine("if 100:") ipi.ExecutePartialLine(" print 100") ipi.ExecutePartialLine("# this is some more comment line inside if") ipi.ExecutePartialLine("# this is some indented comment line inside if") ipi.ExecutePartialLine(" print 200") response = ipi.ExecuteLine("") AreEqual(response, "100" + newline + "200") ipi.End()
def test_displayhook(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) # parameterless exception ipi.ExecuteLine("import sys") ipi.ExecutePartialLine("def f(x): print 'foo', x") ipi.ExecuteLine("") response = ipi.ExecuteLine("sys.displayhook = f") response = ipi.ExecuteLine("42") AreEqual(response, "foo 42")
def test_excepthook(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) # parameterless exception ipi.ExecuteLine("import sys") ipi.ExecutePartialLine("def f(*args): print 'foo', args") ipi.ExecuteLine("") response = ipi.ExecuteLine("sys.excepthook = f") response = ipi.ExecuteLine("raise Exception", True) AssertContains(response, "foo (<type 'exceptions.Exception'>, Exception(), <traceback object at")
def test_partial_lists_cp3530(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) try: ipi.ExecutePartialLine("[{'a':None},") response = ipi.ExecuteLine("]") Assert("[{'a': None}]" in response, response) ipi.ExecutePartialLine("[{'a'") response = ipi.ExecutePartialLine(":None},") response = ipi.ExecuteLine("]") Assert("[{'a': None}]" in response, response) ipi.ExecutePartialLine("[{'a':None},") ipi.ExecutePartialLine("1,") response = ipi.ExecuteLine("2]") Assert("[{'a': None}, 1, 2]" in response, response) finally: ipi.End()
def test_mta(): ipi = IronPythonInstance(executable, exec_prefix, '-X:MTA') AreEqual(ipi.Start(), True) ipi.ExecuteLine("import System") response = ipi.ExecuteLine("str(System.Threading.Thread.CurrentThread.ApartmentState)") AreEqual(response, "'MTA'") ipi.ExecutePartialLine("class C:pass") response = ipi.ExecuteLine("") AreEqual(response, "") response = ipi.ExecuteLine("str(System.Threading.Thread.CurrentThread.ApartmentState)") AreEqual(response, "'MTA'") ipi.End()
def test_partial_dicts(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) ipi.ExecutePartialLine("{2:2") ipi.ExecutePartialLine(" ,") ipi.ExecutePartialLine(" 2:2") response = ipi.ExecuteLine("}") Assert("{2: 2}" in response) ipi.ExecutePartialLine("{") response = ipi.ExecuteLine("}") Assert("{}" in response) ipi.ExecutePartialLine("a = {") ipi.ExecutePartialLine(" None:2") ipi.ExecutePartialLine(" , ") ipi.ExecuteLine("}") response = ipi.ExecuteLine("a") Assert("{None: 2}" in response) ipi.ExecutePartialLine("{") ipi.ExecutePartialLine("'joe'") ipi.ExecutePartialLine(": ") ipi.ExecutePartialLine(" 42") ipi.ExecutePartialLine(",") ipi.ExecutePartialLine("3:45") response = ipi.ExecuteLine("}") Assert(repr({'joe': 42, 3: 45}) in response) ipi.ExecutePartialLine("{") ipi.ExecutePartialLine("") ipi.ExecutePartialLine("") response = ipi.ExecuteLine("}") Assert("{}" in response) ipi.End()
def test_partial_tuples(): ipi = IronPythonInstance(executable, exec_prefix, extraArgs) AreEqual(ipi.Start(), True) ipi.ExecutePartialLine("(2") ipi.ExecutePartialLine(" ,") ipi.ExecutePartialLine(" 3") response = ipi.ExecuteLine(")") Assert("(2, 3)" in response) ipi.ExecutePartialLine("(") response = ipi.ExecuteLine(")") Assert("()" in response) ipi.ExecutePartialLine("'abc %s %s %s %s %s' % (") ipi.ExecutePartialLine(" 'def'") ipi.ExecutePartialLine(" ,'qrt',") ipi.ExecutePartialLine(" 'jkl'") ipi.ExecutePartialLine(",'jkl'") ipi.ExecutePartialLine("") ipi.ExecutePartialLine(",") ipi.ExecutePartialLine("") ipi.ExecutePartialLine("") ipi.ExecutePartialLine("'123'") response = ipi.ExecuteLine(")") Assert("'abc def qrt jkl jkl 123'" in response) ipi.ExecutePartialLine("a = (") ipi.ExecutePartialLine(" 1") ipi.ExecutePartialLine(" , ") ipi.ExecuteLine(")") response = ipi.ExecuteLine("a") Assert("(1,)" in response) ipi.ExecutePartialLine("(") ipi.ExecutePartialLine("'joe'") ipi.ExecutePartialLine(" ") ipi.ExecutePartialLine(" #") ipi.ExecutePartialLine(",") ipi.ExecutePartialLine("2") response = ipi.ExecuteLine(")") Assert("('joe', 2)" in response) ipi.ExecutePartialLine("(") ipi.ExecutePartialLine("") ipi.ExecutePartialLine("") response = ipi.ExecuteLine(")") Assert("()" in response) ipi.End()