Author: andrews
Date: 2006-05-17 10:56:26 -0400 (Wed, 17 May 2006)
New Revision: 60781
Added:
trunk/mcs/class/System.Web/Test/mainsoft/MainsoftWebTest/nunitweb_config.xml
Modified:
trunk/mcs/class/System.Web/Test/mainsoft/MainsoftWebTest/ChangeLog
trunk/mcs/class/System.Web/Test/mainsoft/MainsoftWebTest/NunitWebTest.cs
Log:
* nunitweb_config.xml: similar to almost_config.xml but ignores more stuff
* NunitWebTest.cs: use nunit_config.xml and fallback on XmlException
Modified: trunk/mcs/class/System.Web/Test/mainsoft/MainsoftWebTest/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/Test/mainsoft/MainsoftWebTest/ChangeLog
2006-05-17 14:52:15 UTC (rev 60780)
+++ trunk/mcs/class/System.Web/Test/mainsoft/MainsoftWebTest/ChangeLog
2006-05-17 14:56:26 UTC (rev 60781)
@@ -1,3 +1,8 @@
+2006-05-17 Andrew Skiba <[EMAIL PROTECTED]>
+
+ * nunitweb_config.xml: similar to almost_config.xml but ignores more
stuff
+ * NunitWebTest.cs: use nunit_config.xml and fallback on XmlException
+
2006-03-27 Vladimir Krasnov <[EMAIL PROTECTED]>
* test_catalog.xml: fixed not working tests
Modified:
trunk/mcs/class/System.Web/Test/mainsoft/MainsoftWebTest/NunitWebTest.cs
===================================================================
--- trunk/mcs/class/System.Web/Test/mainsoft/MainsoftWebTest/NunitWebTest.cs
2006-05-17 14:52:15 UTC (rev 60780)
+++ trunk/mcs/class/System.Web/Test/mainsoft/MainsoftWebTest/NunitWebTest.cs
2006-05-17 14:56:26 UTC (rev 60781)
@@ -1,71 +1,72 @@
-//
-// Authors:
-// Rafael Mizrahi <[EMAIL PROTECTED]>
-// Erez Lotan <[EMAIL PROTECTED]>
-// Vladimir Krasnov <[EMAIL PROTECTED]>
-//
-//
-// Copyright (c) 2002-2005 Mainsoft Corporation.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.IO;
-using System.Xml;
-using System.Net;
-using System.Text;
-using System.Collections;
-
-namespace MonoTests.stand_alone.WebHarness
-{
- public abstract class XmlComparableTest
- {
-
- public abstract bool XmlCompare(XmlDocument d1, XmlDocument d2,
bool ignoreAlmost);
- }
-
- public class WebTest : XmlComparableTest
+//
+// Authors:
+// Rafael Mizrahi <[EMAIL PROTECTED]>
+// Erez Lotan <[EMAIL PROTECTED]>
+// Vladimir Krasnov <[EMAIL PROTECTED]>
+//
+//
+// Copyright (c) 2002-2005 Mainsoft Corporation.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.IO;
+using System.Xml;
+using System.Net;
+using System.Text;
+using System.Collections;
+using System.Reflection;
+
+namespace MonoTests.stand_alone.WebHarness
+{
+ public abstract class XmlComparableTest
{
+
+ public abstract bool XmlCompare(XmlDocument d1, XmlDocument d2,
bool ignoreAlmost);
+ }
+
+ public class WebTest : XmlComparableTest
+ {
public const string BEGIN_TAG = "begint";
- public const string END_TAG = "endt";
-
- private XmlDocument _xmlIgnoreList = null;
+ public const string END_TAG = "endt";
+
+ private XmlDocument _xmlIgnoreList = null;
private string _compareStatus = "";
private string _ignoreListFile = "";
- public WebTest()
- {
- }
-
- public string IgnoreListFile
- {
- get {return _ignoreListFile;}
- set {_ignoreListFile = value;}
- }
- public string CompareStatus
- {
- get {return _compareStatus.ToString();}
+ public WebTest()
+ {
}
+ public string IgnoreListFile
+ {
+ get {return _ignoreListFile;}
+ set {_ignoreListFile = value;}
+ }
+ public string CompareStatus
+ {
+ get {return _compareStatus.ToString();}
+ }
+
public static string GetControlFromPageHtml (string str)
{
StringBuilder sb = new StringBuilder ();
@@ -82,181 +83,179 @@
XmlDocument dr = new XmlDocument ();
dr.LoadXml (helper.HtmltoXml (derived));
return helper.XmlCompare (or, dr, false);
- }
-
- public override bool XmlCompare(XmlDocument d1, XmlDocument d2,
bool ignoreAlmost)
- {
+ }
+
+ public override bool XmlCompare(XmlDocument d1, XmlDocument d2,
bool ignoreAlmost)
+ {
XmlComparer comparer = new XmlComparer();
- if (ignoreAlmost == false)
- {
- DoAlmost(d1);
- DoAlmost(d2);
- }
- bool c = comparer.AreEqual(d1, d2);
- _compareStatus = comparer.LastCompare;
- return c;
- }
-
- public string HtmltoXml(string html)
- {
- HtmlAgilityPack.HtmlDocument doc = new
HtmlAgilityPack.HtmlDocument();
- doc.LoadHtml(html);
-
- StringBuilder fixedxml = new StringBuilder();
- StringWriter sw = new StringWriter(fixedxml);
-
- try
- {
- StringBuilder tempxml = new StringBuilder();
- StringWriter tsw = new StringWriter(tempxml);
-
- doc.OptionOutputAsXml = true;
- doc.Save(tsw);
-
- // fix style attribute
- // the reason is that style attribute
name-value pairs come in different order
- // in .NET and GH
- // Here I will sort the values of style
attribute
- XmlDocument tempDoc = new XmlDocument();
- tempDoc.LoadXml(tempxml.ToString());
-
- XmlNodeList allNodes =
tempDoc.SelectNodes("//*");
- foreach (XmlNode n in allNodes)
- {
- if (n.Attributes["style"] != null)
- {
- string att =
n.Attributes["style"].Value;
- string [] style = att.Trim(new
char[]{' ', ';'}).Split(';');
-
- for (int styleIndex=0;
styleIndex<style.Length; styleIndex++)
- {
- style[styleIndex] =
FixStyleNameValue(style[styleIndex]);
- }
- Array.Sort(style);
- n.Attributes["style"].Value =
string.Join(";", style);
- }
- }
- tempDoc.Save(sw);
- }
- catch (Exception)
- {
- Console.WriteLine("Error parsing html
response...");
- Console.WriteLine("Test case aborted");
- return "<TestCaseAborted></TestCaseAborted>";
- }
- return fixedxml.ToString();
- }
-
- private string FixStyleNameValue(string nameValue)
- {
- string [] nv = nameValue.Split(':');
- // value may contain spaces in case of
- // multiple values for one key
- string [] nvalue = nv[1].Trim().Split(' ');
- Array.Sort(nvalue);
- nv[1] = string.Join(" ", nvalue);
- return nv[0].Trim().ToLower() + ":" +
nv[1].Trim().ToLower();
- }
-
- private void DoAlmost(XmlDocument xmlDocument)
- {
- XmlNode XmlIgnoreNode;
- IEnumerator xmlIgnoreEnum;
-
- if (_xmlIgnoreList == null)
- {
+ if (ignoreAlmost == false)
+ {
+ DoAlmost(d1);
+ DoAlmost(d2);
+ }
+ bool c = comparer.AreEqual(d1, d2);
+ _compareStatus = comparer.LastCompare;
+ return c;
+ }
+
+ public string HtmltoXml(string html)
+ {
+ HtmlAgilityPack.HtmlDocument doc = new
HtmlAgilityPack.HtmlDocument();
+ doc.LoadHtml(html);
+
+ StringBuilder fixedxml = new StringBuilder();
+ StringWriter sw = new StringWriter(fixedxml);
+
+ try
+ {
+ StringBuilder tempxml = new StringBuilder();
+ StringWriter tsw = new StringWriter(tempxml);
+
+ doc.OptionOutputAsXml = true;
+ doc.Save(tsw);
+
+ // fix style attribute
+ // the reason is that style attribute
name-value pairs come in different order
+ // in .NET and GH
+ // Here I will sort the values of style
attribute
+ XmlDocument tempDoc = new XmlDocument();
+ tempDoc.LoadXml(tempxml.ToString());
+
+ XmlNodeList allNodes =
tempDoc.SelectNodes("//*");
+ foreach (XmlNode n in allNodes)
+ {
+ if (n.Attributes["style"] != null)
+ {
+ string att =
n.Attributes["style"].Value;
+ string [] style = att.Trim(new
char[]{' ', ';'}).Split(';');
+
+ for (int styleIndex=0;
styleIndex<style.Length; styleIndex++)
+ {
+ style[styleIndex] =
FixStyleNameValue(style[styleIndex]);
+ }
+ Array.Sort(style);
+ n.Attributes["style"].Value =
string.Join(";", style);
+ }
+ }
+ tempDoc.Save(sw);
+ }
+ catch (XmlException e)
+ {
+ return "<Exception><![CDATA["+e.Message
+"]]></Exception>";
+ }
+ return fixedxml.ToString();
+ }
+
+ private string FixStyleNameValue(string nameValue)
+ {
+ string [] nv = nameValue.Split(':');
+ // value may contain spaces in case of
+ // multiple values for one key
+ string [] nvalue = nv[1].Trim().Split(' ');
+ Array.Sort(nvalue);
+ nv[1] = string.Join(" ", nvalue);
+ return nv[0].Trim().ToLower() + ":" +
nv[1].Trim().ToLower();
+ }
+
+ private void DoAlmost(XmlDocument xmlDocument)
+ {
+ XmlNode XmlIgnoreNode;
+ IEnumerator xmlIgnoreEnum;
+
+ if (_xmlIgnoreList == null)
+ {
_xmlIgnoreList = new XmlDocument();
string xml;
- using (Stream source =
System.Reflection.Assembly.GetExecutingAssembly()
- .GetManifestResourceStream
("HTMLComparer.almost_config.xml")) {
+ using (Stream source =
Assembly.GetExecutingAssembly()
+ .GetManifestResourceStream
("nunitweb_config.xml")) {
using (StreamReader sr = new
StreamReader (source))
xml = sr.ReadToEnd ();
}
- _xmlIgnoreList.LoadXml (xml);
- }
-
- // Remove by Id or Name
- // search by tag and if id or name match, remove all
attributes
- // must be the first almost since the following almost
delete the id and name
- xmlIgnoreEnum =
_xmlIgnoreList.SelectSingleNode("Almost/RemoveById").GetEnumerator();
- while (xmlIgnoreEnum.MoveNext())
- {
- XmlNodeList DocNodeList;
- XmlIgnoreNode = (XmlNode)xmlIgnoreEnum.Current;
- DocNodeList =
xmlDocument.GetElementsByTagName("*");
- if (DocNodeList != null)
- {
- foreach (XmlElement tmpXmlElement in
DocNodeList)
- {
- foreach (XmlAttribute
tmpIgnoreAttr in XmlIgnoreNode.Attributes)
- {
- if
(tmpXmlElement.Name.ToLower() == XmlIgnoreNode.Name.ToLower())
- {
- if
(tmpXmlElement.Attributes[tmpIgnoreAttr.Name] != null )
- {
- if
(tmpXmlElement.Attributes[tmpIgnoreAttr.Name].Value.ToLower() ==
tmpIgnoreAttr.Value.ToLower())
- {
-
tmpXmlElement.RemoveAllAttributes();
- }
- }
- }
- }
- }
- }
- }
- // remove ignored attributes
- // search for tag and remove it's attributes
- xmlIgnoreEnum =
_xmlIgnoreList.SelectSingleNode("Almost/IgnoreList").GetEnumerator();
//FirstChild.GetEnumerator
- while (xmlIgnoreEnum.MoveNext())
- {
- XmlIgnoreNode = (XmlNode)xmlIgnoreEnum.Current;
- XmlNodeList DocNodeList;
- //clean specific element
-
- DocNodeList =
xmlDocument.GetElementsByTagName("*");
- if (DocNodeList != null)
- {
- foreach (XmlElement tmpXmlElement in
DocNodeList)
- {
- if
(tmpXmlElement.Name.ToLower() == XmlIgnoreNode.Name.ToLower())
- {
- foreach (XmlAttribute
tmpIgnoreAttr in XmlIgnoreNode.Attributes)
- {
-
tmpXmlElement.RemoveAttribute(tmpIgnoreAttr.Name);
- }
- }
- }
- }
- }
-
- // clean javascript attribute value
- xmlIgnoreEnum =
_xmlIgnoreList.SelectSingleNode("Almost/CleanJavaScriptValueList").GetEnumerator();
//FirstChild.GetEnumerator
- while (xmlIgnoreEnum.MoveNext())
- {
- XmlIgnoreNode = (XmlNode)xmlIgnoreEnum.Current;
- XmlNodeList DocNodeList;
- //clean Java Script attribute values
- DocNodeList =
xmlDocument.GetElementsByTagName("*");
- if (DocNodeList != null)
- {
- foreach (XmlElement tmpXmlElement in
DocNodeList)
- {
- if
(tmpXmlElement.Name.ToLower() == XmlIgnoreNode.Name.ToLower())
- {
- foreach (XmlAttribute
tmpIgnoreAttr in XmlIgnoreNode.Attributes)
- {
- if
(tmpXmlElement.Attributes[tmpIgnoreAttr.Name] != null )
- {
- if
(tmpXmlElement.Attributes[tmpIgnoreAttr.Name].Value.ToLower().IndexOf("javascript")
>= 0 )
- {
-
tmpXmlElement.SetAttribute(tmpIgnoreAttr.Name, "");
- }
- }
- }
- }
- }
- }
- }
- }
- }
-}
+ _xmlIgnoreList.LoadXml (xml);
+ }
+
+ // Remove by Id or Name
+ // search by tag and if id or name match, remove all
attributes
+ // must be the first almost since the following almost
delete the id and name
+ xmlIgnoreEnum =
_xmlIgnoreList.SelectSingleNode("Almost/RemoveById").GetEnumerator();
+ while (xmlIgnoreEnum.MoveNext())
+ {
+ XmlNodeList DocNodeList;
+ XmlIgnoreNode = (XmlNode)xmlIgnoreEnum.Current;
+ DocNodeList =
xmlDocument.GetElementsByTagName("*");
+ if (DocNodeList != null)
+ {
+ foreach (XmlElement tmpXmlElement in
DocNodeList)
+ {
+ foreach (XmlAttribute
tmpIgnoreAttr in XmlIgnoreNode.Attributes)
+ {
+ if
(tmpXmlElement.Name.ToLower() == XmlIgnoreNode.Name.ToLower())
+ {
+ if
(tmpXmlElement.Attributes[tmpIgnoreAttr.Name] != null )
+ {
+ if
(tmpXmlElement.Attributes[tmpIgnoreAttr.Name].Value.ToLower() ==
tmpIgnoreAttr.Value.ToLower())
+ {
+
tmpXmlElement.RemoveAllAttributes();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ // remove ignored attributes
+ // search for tag and remove it's attributes
+ xmlIgnoreEnum =
_xmlIgnoreList.SelectSingleNode("Almost/IgnoreList").GetEnumerator();
//FirstChild.GetEnumerator
+ while (xmlIgnoreEnum.MoveNext())
+ {
+ XmlIgnoreNode = (XmlNode)xmlIgnoreEnum.Current;
+ XmlNodeList DocNodeList;
+ //clean specific element
+
+ DocNodeList =
xmlDocument.GetElementsByTagName("*");
+ if (DocNodeList != null)
+ {
+ foreach (XmlElement tmpXmlElement in
DocNodeList)
+ {
+ if
(tmpXmlElement.Name.ToLower() == XmlIgnoreNode.Name.ToLower())
+ {
+ foreach (XmlAttribute
tmpIgnoreAttr in XmlIgnoreNode.Attributes)
+ {
+
tmpXmlElement.RemoveAttribute(tmpIgnoreAttr.Name);
+ }
+ }
+ }
+ }
+ }
+
+ // clean javascript attribute value
+ xmlIgnoreEnum =
_xmlIgnoreList.SelectSingleNode("Almost/CleanJavaScriptValueList").GetEnumerator();
//FirstChild.GetEnumerator
+ while (xmlIgnoreEnum.MoveNext())
+ {
+ XmlIgnoreNode = (XmlNode)xmlIgnoreEnum.Current;
+ XmlNodeList DocNodeList;
+ //clean Java Script attribute values
+ DocNodeList =
xmlDocument.GetElementsByTagName("*");
+ if (DocNodeList != null)
+ {
+ foreach (XmlElement tmpXmlElement in
DocNodeList)
+ {
+ if
(tmpXmlElement.Name.ToLower() == XmlIgnoreNode.Name.ToLower())
+ {
+ foreach (XmlAttribute
tmpIgnoreAttr in XmlIgnoreNode.Attributes)
+ {
+ if
(tmpXmlElement.Attributes[tmpIgnoreAttr.Name] != null )
+ {
+ if
(tmpXmlElement.Attributes[tmpIgnoreAttr.Name].Value.ToLower().IndexOf("javascript")
>= 0 )
+ {
+
tmpXmlElement.SetAttribute(tmpIgnoreAttr.Name, "");
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
Added:
trunk/mcs/class/System.Web/Test/mainsoft/MainsoftWebTest/nunitweb_config.xml
===================================================================
---
trunk/mcs/class/System.Web/Test/mainsoft/MainsoftWebTest/nunitweb_config.xml
2006-05-17 14:52:15 UTC (rev 60780)
+++
trunk/mcs/class/System.Web/Test/mainsoft/MainsoftWebTest/nunitweb_config.xml
2006-05-17 14:56:26 UTC (rev 60781)
@@ -0,0 +1,36 @@
+<Almost>
+ <IgnoreList>
+ <div id="" visible="" name="" onmouseover="" onmouseout=""
style="" />"
+ <span id="" visible="" name="" src=""/>
+ <input id="" visible="" name="" __EVENTARGUMENT=""
__EVENTTARGET="" __VIEWSTATE="" causesvalidation=""/>
+ <table id="" visible="" name=""/>
+ <td id="" visible="" name=""/>
+ <th id="" visible="" name=""/>
+ <tr id="" visible="" name=""/>
+ <table id="" visible="" name=""/>
+ <img id="" visible="" name="" disabled="" src=""/>
+ <a id="" visible="" name="" href=""/>
+ <select id="" visible="" name=""/>
+ <textarea id="" visible="" name=""/>
+ <button id="" visible="" name="" causesvalidation=""/>
+ <p visible=""/>
+ <form visible=""/>
+ <label for=""/>
+ <select language="" onchange=""/>
+ <input language="" onchange=""/>
+ <table bordercolor=""/>
+ <tr onmouseover="" onmouseout="" onkeyup="" id="" />
+ </IgnoreList>
+
+ <!--delete Java Script attribute value-->
+ <CleanJavaScriptValueList>
+ <a href=""/>
+ <a onclick=""/>
+ </CleanJavaScriptValueList>
+
+ <!--remove tags by attribute Id or name-->
+ <RemoveById>
+ <input id="__VIEWSTATE" name="__VIEWSTATE"/>
+ </RemoveById>
+</Almost>
+
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches