| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- //
- // 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.Configuration;
- using System.Xml;
- using System.Collections;
- using System.Net;
- using System.IO;
- #if NUNIT
- using NUnit.Framework;
- using NUnit.Core;
- #endif
- namespace MonoTests.stand_alone.WebHarness
- {
- public class Harness
- {
- static string _ignoreListFile = "";
- static string _catalogFile = "";
- static string _outputPath = "";
- static string _baseUrlExp = "";
- static string _baseUrlTst = "";
- static bool _disableAlmost = false;
- static bool _runExcluded = false;
- static void Main(string[] args)
- {
- ParseCommandLineAgrs(args);
- if (_baseUrlExp != "")
- {
- //baseUrl = "http://localhost:80/System_Web_dll";
- CreateExpectedResults(_baseUrlExp);
- }
- if (_baseUrlTst != "")
- {
- //baseUrl = "http://localhost:8080/System_Web_dll";
- RunTests(_baseUrlTst);
- }
- }
- #if NUNIT
- [Suite]
- static public TestSuite Suite
- {
- get
- {
- ParseAppConfigFile();
- TestSuite suite = new TestSuite ("SystemWebTests");
- TestsCatalog tc = new TestsCatalog();
- foreach (TestInfo ti in tc)
- {
- suite.Add(new SingleWebTest(ti, _baseUrlTst));
- }
-
- return suite;
- }
- }
- #endif
- #region "Cmd line"
- static string GetParameterByName(string name, string[] args)
- {
- int i = Array.IndexOf(args, name);
- if (i >= 0)
- {
- if (i < args.Length - 1)
- {
- return args[i+1];
- }
- }
- return "";
- }
- static bool IsParameterSet(string name, string[] args)
- {
- int i = Array.IndexOf(args, name);
- return (i >= 0);
- }
- static void ParseAppConfigFile()
- {
- _disableAlmost = Convert.ToBoolean(ConfigurationSettings.AppSettings["DisableAlmost"]);
- _runExcluded = Convert.ToBoolean(ConfigurationSettings.AppSettings["RunExcluded"]);
- _ignoreListFile = ConfigurationSettings.AppSettings["AlmostList"];
- _catalogFile = ConfigurationSettings.AppSettings["TestCatalog"];
- _outputPath = ConfigurationSettings.AppSettings["OutputDir"];
- if ((!_outputPath.EndsWith("\\")) && (!_outputPath.EndsWith("/")))
- {
- _outputPath += Path.DirectorySeparatorChar;
- }
- _baseUrlExp = ConfigurationSettings.AppSettings["ExpResBaseUrl"];
- _baseUrlTst = ConfigurationSettings.AppSettings["TestBaseUrl"];
- }
- static void ParseCommandLineAgrs(string [] args)
- {
- _disableAlmost = IsParameterSet("-na", args);
- _runExcluded = IsParameterSet("-x", args);
-
- // specifies the almost config xml file
- // default is almost_config.xml in current folder
- _ignoreListFile = GetParameterByName("-i", args);
- if (_ignoreListFile == "")
- {
- _ignoreListFile = "almost_config.xml";
- }
-
- // specifies tests catalog xml file
- // default is test_catalog.xml in current folder
- _catalogFile = GetParameterByName("-c", args);
- if (_catalogFile == "")
- {
- _catalogFile = "test_catalog.xml";
- }
-
- // specifies the folder where expected results will be stored
- // by default is current folder
- _outputPath = GetParameterByName("-o", args);
- if (_outputPath != "")
- {
- if ((!_outputPath.EndsWith("\\")) && (!_outputPath.EndsWith("/")))
- {
- _outputPath += Path.DirectorySeparatorChar;
- }
- }
- // specifies the base url for all tests
- // no default value
- _baseUrlExp = GetParameterByName("-e", args);
- _baseUrlTst = GetParameterByName("-t", args);
- }
- #endregion
- #region "Tests run routines"
- static void CreateExpectedResults(string baseUrl)
- {
- TestsCatalog tc = new TestsCatalog(_catalogFile, _runExcluded);
- HtmlDiff wt = new HtmlDiff();
- wt.TestsBaseUrl = baseUrl;
- wt.IgnoreListFile = _ignoreListFile;
- if ((_outputPath != "") && (!Directory.Exists(_outputPath)))
- {
- Directory.CreateDirectory(_outputPath);
- }
- Console.WriteLine("Running expected results...");
- foreach (TestInfo ti in tc)
- {
- Console.WriteLine("Running... " + ti.Url);
- XmlDocument d = wt.GetTestXml( ti );
- d.Save(_outputPath + ti.Url.Replace("/", "_") + ".xml");
- }
- }
- static void RunTests(string baseUrl)
- {
- TestsCatalog tc = new TestsCatalog(_catalogFile, _runExcluded);
- foreach (TestInfo ti in tc)
- {
- try {
- RunSingleTest(baseUrl, ti);
- }
- catch (Exception e) {
- Console.WriteLine(e.Message);
- }
- }
- }
- public static bool RunSingleTest(string baseUrl, TestInfo ti)
- {
- HtmlDiff wt = new HtmlDiff();
- wt.TestsBaseUrl = baseUrl;
- wt.IgnoreListFile = _ignoreListFile;
- XmlDocument d1 = new XmlDocument();
- d1.Load(_outputPath + ti.Url.Replace("/", "_") + ".xml");
-
- XmlDocument d2 = wt.GetTestXml( ti );
- bool fp = wt.XmlCompare(d1, d2, _disableAlmost);
- if (fp == false) {
- throw new Exception("Url: " + ti.Url + "\nCompare failed:\n" + wt.CompareStatus + "\n");
- }
- return fp;
- }
- #endregion
- }
- #region "NUnit"
- #if NUNIT
- public class SingleWebTest : NUnit.Core.TestCase
- {
- TestInfo _testInfo = null;
- string _baseUrl = "";
- public SingleWebTest (TestInfo testInfo, string baseUrl) : base (null, testInfo.Url)
- {
- _testInfo = testInfo;
- _baseUrl = baseUrl;
- }
- public override void Run (TestCaseResult res)
- {
- try
- {
- Harness.RunSingleTest(_baseUrl, _testInfo);
- }
- catch (Exception e)
- {
- res.Failure(e.Message, null);
- return;
- }
- res.Success();
- }
- }
- #endif
- #endregion
- }
|