[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