[Mono-bugs] [Bug 607832] New: Different behaviour of configuration classes on .NET and MONO

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri May 21 07:25:52 EDT 2010


http://bugzilla.novell.com/show_bug.cgi?id=607832

http://bugzilla.novell.com/show_bug.cgi?id=607832#c0


           Summary: Different behaviour of configuration classes on .NET
                    and MONO
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 2.4.x
          Platform: x86
        OS/Version: Windows XP
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Configuration
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: Dmytro.S.Velychko at scarabworks.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


Created an attachment (id=363780)
 --> (http://bugzilla.novell.com/attachment.cgi?id=363780)
Unit tests

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.3)
Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729; .NET4.0E)

Attached unit tests reproduces tow bugs
1.TestCustomConfigurationSectionValidSection. This test contains code, that
uses dynamic configuration property creation.
2.TestCustomConfigurationSectionInvalidSection this test uses same code, but
it's "negative" test for dynamic configuration property creation.

P.S.
As I see first test failed because Microsoft .NET checks for properties to
process in beginning of DeserializeElement 
<code desc="code from Reflector"> 

public abstract class ConfigurationElement{
    .....
    protected internal virtual void DeserializeElement(XmlReader reader, bool
serializeCollectionKey)
    {
        ConfigurationPropertyCollection properties = this.Properties;
        ......
              while (reader.MoveToNextAttribute())
            {
            string name = reader.Name;
            ......
            ConfigurationProperty prop = (properties != null) ?
properties[name] : null;
            ......

        }
        ......
    }
    ......
}

</code> 

Mono uses cached list of properties. If cache was create before properties was
added - test failed.
<code desc="code from ConfigurationElement.cs">

public abstract class ConfigurationElement
{
    .....
    protected internal virtual void DeserializeElement (XmlReader reader, bool
serializeCollectionKey)
    {
        Hashtable readProps = new Hashtable ();

        reader.MoveToContent ();
        while (reader.MoveToNextAttribute ())
        {
            PropertyInformation prop = ElementInformation.Properties
[reader.LocalName];
        .....
        }
        ....
    }
    .....
}
</code>

As I see second test failed because of Microsoft .NET runtime wraps all
exception during section creation with 

<code desc="code from Reflector">
internal static class ExceptionUtil{
    ...

    internal static ConfigurationErrorsException WrapAsConfigException(string
outerMessage, Exception e, string filename, int line)
    {
        ConfigurationErrorsException exception = e as
ConfigurationErrorsException;
        if (exception != null)
        {
            return exception;
        }
        ConfigurationException exception2 = e as ConfigurationException;
        if (exception2 != null)
        {
            return new ConfigurationErrorsException(exception2);
        }
        XmlException inner = e as XmlException;
        if (inner != null)
        {
            if (inner.LineNumber != 0)
            {
                line = inner.LineNumber;
            }
            return new ConfigurationErrorsException(inner.Message, inner,
filename, line);
        }
        if (e != null)
        {
            return new
ConfigurationErrorsException(SR.GetString("Wrapped_exception_message", new
object[] { outerMessage, e.Message }), e, filename, line);
        }
            return new
ConfigurationErrorsException(SR.GetString("Wrapped_exception_message", new
object[] { outerMessage, NoExceptionInformation }), filename, line);
    }
    ...
}

</code>




Reproducible: Always

Steps to Reproduce:
1.Run unit tests

Actual Results:  
Tests failed on Mono 2.6.4

Expected Results:  
Tests passed on Mono 2.6.4

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list