Пример #1
0
 public ClearScriptData(string[] selectedScriptIds, SqlSyncBuildData buildData, string projectFileName, string buildZipFileName)
 {
     this.SelectedScriptIds = selectedScriptIds;
     this.BuildData         = buildData;
     this.ProjectFileName   = projectFileName;
     this.BuildZipFileName  = buildZipFileName;
 }
Пример #2
0
        public Package CreateScriptPolicyPackage(SqlSyncBuildData buildData, string extractedProjectPath)
        {
            Package scriptPackage = new Package();
            Script  scriptItem;

            foreach (SqlSyncBuildData.ScriptRow row in buildData.Script)
            {
                try
                {
                    string scriptContents = File.ReadAllText(Path.Combine(extractedProjectPath, row.FileName));
                    scriptItem = this.ValidateScriptAgainstPolicies(row.FileName, row.ScriptId, scriptContents, row.Database, 80);
                    if (scriptItem == null)
                    {
                        row.PolicyCheckState = ScriptStatusType.PolicyPass;
                    }
                    else
                    {
                        scriptItem.LastChangeDate   = (row.DateModified == DateTime.MinValue) ? row.DateAdded.ToString() : row.DateModified.ToString();
                        scriptItem.LastChangeUserId = (row.ModifiedBy.Length == 0) ? row.AddedBy : row.ModifiedBy;
                        scriptPackage.Add(scriptItem);
                        row.PolicyCheckState = ScriptStatusType.PolicyFail;
                    }
                }
                catch (Exception exe)
                {
                    log.LogError(exe, $"Unable to read file '{extractedProjectPath + row.FileName}' for policy check validation");
                }
            }
            return(scriptPackage);
        }
Пример #3
0
        public static void GetLastBuildNumberAndDb(SqlSyncBuildData buildData, out double lastbuildNumber, out string lastDatabase)
        {
            //Use the dataset to get the last build number and Db
            if (buildData != null && buildData.Script.Rows.Count > 0)
            {
                DataView view = buildData.Script.DefaultView;
                view.RowFilter = buildData.Script.BuildOrderColumn.ColumnName + " < " + ((int)ResequenceIgnore.StartNumber).ToString();
                view.Sort      = buildData.Script.BuildOrderColumn + " DESC";
                if (view.Count > 0)
                {
                    lastbuildNumber = ((SqlSyncBuildData.ScriptRow)view[0].Row).BuildOrder;
                    lastDatabase    = ((SqlSyncBuildData.ScriptRow)view[0].Row).Database;
                }
                else
                {
                    lastbuildNumber = 0;
                    lastDatabase    = "";
                }

                return;
            }

            lastbuildNumber = 0;
            lastDatabase    = string.Empty;
            return;
        }
        public void CleanProjectFileForRemoteExecutionTest_NothingToClean()
        {
            Initialization init = GetInitializationObject();

            //Create the build package...
            SqlSyncBuildData buildData = init.CreateSqlSyncSqlBuildDataObject();

            init.AddInsertScript(ref buildData, true);
            init.AddFailureScript(ref buildData, true, true);
            init.AddFailureScript(ref buildData, true, true);
            foreach (SqlSyncBuildData.ScriptRow row in buildData.Script)
            {
                row.FileName = Path.GetFileName(row.FileName);
            }

            string zipFileName = init.GetTrulyUniqueFile() + ".sbm";
            string path        = Path.GetDirectoryName(zipFileName);

            SqlBuildFileHelper.PackageProjectFileIntoZip(buildData, path, zipFileName, false);

            byte[]           expected = File.ReadAllBytes(zipFileName);
            byte[]           actual;
            SqlSyncBuildData cleanedBuildData;

            actual = SqlBuildFileHelper.CleanProjectFileForRemoteExecution(zipFileName, out cleanedBuildData);
            Assert.IsTrue(cleanedBuildData.GetXml().ToString().Length > 100);
            Assert.AreEqual(buildData.GetXml().ToString().Length, cleanedBuildData.GetXml().ToString().Length);
            Assert.IsTrue(1500 <= actual.Length, string.Format("Actual length of cleaned XML {0}.\r\n{1}", actual.Length.ToString(), cleanedBuildData.GetXml())); //can't get exact length due to variations in guids and dates.
            Assert.IsTrue(expected.Length == actual.Length);

            Assert.IsTrue(cleanedBuildData.ScriptRun.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.Build.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.CodeReview.Rows.Count == 0);
            Assert.AreEqual(buildData.Script.Rows.Count, cleanedBuildData.Script.Rows.Count);
        }
