Making a start on adding Selenium integration/UI tests for the backoffice
This commit is contained in:
@@ -2,6 +2,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Umbraco.Core.Events;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models.Rdbms;
|
||||
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
|
||||
using Umbraco.Core.Persistence.SqlSyntax;
|
||||
@@ -54,15 +55,39 @@ namespace Umbraco.Core.Persistence.Migrations.Initial
|
||||
{34, typeof (TaskTypeDto)},
|
||||
{35, typeof (TaskDto)},
|
||||
{36, typeof (ContentType2ContentTypeDto)},
|
||||
{
|
||||
37,
|
||||
typeof (ContentTypeAllowedContentTypeDto)
|
||||
},
|
||||
{37, typeof (ContentTypeAllowedContentTypeDto)},
|
||||
{38, typeof (User2AppDto)},
|
||||
{39, typeof (User2NodeNotifyDto)},
|
||||
{40, typeof (User2NodePermissionDto)}
|
||||
};
|
||||
#endregion
|
||||
/// <summary>
|
||||
/// Drops all Umbraco tables in the db
|
||||
/// </summary>
|
||||
internal void UninstallDatabaseSchema()
|
||||
{
|
||||
LogHelper.Info<DatabaseSchemaCreation>("Start UninstallDatabaseSchema");
|
||||
|
||||
foreach (var item in OrderedTables.OrderByDescending(x => x.Key))
|
||||
{
|
||||
var tableNameAttribute = item.Value.FirstAttribute<TableNameAttribute>();
|
||||
|
||||
string tableName = tableNameAttribute == null ? item.Value.Name : tableNameAttribute.Value;
|
||||
|
||||
LogHelper.Info<DatabaseSchemaCreation>("Uninstall" + tableName);
|
||||
|
||||
try
|
||||
{
|
||||
_database.DropTable(tableName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//swallow this for now, not sure how best to handle this with diff databases... though this is internal
|
||||
// and only used for unit tests. If this fails its because the table doesn't exist... generally!
|
||||
LogHelper.Error<DatabaseSchemaCreation>("Could not drop table " + tableName, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public DatabaseSchemaCreation(Database database)
|
||||
{
|
||||
|
||||
155
src/Umbraco.Tests/Integration/CreateContent.cs
Normal file
155
src/Umbraco.Tests/Integration/CreateContent.cs
Normal file
@@ -0,0 +1,155 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using NUnit.Framework;
|
||||
using OpenQA.Selenium;
|
||||
using OpenQA.Selenium.Interactions;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
|
||||
namespace Umbraco.Tests.Integration
|
||||
{
|
||||
[Ignore("We don't want to run Selenium tests on TeamCity")]
|
||||
[TestFixture]
|
||||
public class CreateContent : BaseSeleniumTest
|
||||
{
|
||||
[SetUp]
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
base.TearDown();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Install_StarterKit_And_Create_Textpage()
|
||||
{
|
||||
// Login to Umbraco
|
||||
Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/login.aspx?redir=");
|
||||
Driver.FindElement(By.Id("lname")).Clear();
|
||||
Driver.FindElement(By.Id("lname")).SendKeys("admin");
|
||||
Driver.FindElement(By.Id("passw")).Clear();
|
||||
Driver.FindElement(By.Id("passw")).SendKeys("test");
|
||||
Driver.FindElement(By.Id("Button1")).Click();
|
||||
Thread.Sleep(500);
|
||||
|
||||
// Install starter kit
|
||||
Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/umbraco.aspx#developer");
|
||||
Thread.Sleep(2000);
|
||||
|
||||
var builder = new Actions(Driver);
|
||||
var packagesNode = Driver.FindElement(By.XPath("//*[@id='init'][3]"));
|
||||
builder.MoveToElement(packagesNode).DoubleClick().Build().Perform();
|
||||
Thread.Sleep(500);
|
||||
|
||||
var installStarterKitNode = Driver.FindElement(By.XPath("(//li[@id='-1']/a/div)[4]"));
|
||||
builder.MoveToElement(installStarterKitNode).Click().Build().Perform();
|
||||
Thread.Sleep(500);
|
||||
|
||||
var rightFrame = Driver.FindElement(By.XPath("//*[@id='right']"));
|
||||
Driver.SwitchTo().Frame(rightFrame);
|
||||
Thread.Sleep(500);
|
||||
|
||||
var simpleKit = Driver.FindElement(By.XPath("/html/body/form/div[2]/div[2]/div/div/div/div/div[4]/nav/ul/li[1]/a"));
|
||||
builder.MoveToElement(simpleKit).Click().Build().Perform();
|
||||
Thread.Sleep(6000);
|
||||
|
||||
// Create new content
|
||||
Driver.SwitchTo().DefaultContent();
|
||||
Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/umbraco.aspx#content");
|
||||
Thread.Sleep(500);
|
||||
|
||||
var contentNode = Driver.FindElement(By.XPath("//*[@id = 'JTree_TreeContainer']/div/ul/li/ul/li/a/div"));
|
||||
builder.MoveToElement(contentNode).ContextClick().Build().Perform();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
var createButton = Driver.FindElement(By.XPath("//*[@id = 'jstree-contextmenu']/li[1]/a/span/div[2]"));
|
||||
createButton.Click();
|
||||
Thread.Sleep(500);
|
||||
|
||||
var umbracoModalBoxIframe = Driver.FindElement(By.CssSelector(".umbModalBoxIframe"));
|
||||
Driver.SwitchTo().Frame(umbracoModalBoxIframe);
|
||||
|
||||
var createTextBox = Driver.FindElement(By.XPath("//input[@type='text'][1]"));
|
||||
createTextBox.Clear();
|
||||
createTextBox.SendKeys("Test Page");
|
||||
|
||||
var submitButton = Driver.FindElement(By.XPath("//input[@type='submit'][1]"));
|
||||
submitButton.Click();
|
||||
Thread.Sleep(2000);
|
||||
|
||||
Driver.SwitchTo().Frame(rightFrame);
|
||||
var saveAndPublishButton = Driver.FindElement(By.XPath("//*[@id='body_TabView1_tab01layer_publish']"));
|
||||
saveAndPublishButton.Click();
|
||||
Thread.Sleep(2000);
|
||||
|
||||
var contentArea = Driver.FindElement(By.XPath("//*[@id='body_TabView1']"));
|
||||
Assert.IsNotNull(contentArea);
|
||||
Thread.Sleep(500);
|
||||
|
||||
// Perform delete
|
||||
Driver.SwitchTo().DefaultContent();
|
||||
var installingModulesNode = Driver.FindElement(By.XPath("//*[@id='1052']/a/div"));
|
||||
builder.MoveToElement(installingModulesNode).ContextClick().Build().Perform();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
var deleteButton = Driver.FindElement(By.CssSelector(".sprDelete"));
|
||||
deleteButton.Click();
|
||||
var alert = Driver.SwitchTo().Alert();
|
||||
alert.Accept();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
// Perform move
|
||||
var goFurtherNode = Driver.FindElement(By.XPath("//*[@id='1053']/a/div"));
|
||||
builder.MoveToElement(goFurtherNode).ContextClick().Build().Perform();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
var moveButton = Driver.FindElement(By.CssSelector(".sprMove"));
|
||||
moveButton.Click();
|
||||
Thread.Sleep(2000);
|
||||
|
||||
umbracoModalBoxIframe = Driver.FindElement(By.CssSelector(".umbModalBoxIframe"));
|
||||
Driver.SwitchTo().Frame(umbracoModalBoxIframe);
|
||||
|
||||
var rootNode = Driver.FindElement(By.XPath("//*[@id='1051']"));
|
||||
builder.MoveToElement(rootNode).DoubleClick().Build().Perform();
|
||||
Thread.Sleep(500);
|
||||
var gettinStartedNode = Driver.FindElement(By.XPath("//*[@id='1055']/a/div"));
|
||||
builder.MoveToElement(gettinStartedNode).Click().Build().Perform();
|
||||
Thread.Sleep(500);
|
||||
submitButton = Driver.FindElement(By.XPath("//input[@type='submit'][1]"));
|
||||
builder.MoveToElement(submitButton).Click().Build().Perform();
|
||||
Thread.Sleep(2000);
|
||||
var closeLink = Driver.FindElement(By.XPath("/html/body/form/div[2]/p[2]/a"));
|
||||
builder.MoveToElement(closeLink).Click().Build().Perform();
|
||||
|
||||
Driver.SwitchTo().DefaultContent();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
// Perform copy
|
||||
var gettingStartedNode = Driver.FindElement(By.XPath("//*[@id='1054']/a/div"));
|
||||
builder.MoveToElement(gettingStartedNode).ContextClick().Build().Perform();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
var copyButton = Driver.FindElement(By.CssSelector(".sprCopy"));
|
||||
copyButton.Click();
|
||||
Thread.Sleep(2000);
|
||||
|
||||
umbracoModalBoxIframe = Driver.FindElement(By.CssSelector(".umbModalBoxIframe"));
|
||||
Driver.SwitchTo().Frame(umbracoModalBoxIframe);
|
||||
|
||||
rootNode = Driver.FindElement(By.XPath("//*[@id='1051']"));
|
||||
builder.MoveToElement(rootNode).DoubleClick().Build().Perform();
|
||||
Thread.Sleep(500);
|
||||
|
||||
submitButton = Driver.FindElement(By.XPath("//input[@type='submit'][1]"));
|
||||
builder.MoveToElement(submitButton).Click().Build().Perform();
|
||||
Thread.Sleep(2000);
|
||||
closeLink = Driver.FindElement(By.XPath("/html/body/form/div[2]/p[2]/a"));
|
||||
builder.MoveToElement(closeLink).Click().Build().Perform();
|
||||
}
|
||||
}
|
||||
}
|
||||
145
src/Umbraco.Tests/Integration/InstallPackage.cs
Normal file
145
src/Umbraco.Tests/Integration/InstallPackage.cs
Normal file
@@ -0,0 +1,145 @@
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using NUnit.Framework;
|
||||
using OpenQA.Selenium;
|
||||
using OpenQA.Selenium.Interactions;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
|
||||
namespace Umbraco.Tests.Integration
|
||||
{
|
||||
[Ignore("We don't want to run Selenium tests on TeamCity")]
|
||||
[TestFixture]
|
||||
public class InstallPackage : BaseSeleniumTest
|
||||
{
|
||||
[SetUp]
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
base.TearDown();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Install_Courier_Package()
|
||||
{
|
||||
Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/login.aspx?redir=");
|
||||
Driver.FindElement(By.Id("lname")).Clear();
|
||||
Driver.FindElement(By.Id("lname")).SendKeys("admin");
|
||||
Driver.FindElement(By.Id("passw")).Clear();
|
||||
Driver.FindElement(By.Id("passw")).SendKeys("test");
|
||||
Driver.FindElement(By.Id("Button1")).Click();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/umbraco.aspx#developer");
|
||||
Thread.Sleep(2000);
|
||||
|
||||
var builder = new Actions(Driver);
|
||||
var packagesNode = Driver.FindElement(By.XPath("//*[@id='init'][3]"));
|
||||
builder.MoveToElement(packagesNode).DoubleClick().Build().Perform();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
var installPackageNode = Driver.FindElement(By.XPath("/html/body/div[2]/div/div/div[2]/div/div/div/div/ul/li/ul/li[3]/ul/li[4]/a/div"));
|
||||
builder.MoveToElement(installPackageNode).Click().Build().Perform();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
var rightFrame = Driver.FindElement(By.XPath("//*[@id='right']"));
|
||||
Driver.SwitchTo().Frame(rightFrame);
|
||||
|
||||
const string packagesDir = @"C:\\Downloads\\Packages\\";
|
||||
var file = new DirectoryInfo(packagesDir).GetFiles().First(f => f.Name.ToLowerInvariant().StartsWith("Courier".ToLowerInvariant()));
|
||||
|
||||
Driver.FindElement(By.Id("cb")).Click();
|
||||
Driver.FindElement(By.XPath("//input[@type='file']")).SendKeys(file.FullName);
|
||||
Driver.FindElement(By.Id("body_ButtonLoadPackage")).Click();
|
||||
Driver.FindElement(By.Id("body_acceptCheckbox")).Click();
|
||||
Driver.FindElement(By.Id("body_ButtonInstall")).Click();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
var successPanel = Driver.FindElement(By.XPath("//*[@id='body_Panel1_content']"));
|
||||
Assert.IsNotNull(successPanel);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Install_Contour_Package()
|
||||
{
|
||||
Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/login.aspx?redir=");
|
||||
Driver.FindElement(By.Id("lname")).Clear();
|
||||
Driver.FindElement(By.Id("lname")).SendKeys("admin");
|
||||
Driver.FindElement(By.Id("passw")).Clear();
|
||||
Driver.FindElement(By.Id("passw")).SendKeys("test");
|
||||
Driver.FindElement(By.Id("Button1")).Click();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/umbraco.aspx#developer");
|
||||
Thread.Sleep(2000);
|
||||
|
||||
var builder = new Actions(Driver);
|
||||
var packagesNode = Driver.FindElement(By.XPath("//*[@id='init'][3]"));
|
||||
builder.MoveToElement(packagesNode).DoubleClick().Build().Perform();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
var installPackageNode = Driver.FindElement(By.XPath("/html/body/div[2]/div/div/div[2]/div/div/div/div/ul/li/ul/li[3]/ul/li[4]/a/div"));
|
||||
builder.MoveToElement(installPackageNode).Click().Build().Perform();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
var rightFrame = Driver.FindElement(By.XPath("//*[@id='right']"));
|
||||
Driver.SwitchTo().Frame(rightFrame);
|
||||
|
||||
const string packagesDir = @"C:\\Downloads\\Packages\\";
|
||||
var file = new DirectoryInfo(packagesDir).GetFiles().First(f => f.Name.ToLowerInvariant().StartsWith("UmbracoContour".ToLowerInvariant()));
|
||||
|
||||
Driver.FindElement(By.Id("cb")).Click();
|
||||
Driver.FindElement(By.Id("body_file1")).SendKeys(file.Name);
|
||||
Driver.FindElement(By.Id("body_ButtonLoadPackage")).Click();
|
||||
Driver.FindElement(By.Id("body_acceptCheckbox")).Click();
|
||||
Driver.FindElement(By.Id("body_ButtonInstall")).Click();
|
||||
Thread.Sleep(1000);
|
||||
|
||||
var successPanel = Driver.FindElement(By.XPath("//*[@id='body_Panel1_content']"));
|
||||
Assert.IsNotNull(successPanel);
|
||||
}
|
||||
|
||||
//[Test]
|
||||
//public void Install_CMS_Import_Package()
|
||||
//{
|
||||
// Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/login.aspx?redir=");
|
||||
// Driver.FindElement(By.Id("lname")).Clear();
|
||||
// Driver.FindElement(By.Id("lname")).SendKeys("admin");
|
||||
// Driver.FindElement(By.Id("passw")).Clear();
|
||||
// Driver.FindElement(By.Id("passw")).SendKeys("test");
|
||||
// Driver.FindElement(By.Id("Button1")).Click();
|
||||
// Thread.Sleep(1000);
|
||||
|
||||
// Driver.Navigate().GoToUrl(BaseUrl + "/umbraco/umbraco.aspx#developer");
|
||||
// Thread.Sleep(2000);
|
||||
|
||||
// var builder = new Actions(Driver);
|
||||
// var packagesNode = Driver.FindElement(By.XPath("//*[@id='init'][3]"));
|
||||
// builder.MoveToElement(packagesNode).DoubleClick().Build().Perform();
|
||||
// Thread.Sleep(1000);
|
||||
|
||||
// var installPackageNode = Driver.FindElement(By.XPath("/html/body/div[2]/div/div/div[2]/div/div/div/div/ul/li/ul/li[3]/ul/li[4]/a/div"));
|
||||
// builder.MoveToElement(installPackageNode).Click().Build().Perform();
|
||||
// Thread.Sleep(1000);
|
||||
|
||||
// var rightFrame = Driver.FindElement(By.XPath("//*[@id='right']"));
|
||||
// Driver.SwitchTo().Frame(rightFrame);
|
||||
|
||||
// Driver.FindElement(By.Id("cb")).Click();
|
||||
// Driver.FindElement(By.Id("body_file1")).SendKeys("C:\\Downloads\\Packages\\CMSImport-2.3.1.zip");
|
||||
// Driver.FindElement(By.Id("body_ButtonLoadPackage")).Click();
|
||||
// Driver.FindElement(By.Id("body_acceptCheckbox")).Click();
|
||||
// Driver.FindElement(By.Id("body_ButtonInstall")).Click();
|
||||
// Thread.Sleep(1000);
|
||||
|
||||
// var successPanel = Driver.FindElement(By.XPath("//*[@id='body_Panel1_content']"));
|
||||
// Assert.IsNotNull(successPanel);
|
||||
//}
|
||||
}
|
||||
}
|
||||
151
src/Umbraco.Tests/TestHelpers/BaseSeleniumTest.cs
Normal file
151
src/Umbraco.Tests/TestHelpers/BaseSeleniumTest.cs
Normal file
@@ -0,0 +1,151 @@
|
||||
using System;
|
||||
using System.Data.SqlServerCe;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Linq.Dynamic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Web.Management;
|
||||
using NUnit.Framework;
|
||||
using OpenQA.Selenium;
|
||||
using OpenQA.Selenium.Firefox;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Persistence;
|
||||
using Umbraco.Core.Persistence.Migrations.Initial;
|
||||
using Umbraco.Core.Persistence.SqlSyntax;
|
||||
|
||||
namespace Umbraco.Tests.TestHelpers
|
||||
{
|
||||
public class BaseSeleniumTest
|
||||
{
|
||||
internal IWebDriver Driver;
|
||||
internal string BaseUrl;
|
||||
|
||||
private StringBuilder _verificationErrors;
|
||||
private UmbracoDatabase _database;
|
||||
|
||||
protected ApplicationContext ApplicationContext
|
||||
{
|
||||
get { return ApplicationContext.Current; }
|
||||
}
|
||||
|
||||
[SetUp]
|
||||
public virtual void Initialize()
|
||||
{
|
||||
|
||||
// Disable medium trust
|
||||
var transform = TransformWebConfig("Release");
|
||||
|
||||
var assemblyPath = TestHelper.CurrentAssemblyDirectory;
|
||||
assemblyPath = Path.Combine(assemblyPath, @"..\..\..\Umbraco.Web.UI\");
|
||||
var webUiPath = Path.GetFullPath(new Uri(assemblyPath).LocalPath);
|
||||
|
||||
var installedPackagesConfig = string.Format("{0}App_Data\\packages\\installed\\installedPackages.config", webUiPath);
|
||||
if (File.Exists(installedPackagesConfig))
|
||||
File.Delete(installedPackagesConfig);
|
||||
|
||||
var databaseDataPath = string.Format(@"{0}\App_Data\Umbraco.sdf", webUiPath);
|
||||
var connectionString = string.Format(@"Data Source={0}", databaseDataPath);
|
||||
|
||||
//Create the Sql CE database
|
||||
var engine = new SqlCeEngine(connectionString);
|
||||
if (File.Exists(databaseDataPath) == false)
|
||||
engine.CreateDatabase();
|
||||
|
||||
SqlSyntaxContext.SqlSyntaxProvider = new SqlCeSyntaxProvider();
|
||||
|
||||
_database = new UmbracoDatabase(connectionString, "System.Data.SqlServerCe.4.0");
|
||||
|
||||
// First remove anything in the database
|
||||
var creation = new DatabaseSchemaCreation(_database);
|
||||
creation.UninstallDatabaseSchema();
|
||||
|
||||
// Then populate it with fresh data
|
||||
_database.CreateDatabaseSchema(false);
|
||||
|
||||
_database.Execute("UPDATE umbracoUser SET userName = 'admin', userPassword = 'W477AMlLwwJQeAGlPZKiEILr8TA=', userEmail = 'none' WHERE id = 0"); // password: test
|
||||
|
||||
// Recycle app pool so the new user can log in
|
||||
//var webConfigFilePath = string.Format(@"{0}\web.config", webUiPath);
|
||||
//File.SetLastWriteTime(webConfigFilePath, DateTime.Now);
|
||||
|
||||
// Disable medium trust
|
||||
transform = TransformWebConfig("Release");
|
||||
|
||||
Driver = new FirefoxDriver();
|
||||
BaseUrl = "http://localhost:61639/";
|
||||
_verificationErrors = new StringBuilder();
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public virtual void TearDown()
|
||||
{
|
||||
try
|
||||
{
|
||||
Driver.Quit();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// Ignore errors if unable to close the browser
|
||||
}
|
||||
|
||||
// Re-enable medium trust
|
||||
var transform = TransformWebConfig("Debug");
|
||||
|
||||
Assert.AreEqual("", _verificationErrors.ToString());
|
||||
}
|
||||
|
||||
private static string TransformWebConfig(string configurationToUse)
|
||||
{
|
||||
var assemblyPath = TestHelper.CurrentAssemblyDirectory;
|
||||
var toolsPath = Path.Combine(assemblyPath, @"..\..\..\..\tools\ConfigTransformTool\");
|
||||
var webUiPath = Path.GetFullPath(new Uri(Path.Combine(assemblyPath, @"..\..\..\Umbraco.Web.UI\")).LocalPath);
|
||||
|
||||
var fileToTransform = webUiPath + "web.config";
|
||||
var transformFile = string.Format("{0}web.Template.{1}.config", webUiPath, configurationToUse);
|
||||
|
||||
var psi = new ProcessStartInfo(string.Format("{0}ctt.exe", toolsPath), string.Format("s:\"{0}\" t:\"{1}\" d:\"{2}\" pw v", fileToTransform, transformFile, fileToTransform))
|
||||
{
|
||||
WorkingDirectory = Environment.CurrentDirectory,
|
||||
UseShellExecute = false,
|
||||
RedirectStandardOutput = true,
|
||||
RedirectStandardError = true,
|
||||
CreateNoWindow = true
|
||||
};
|
||||
|
||||
string[] result = {string.Empty};
|
||||
using (var process = new Process { StartInfo = psi })
|
||||
{
|
||||
// delegate for writing the process output to the response output
|
||||
Action<Object, DataReceivedEventArgs> dataReceived = ((sender, e) =>
|
||||
{
|
||||
if (e.Data != null) // sometimes a random event is received with null data, not sure why - I prefer to leave it out
|
||||
{
|
||||
result[0] += e.Data;
|
||||
result[0] += "\r\n";
|
||||
}
|
||||
});
|
||||
|
||||
process.OutputDataReceived += new DataReceivedEventHandler(dataReceived);
|
||||
process.ErrorDataReceived += new DataReceivedEventHandler(dataReceived);
|
||||
|
||||
// start the process and start reading the standard and error outputs
|
||||
process.Start();
|
||||
process.BeginErrorReadLine();
|
||||
process.BeginOutputReadLine();
|
||||
|
||||
// wait for the process to exit
|
||||
process.WaitForExit();
|
||||
|
||||
// an exit code other than 0 generally means an error
|
||||
if (process.ExitCode != 0)
|
||||
{
|
||||
result[0] = result[0] + "\r\n - Exited with exitcode " + process.ExitCode;
|
||||
}
|
||||
}
|
||||
|
||||
return result[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -86,6 +86,7 @@
|
||||
<Private>True</Private>
|
||||
<HintPath>..\packages\SqlServerCE.4.0.0.0\lib\System.Data.SqlServerCe.Entity.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
@@ -121,6 +122,9 @@
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\UmbracoExamine.0.1.42.2941\lib\UmbracoExamine.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WebDriver">
|
||||
<HintPath>..\packages\Selenium.WebDriver.2.32.0\lib\net40\WebDriver.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Auditing\AuditTests.cs" />
|
||||
@@ -160,6 +164,9 @@
|
||||
<Compile Include="CodeFirst\TypeInheritanceTest.cs" />
|
||||
<Compile Include="Configurations\FileSystemProviderTests.cs" />
|
||||
<Compile Include="ContentStores\PublishMediaStoreTests.cs" />
|
||||
<Compile Include="Integration\CreateContent.cs" />
|
||||
<Compile Include="TestHelpers\BaseSeleniumTest.cs" />
|
||||
<Compile Include="Integration\InstallPackage.cs" />
|
||||
<Compile Include="LegacyApi\MediaTypeTests.cs" />
|
||||
<Compile Include="Migrations\AlterMigrationTests.cs" />
|
||||
<Compile Include="Migrations\Upgrades\BaseUpgradeTest.cs" />
|
||||
@@ -436,6 +443,7 @@
|
||||
<Content Include="Services\Importing\XsltSearch-Package.xml" />
|
||||
<Content Include="TestHelpers\ExamineHelpers\media.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>xcopy "$(ProjectDir)"..\packages\SqlServerCE.4.0.0.0\amd64\*.* "$(TargetDir)amd64\" /Y /F /E /D
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
|
||||
<package id="NUnit" version="2.6.2" targetFramework="net40" />
|
||||
<package id="RhinoMocks" version="3.6.1" targetFramework="net40" />
|
||||
<package id="Selenium.WebDriver" version="2.32.0" targetFramework="net40" />
|
||||
<package id="SharpZipLib" version="0.86.0" targetFramework="net40" />
|
||||
<package id="SqlServerCE" version="4.0.0.0" targetFramework="net40" />
|
||||
<package id="UmbracoExamine" version="0.1.42.2941" targetFramework="net40" />
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
<repository path="..\umbraco.editorControls\packages.config" />
|
||||
<repository path="..\umbraco.MacroEngines\packages.config" />
|
||||
<repository path="..\umbraco.macroRenderings\packages.config" />
|
||||
<repository path="..\Umbraco.Tests.Integration\packages.config" />
|
||||
<repository path="..\Umbraco.Tests\packages.config" />
|
||||
<repository path="..\Umbraco.Web.UI\packages.config" />
|
||||
<repository path="..\Umbraco.Web\packages.config" />
|
||||
|
||||
BIN
tools/ConfigTransformTool/ctt.exe
Normal file
BIN
tools/ConfigTransformTool/ctt.exe
Normal file
Binary file not shown.
2
tools/ConfigTransformTool/readme.txt
Normal file
2
tools/ConfigTransformTool/readme.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
More information at:
|
||||
https://ctt.codeplex.com/documentation
|
||||
Reference in New Issue
Block a user