public FaustMigrationHistory RunMigrationScript(FaustMigrationScript script, UserContext userContext) { Logger.Log(string.Format("FaustEngine.RunMigrationScript: Running commands for script {0}.", script.ScriptName), TraceEventType.Verbose); FaustMigrationHistory migrationHistory = new FaustMigrationHistory(); try { migrationHistory.ReleaseNumber = script.ReleaseNumber; migrationHistory.ScriptName = script.ScriptName; migrationHistory.Committed = true; migrationHistory.Successful = true; migrationHistory.LastRun = DateTime.Now; foreach (string sqlCommand in script.Commands) { migrationHistory.Log = sqlCommand; UnityCache.Resolve <IFaustAccessor>().ExecuteSqlCommand(sqlCommand, userContext); } return(migrationHistory); } catch (Exception ex) { migrationHistory.Successful = false; migrationHistory.Log = string.Format("Error: {0}\r\nCommand: {1}", ex.Message, migrationHistory.Log); Logger.Log(string.Format("FaustEngine.RunMigrationScript: {0}", migrationHistory.Log), TraceEventType.Error); return(migrationHistory); } }
public void RunMigrationScriptError_Test() { bool executed = false; UnityCache.RegisterInstance <IFaustAccessor>(new Fakes.StubIFaustAccessor { ExecuteSqlCommandStringUserContext = (command, userContext) => { executed = true; throw new Exception(); } }); FaustMigrationScript script = new FaustMigrationScript { ReleaseNumber = 1, ScriptName = "UnitTestScript", Commands = new string[] { "Command 1" } }; FaustMigrationHistory result = new FaustEngine().RunMigrationScript(script, new UserContext()); Assert.IsTrue(executed); Assert.IsFalse(result.Successful.Value); Assert.IsNotNull(result); }