Пример #5
0
        public SqlBuildHelper CreateSqlBuildHelperAccessor(SqlSyncBuildData buildData)
        {
            SqlBuildHelper target = new SqlBuildHelper(this.connData);


            //Set fields
            BackgroundWorker bg = new BackgroundWorker();

            bg.WorkerReportsProgress      = true;
            bg.WorkerSupportsCancellation = true;
            target.bgWorker = bg;

            target.buildData = buildData;

            string logFile = this.GetTrulyUniqueFile();

            this.tempFiles.Add(logFile);
            target.scriptLogFileName = logFile;

            SqlSyncBuildData buildHist = CreateSqlSyncSqlBuildDataObject();

            target.buildHistoryData = buildHist;

            this.projectFileName = this.GetTrulyUniqueFile();
            this.tempFiles.Add(projectFileName);
            target.projectFileName = projectFileName;

            this.buildHistoryXmlFile = this.GetTrulyUniqueFile();
            this.tempFiles.Add(buildHistoryXmlFile);
            target.buildHistoryXmlFile = buildHistoryXmlFile;

            return(target);
        }
Пример #6
0
        public SqlBuildHelper SetSqlBuildHelperValues(SqlBuildHelper sbh, SqlSyncBuildData buildData)
        {
            BackgroundWorker bg = new BackgroundWorker();

            bg.WorkerReportsProgress      = true;
            bg.WorkerSupportsCancellation = true;
            sbh.bgWorker = bg;

            sbh.buildData = buildData;

            string logFile = this.GetTrulyUniqueFile();

            sbh.scriptLogFileName = logFile;

            SqlSyncBuildData buildHist = CreateSqlSyncSqlBuildDataObject();

            sbh.buildHistoryData = buildHist;

            this.projectFileName = this.GetTrulyUniqueFile();
            sbh.projectFileName  = projectFileName;

            this.buildHistoryXmlFile = this.GetTrulyUniqueFile();
            sbh.buildHistoryXmlFile  = buildHistoryXmlFile;
            return(sbh);
        }
Пример #7
0
 public StatusReporting(SqlSyncBuildData buildData, MultiDb.MultiDbData multiDbData, string projectFilePath, string buildZipFileName)
 {
     this.buildData        = buildData;
     this.multiDbData      = multiDbData;
     this.buildZipFileName = buildZipFileName;
     this.projectFilePath  = projectFilePath;
 }
Пример #8
0
        public void AddPreRunScript(ref SqlSyncBuildData data, bool multipleRun)
        {
            SqlSyncBuildData.ScriptRow row = data.Script.NewScriptRow();
            row.AllowMultipleRuns  = multipleRun;
            row.BuildOrder         = 1;
            row.CausesBuildFailure = true;
            row.Database           = testDatabaseNames[0];
            row.DateAdded          = testTimeStamp;
            string fileName = this.GetTrulyUniqueFile();

            row.FileName             = fileName;
            row.RollBackOnError      = true;
            row.StripTransactionText = true;
            row.Description          = "Test Script to be skipped";
            row.AddedBy  = "UnitTest";
            row.ScriptId = PreRunScriptGuid;
            row.SetParentRow(data.Scripts[0]);
            data.Script.AddScriptRow(row);
            data.Script.AcceptChanges();
            string script = "INSERT INTO TransactionTest (Message, Guid, DateTimeStamp) VALUES ('INSERT TEST','" + testGuid + "','" + testTimeStamp.ToString() + "')";

            File.WriteAllText(fileName, script);

            InsertPreRunScriptEntry();
        }
