[Python.NET] Bugs in PythonDotNet RC2

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[Python.NET] Bugs in PythonDotNet RC2

Dag Nummedal
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 ([hidden email])
_________________________________________________
Python.NET mailing list - [hidden email]
http://mail.python.org/mailman/listinfo/pythondotnet