[Python.NET] Bugs in PythonDotNet RC2

Dag Nummedal Dag.Nummedal at ime.ntnu.no
Tue Nov 1 13:34:09 CET 2005


I've recently downloaded the .Net extensions for Python, and I've found 
some bugs regarding constructors and exceptions.

My test code is below, with two classes.  The first takes a single 
integer argument, and generates a division by zero exception if this is 
zero.  The second class will always generate an exception.  Both 
constructors will write a line to stdout when run.

MyTest.cs:
----------------------------------------------------------------------
using System;
using System.Collections;
using System.Management;

namespace MyTest
{
	public class Bad
	{

		public Bad(int i)
		{
			Console.WriteLine("Test");
			int i2 = 1;
			int i1 = i;
			i2 = i2 / i1;
		}

	}

	public class Bad2
	{

		public Bad2()
		{
			Console.WriteLine("Test");
			int i2 = 1;
			int i1 = 0;
			i2 = i2 / i1;
		}

	}
}
----------------------------------------------------------------------
test.py:
----------------------------------------------------------------------
import CLR.MyTest
import sys, traceback

try:
	print repr(CLR.MyTest.Bad(1))
except:
         print '-'*60
         traceback.print_exc()
         print '-'*60

try:
	print repr(CLR.MyTest.Bad(0))
except:
         print '-'*60
         traceback.print_exc()
         print '-'*60

try:
	print repr(CLR.MyTest.Bad2())
except:
         print '-'*60
         traceback.print_exc()
         print '-'*60

try:
	print repr(CLR.MyTest.Bad2(1))
except:
         print '-'*60
         traceback.print_exc()
         print '-'*60
----------------------------------------------------------------------

Output from test.py:
----------------------------------------------------------------------
Test
<CLR.MyTest.Bad object at 0x00B3F7B0>
Test
------------------------------------------------------------
Traceback (most recent call last):
   File "test.py", line 12, in ?
     print repr(CLR.MyTest.Bad(0))
TypeError: no constructor matches given arguments
------------------------------------------------------------
Test
Test
------------------------------------------------------------
Traceback (most recent call last):
   File "test.py", line 19, in ?
     print repr(CLR.MyTest.Bad2())
DivideByZeroException: Attempted to divide by zero.
    at MyTest.Bad2..ctor()
------------------------------------------------------------
Test
------------------------------------------------------------
Traceback (most recent call last):
   File "test.py", line 26, in ?
     print repr(CLR.MyTest.Bad2(1))
DivideByZeroException: Attempted to divide by zero.
    at MyTest.Bad2..ctor()
------------------------------------------------------------
----------------------------------------------------------------------

The problems are as follows:

	CLR.MyTest.Bad(0) -> Wrong traceback, wrong exception

	CLR.MyTest.Bad2() -> Seems to call constructor twice (prints
			     "Test" twice.)

	CLR.MyTest.Bad2(1) -> Calls constructor instead of raising
			      TypeError for bad number of arguments.

-- 
Dag Nummedal (Dag.Nummedal at ime.ntnu.no)


More information about the PythonDotNet mailing list