Пример #9
0
        private List <FileCompareResults> GetFileListDiff(SqlSyncBuildData master, SqlSyncBuildData child, bool masterIsLeftFile)
        {
            bool foundScript = false;
            List <FileCompareResults> results = new List <FileCompareResults>();

            foreach (SqlSyncBuildData.ScriptRow masterRow in master.Script)
            {
                foreach (SqlSyncBuildData.ScriptRow childRow in child.Script)
                {
                    if (masterRow.FileName.Trim().ToLower() == childRow.FileName.Trim().ToLower())
                    {
                        foundScript = true;
                        break;
                    }
                }
                if (!foundScript)
                {
                    FileCompareResults result = new FileCompareResults();
                    if (masterIsLeftFile)
                    {
                        result.LeftScriptRow = masterRow;
                    }
                    else
                    {
                        result.RightScriptRow = masterRow;
                    }

                    results.Add(result);
                }

                foundScript = false;
            }
            return(results);
        }
 public StatusReportRunner(SqlSyncBuildData buildData, string serverName, List <DatabaseOverride> dbOverrides, string projectFilePath)
 {
     this.buildData       = buildData;
     this.serverName      = serverName;
     this.dbOverrides     = dbOverrides;
     this.projectFilePath = projectFilePath;
 }
        public static bool MarkCodeReviewOutOfDate(ref SqlSyncBuildData buildData, ref SqlSyncBuildData.CodeReviewRow reviewRow)
        {
            reviewRow.ReviewStatus = (short)CodeReviewStatus.OutOfDate;
            buildData.CodeReview.AcceptChanges();

            return(true);
        }
        public static bool SaveCodeReview(ref SqlSyncBuildData buildData, ref SqlSyncBuildData.ScriptRow scriptRow, string scriptText, string comment, string reviewBy, DateTime reviewDate, string reviewNumber, int reviewStatus)
        {
            try
            {
                SqlSyncBuildData.CodeReviewRow newRow = buildData.CodeReview.NewCodeReviewRow();
                newRow.CodeReviewId = Guid.NewGuid();
                newRow.Comment      = comment;
                newRow.ReviewBy     = reviewBy;
                newRow.ReviewDate   = reviewDate;
                newRow.ReviewNumber = reviewNumber;
                newRow.ReviewStatus = (short)reviewStatus;
                newRow.CheckSum     = CodeReviewManager.CalculateReviewCheckSum(newRow.CodeReviewId,
                                                                                newRow.ReviewBy,
                                                                                newRow.ReviewDate,
                                                                                newRow.Comment,
                                                                                newRow.ReviewNumber,
                                                                                newRow.ReviewStatus,
                                                                                scriptText);

                newRow.SetParentRow(scriptRow);
                CodeReviewManager.SetValidationKey(ref newRow);
                buildData.CodeReview.AddCodeReviewRow(newRow);
                buildData.CodeReview.AcceptChanges();

                CodeReviewManager.SaveCodeReviewToDatabase(newRow);

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Пример #13
0
        internal static bool RebuildBuildManagerFile(int defaultTimeout, string buildFileName, List <RebuilderData> rebuildData)
        {
            string tempPath = System.IO.Path.GetTempPath() + System.Guid.NewGuid();

            Directory.CreateDirectory(tempPath);
            try
            {
                string projFileName = Path.Combine(tempPath, SqlSync.SqlBuild.XmlFileNames.MainProjectFile);

                for (int i = 0; i < rebuildData.Count; i++)
                {
                    File.WriteAllText(Path.Combine(tempPath, rebuildData[i].ScriptFileName), rebuildData[i].ScriptText);
                }

                SqlSyncBuildData buildData = SqlBuildFileHelper.CreateShellSqlSyncBuildDataObject();
                buildData.AcceptChanges();

                if (!SqlBuildFileHelper.PackageProjectFileIntoZip(buildData, tempPath, buildFileName))
                {
                    return(false);
                }

                if (!ZipHelper.UnpackZipPackage(tempPath, buildFileName, false))
                {
                    return(false);
                }

                for (int i = 0; i < rebuildData.Count; i++)
                {
                    SqlBuildFileHelper.AddScriptFileToBuild(ref buildData,
                                                            projFileName,
                                                            rebuildData[i].ScriptFileName,
                                                            rebuildData[i].Sequence + 1,
                                                            string.Empty,
                                                            true,
                                                            true,
                                                            rebuildData[i].Database,
                                                            false,
                                                            buildFileName,
                                                            false,
                                                            false,
                                                            System.Environment.UserName,
                                                            defaultTimeout,
                                                            rebuildData[i].ScriptId,
                                                            rebuildData[i].Tag);
                }

                SqlBuildFileHelper.SaveSqlBuildProjectFile(ref buildData, projFileName, buildFileName);

                return(true);
            }
            finally
            {
                if (Directory.Exists(tempPath))
                {
                    Directory.Delete(tempPath, true);
                }
            }
        }
Пример #14
0
 public PastBuildReviewForm(SqlSyncBuildData buildData)
 {
     //
     // Required for Windows Form Designer support
     //
     InitializeComponent();
     this.sqlSyncBuildData1 = buildData;
 }
Пример #15
0
 public StatusReportForm(SqlSyncBuildData buildData, MultiDb.MultiDbData multiDbData, string projectFilePath, string buildZipFileName, ConnectionData connData)
     : this(multiDbData, connData)
 {
     this.buildData                  = buildData;
     this.buildZipFileName           = buildZipFileName;
     this.projectFilePath            = projectFilePath;
     this.ddOutputType.SelectedIndex = 0;
 }
        public void CalculateBuildPackageSHA1_CompareMethodologyTest()
        {
            //Set up directory and files...
            string projectFileExtractionPath = Path.GetTempPath() + Guid.NewGuid().ToString() + "\\";

            if (!Directory.Exists(projectFileExtractionPath))
            {
                Directory.CreateDirectory(projectFileExtractionPath);
            }

            string file1 = "File1.sql";

            File.WriteAllText(projectFileExtractionPath + file1, Properties.Resources.CreateDatabaseScript);

            string file2 = "File2.sql";

            File.WriteAllText(projectFileExtractionPath + file2, Properties.Resources.CreateTestTablesScript);

            string file3 = "File3.sql";

            File.WriteAllText(projectFileExtractionPath + file3, Properties.Resources.LoggingTable);


            SqlSyncBuildData buildData = SqlBuildFileHelper.CreateShellSqlSyncBuildDataObject();

            SqlSyncBuildData.ScriptRow row1 = buildData.Script.NewScriptRow();
            row1.BuildOrder           = 1;
            row1.FileName             = file1;
            row1.StripTransactionText = true;

            SqlSyncBuildData.ScriptRow row2 = buildData.Script.NewScriptRow();
            row2.BuildOrder           = 2;
            row2.FileName             = file2;
            row2.StripTransactionText = true;

            SqlSyncBuildData.ScriptRow row3 = buildData.Script.NewScriptRow();
            row3.BuildOrder           = 3;
            row3.FileName             = file3;
            row3.StripTransactionText = true;

            buildData.Script.Rows.Add(row1);
            buildData.Script.Rows.Add(row2);
            buildData.Script.Rows.Add(row3);


            string fromPath = SqlBuildFileHelper.CalculateBuildPackageSHA1SignatureFromPath(projectFileExtractionPath, buildData);


            ScriptBatchCollection batch = SqlBuildHelper.LoadAndBatchSqlScripts(buildData, projectFileExtractionPath);
            string fromBatch            = SqlBuildFileHelper.CalculateBuildPackageSHA1SignatureFromBatchCollection(batch);

            if (Directory.Exists(projectFileExtractionPath))
            {
                Directory.Delete(projectFileExtractionPath, true);
            }

            Assert.AreEqual(fromPath, fromBatch);
        }
 public BackoutPackageForm(ConnectionData connData, SqlSyncBuildData sourceBuildData, string sourceSbmFullFileName, string extractedPath, string extractedProjectFile)
     : this()
 {
     this.connData = connData;
     this.sourceSbmFullFileName = sourceSbmFullFileName;
     this.extractedPath         = extractedPath;
     this.extractedProjectFile  = extractedProjectFile;
     this.sourceBuildData       = sourceBuildData;
 }
 public BulkAddConfirmation(List <string> fileList, string projectFilePath, SqlSyncBuildData buildData)
 {
     //
     // Required for Windows Form Designer support
     //
     InitializeComponent();
     this.projectFilePath   = projectFilePath;
     this.incommingFileList = fileList;
     this.buildData         = buildData;
 }
Пример #19
0
        public void BuildDataTest()
        {
            MultiDbData      target   = new MultiDbData();
            SqlSyncBuildData expected = new SqlSyncBuildData();
            SqlSyncBuildData actual;

            target.BuildData = expected;
            actual           = target.BuildData;
            Assert.AreEqual(expected, actual);
        }
Пример #20
0
        public static void SetScriptRunStatusAndDates(ref SqlSyncBuildData buildData, ConnectionData connData, string projectFilePath)
        {
            DateTime commitDate;
            DateTime serverChangeDate;

            foreach (SqlSyncBuildData.ScriptRow row in buildData.Script)
            {
                row.ScriptRunStatus  = DetermineScriptRunStatus(row, connData, projectFilePath, true, OverrideData.TargetDatabaseOverrides, out commitDate, out serverChangeDate);
                row.LastCommitDate   = commitDate;
                row.ServerChangeDate = serverChangeDate;
            }
        }
        public void CalculateBuildPackageSHA1SignatureFromPathTest_GetHashSuccessfully()
        {
            //Set up directory and files...
            string projectFileExtractionPath = Path.GetTempPath() + Guid.NewGuid().ToString() + "\\";

            if (!Directory.Exists(projectFileExtractionPath))
            {
                Directory.CreateDirectory(projectFileExtractionPath);
            }

            string file1 = "File1.sql";

            File.WriteAllText(projectFileExtractionPath + file1, Properties.Resources.CreateDatabaseScript);

            string file2 = "File2.sql";

            File.WriteAllText(projectFileExtractionPath + file2, Properties.Resources.CreateTestTablesScript);

            string file3 = "File3.sql";

            File.WriteAllText(projectFileExtractionPath + file3, Properties.Resources.LoggingTable);


            SqlSyncBuildData buildData = SqlBuildFileHelper.CreateShellSqlSyncBuildDataObject();

            SqlSyncBuildData.ScriptRow row1 = buildData.Script.NewScriptRow();
            row1.BuildOrder = 1;
            row1.FileName   = file1;

            SqlSyncBuildData.ScriptRow row2 = buildData.Script.NewScriptRow();
            row2.BuildOrder = 2;
            row2.FileName   = file2;

            SqlSyncBuildData.ScriptRow row3 = buildData.Script.NewScriptRow();
            row3.BuildOrder = 3;
            row3.FileName   = file3;

            buildData.Script.Rows.Add(row1);
            buildData.Script.Rows.Add(row2);
            buildData.Script.Rows.Add(row3);

            string expected = "4E0F54A4BA40DC62A78822B20C7D83713CE4F766";
            string actual;

            actual = SqlBuildFileHelper.CalculateBuildPackageSHA1SignatureFromPath(projectFileExtractionPath, buildData);

            if (Directory.Exists(projectFileExtractionPath))
            {
                Directory.Delete(projectFileExtractionPath, true);
            }

            Assert.AreEqual(expected, actual);
        }
Пример #22
0
 public SqlSyncBuildData CreateSqlSyncSqlBuildDataObject()
 {
     try
     {
         SqlSyncBuildData data = SqlBuildFileHelper.CreateShellSqlSyncBuildDataObject();
         return(data);
     }
     catch
     {
         return(null);
     }
 }
Пример #23
0
        public void ClearScriptDataConstructorTest()
        {
            string[]         selectedScriptIds = new string[] { "1", "3", "5" };
            SqlSyncBuildData buildData         = new SqlSyncBuildData();
            string           projectFileName   = "MyProjectFile";
            string           buildZipFileName  = "MyZipFileName.sbm";
            ClearScriptData  target            = new ClearScriptData(selectedScriptIds, buildData, projectFileName, buildZipFileName);

            Assert.AreEqual(selectedScriptIds, target.SelectedScriptIds);
            Assert.AreEqual(buildData, target.BuildData);
            Assert.AreEqual(projectFileName, target.ProjectFileName);
            Assert.AreEqual(buildZipFileName, target.BuildZipFileName);
        }
        public void CleanProjectFileForRemoteExecutionTest_CleanOutUnitTest()
        {
            Initialization init = GetInitializationObject();

            //Create the build package...
            SqlSyncBuildData buildData = init.CreateSqlSyncSqlBuildDataObject();

            init.AddInsertScript(ref buildData, true);
            init.AddFailureScript(ref buildData, true, true);
            foreach (SqlSyncBuildData.ScriptRow row in buildData.Script)
            {
                row.FileName = Path.GetFileName(row.FileName);
            }

            //Add in code review rows
            buildData.CodeReview.AddCodeReviewRow(
                Guid.NewGuid(),
                buildData.Script[0],
                DateTime.Now,
                "Reviewer",
                1,
                "Comment",
                "12345",
                "AABBCCDD",
                "EEFFGGHHII");

            buildData.AcceptChanges();

            string zipFileName = init.GetTrulyUniqueFile();

            string path            = Path.GetDirectoryName(zipFileName);
            string projectFileName = Path.Combine(path, XmlFileNames.MainProjectFile);

            buildData.WriteXml(projectFileName);
            SqlBuildFileHelper.PackageProjectFileIntoZip(buildData, path, zipFileName, false);

            byte[] expected = File.ReadAllBytes(zipFileName);
            byte[] actual;

            SqlSyncBuildData cleanedBuildData;

            actual = SqlBuildFileHelper.CleanProjectFileForRemoteExecution(zipFileName, out cleanedBuildData);
            Assert.IsTrue(actual.Length >= 1200);  //can't get exact length due to variations in guids and dates.
            Assert.IsTrue(cleanedBuildData.GetXml().ToString().Length > 100);
            Assert.IsTrue(buildData.GetXml().ToString().Length > cleanedBuildData.GetXml().ToString().Length);

            Assert.IsTrue(cleanedBuildData.ScriptRun.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.Build.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.CodeReview.Rows.Count == 0);
            Assert.AreEqual(buildData.Script.Rows.Count, cleanedBuildData.Script.Rows.Count);
        }
Пример #25
0
 public MultiDbRunForm(ConnectionData connData, List <string> defaultDatabases, DatabaseList databaseList, string buildZipFileName, string projectFilePath, ref SqlSyncBuildData buildData)
     : this()
 {
     //perform real copy to prevent data slipping back into main form
     string[] tmp = new string[defaultDatabases.Count];
     defaultDatabases.CopyTo(tmp);
     this.defaultDatabases = new List <string>(tmp);
     this.databaseList     = databaseList;
     this.server           = connData.SQLServerName;
     this.DialogResult     = DialogResult.Cancel;
     this.buildZipFileName = buildZipFileName;
     this.buildData        = buildData;
     this.projectFilePath  = projectFilePath;
     this.connData         = connData;
 }
 public static bool UpdateCodeReview(ref SqlSyncBuildData buildData, ref SqlSyncBuildData.CodeReviewRow reviewRow, string scriptText)
 {
     try
     {
         reviewRow.CheckSum = CodeReviewManager.CalculateReviewCheckSum(reviewRow, scriptText);
         CodeReviewManager.SetValidationKey(ref reviewRow);
         buildData.CodeReview.AcceptChanges();
         CodeReviewManager.UpdateCodeReviewToDatabase(reviewRow);
         return(true);
     }
     catch
     {
         return(false);
     }
 }
        public void CleanProjectFileForRemoteExecutionTest_CleanOutScriptRunRowsTest()
        {
            Initialization init = GetInitializationObject();

            //Create the build package...
            SqlSyncBuildData buildData = init.CreateSqlSyncSqlBuildDataObject();

            init.AddInsertScript(ref buildData, true);
            init.AddInsertScript(ref buildData, true);
            init.AddInsertScript(ref buildData, true);
            init.AddFailureScript(ref buildData, true, true);
            foreach (SqlSyncBuildData.ScriptRow row in buildData.Script)
            {
                row.FileName = Path.GetFileName(row.FileName);
            }

            buildData.Builds.AddBuildsRow((SqlSyncBuildData.SqlSyncBuildProjectRow)buildData.SqlSyncBuildProject.Rows[0]);
            buildData.Build.AddBuildRow("Script", "Development", DateTime.Now, DateTime.Now, "Server", "Committed", Guid.NewGuid().ToString(), "user", buildData.Builds[0]);
            buildData.ScriptRun.AddScriptRunRow("HASH", "Committed", "FileName", 2.2, DateTime.Now, DateTime.Now, true, "Database", Guid.NewGuid().ToString(), (SqlSyncBuildData.BuildRow)buildData.Build[0]);


            buildData.AcceptChanges();

            string zipFileName = init.GetTrulyUniqueFile();

            string path            = Path.GetDirectoryName(zipFileName);
            string projectFileName = Path.Combine(path, XmlFileNames.MainProjectFile);

            buildData.WriteXml(projectFileName);
            SqlBuildFileHelper.PackageProjectFileIntoZip(buildData, path, zipFileName, false);

            byte[] expected = File.ReadAllBytes(zipFileName);
            byte[] actual;

            SqlSyncBuildData cleanedBuildData;

            actual = SqlBuildFileHelper.CleanProjectFileForRemoteExecution(zipFileName, out cleanedBuildData);
            Assert.IsTrue(2000 <= actual.Length);  //can't get exact length due to variations in guids and dates.
            Assert.IsTrue(cleanedBuildData.GetXml().ToString().Length > 100);
            Assert.IsTrue(buildData.GetXml().ToString().Length > cleanedBuildData.GetXml().ToString().Length);

            Assert.IsTrue(cleanedBuildData.ScriptRun.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.Build.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.CodeReview.Rows.Count == 0);
            Assert.AreEqual(buildData.Script.Rows.Count, cleanedBuildData.Script.Rows.Count);
        }
Пример #28
0
        internal void BindData(ref SqlSyncBuildData buildData, ref SqlSyncBuildData.ScriptRow scriptRow, string scriptText, string lastEditor)
        {
            this.startingScriptText = scriptText;

            //Can't create a new review for yourself unless you are a "SelfReviewer"
            var isSelfReviewer = from s in EnterpriseConfigHelper.EnterpriseConfig.CodeReviewConfig.SelfReviewer
                                 where s.LoginId.ToLower() == lastEditor.ToLower()
                                 select s.LoginId;

            if ((lastEditor.Length == 0 || lastEditor.Trim().ToLower() == System.Environment.UserName.ToLower().Trim()) && !isSelfReviewer.Any())
            {
                this.Height = collapsedHeight;
                this.tblPanel.Controls.Clear();
                if (lastEditor.Length > 0)
                {
                    lblLastEditor.Visible = true;
                }
            }


            this.scriptRow = scriptRow;
            this.buildData = buildData;

            SqlSyncBuildData.CodeReviewRow[] rows = scriptRow.GetCodeReviewRows();
            if (rows != null && rows.Length > 0)
            {
                var sorted = from r in rows
                             orderby r.ReviewDate descending
                             select r;

                foreach (SqlSyncBuildData.CodeReviewRow row in sorted)
                {
                    if (!CodeReviewManager.ValidateReviewCheckSum(row, scriptText))
                    {
                        row.ReviewStatus = (short)CodeReviewStatus.OutOfDate;;
                        this.buildData.AcceptChanges();
                    }

                    CodeReviewItemControl itemCtrl = new CodeReviewItemControl(row);
                    itemCtrl.Dock = DockStyle.Fill;
                    this.tblPanel.Controls.Add(itemCtrl);
                    this.Height = this.Height + itemCtrl.Height + 7;
                }
            }
            this.fullHeight = this.Height;
        }
Пример #29
0
        public SqlBuildRunData GetSqlBuildRunData_TransactionalNotTrial(SqlSyncBuildData buildData)
        {
            SqlBuildRunData runData = new SqlBuildRunData()
            {
                BuildData        = buildData,
                BuildDescription = "UnitTestRun",
                BuildFileName    = @"C:\temp\UnitTestBuildFile.sbm",
                BuildType        = "Development",
                ProjectFileName  = @"C:\temp\ProjectFile.xml",
                Server           = this.serverName,
                StartIndex       = 0
            };

            runData.IsTransactional         = true;
            runData.IsTrial                 = false;
            runData.TargetDatabaseOverrides = GetDatabaseOverrides();

            return(runData);
        }
Пример #30
0
        private List <FileCompareResults> GetCommonFileList(SqlSyncBuildData left, SqlSyncBuildData right)
        {
            //bool foundScript = false;
            List <FileCompareResults> results = new List <FileCompareResults>();

            foreach (SqlSyncBuildData.ScriptRow leftRow in left.Script)
            {
                foreach (SqlSyncBuildData.ScriptRow rightRow in right.Script)
                {
                    if (leftRow.FileName.Trim().ToLower() == rightRow.FileName.Trim().ToLower())
                    {
                        FileCompareResults result = new FileCompareResults();
                        result.LeftScriptRow  = leftRow;
                        result.RightScriptRow = rightRow; //Only file name, not full path yet
                        results.Add(result);
                    }
                }
            }
            return(results);
        }