private void CheckDifferenceBetweenReferenceAndOutput(string folder, bool useSpecialFileCompare, string markedContentFiles, Logger logger)
        {
            var folderComparer = new FolderComparer()
            {
                Logger = logger
            };

            var specialFiles = new Dictionary <string, CompareMode>();

            if (useSpecialFileCompare)
            {
                foreach (var item in SpecialFiles)
                {
                    specialFiles.Add(item.Key, item.Value);
                }
            }

            if (markedContentFiles != null)
            {
                var contentFiles = markedContentFiles.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                foreach (var fileName in contentFiles)
                {
                    specialFiles.Add(fileName, CompareMode.MarkedContent);
                }
            }

            var comparence = folderComparer.CompareFolders(this.ReferenceFolder, this.OutputFolder, specialFiles);

            if (comparence.Any())
            {
                var sb = new StringBuilder();

                var lineCount = 0;
                foreach (var diff in comparence)
                {
                    lineCount++;

                    if (lineCount > MaxDiffLineCount)
                    {
                        sb.AppendLine("The diff log cut off because of max lines limit of " + MaxDiffLineCount + " lines.");
                        break;
                    }

                    var diffReport = diff.ToString();

                    if (diffReport.Length > MaxDiffLineLength)
                    {
                        diffReport = diffReport.Remove(MaxDiffLineLength) + " ... the rest is removed due to too long";
                    }

                    sb.AppendLine(diffReport);
                }

                folderComparer.LogDifferences("Project " + folder + " differences:", comparence);

                Assert.Fail(sb.ToString());
            }
        }
Beispiel #2
0
        public void Test(string folder, bool isToTranslate, bool useSpecialFileCompare)
        {
            GetPaths(folder);

            LogInfo("OutputTest Project " + folder);

            LogInfo("\tProjectFileName " + ProjectFileName);
            LogInfo("\tProjectFolder " + ProjectFolder);

            LogInfo("\tProjectFilePath " + ProjectFilePath);

            LogInfo("\tOutputFolder " + OutputFolder);
            LogInfo("\tReferenceFolder " + ReferenceFolder);

            var translator = new TranslatorRunner()
            {
                ProjectLocation = ProjectFilePath,
                BuildArguments  = OutputTest.BuildArguments
            };

            try
            {
                if (isToTranslate)
                {
                    translator.Translate();
                }
                else
                {
                    translator.Build();
                }
            }
            catch (Exception ex)
            {
                Assert.Fail("Could not {0} the project {1}. Exception occurred: {2}.", isToTranslate ? "translate" : "build", folder, ex.Message);
            }

            try
            {
                var comparence = FolderComparer.CompareFolders(this.ReferenceFolder, this.OutputFolder, useSpecialFileCompare ? SpecialFiles : null);

                if (comparence.Any())
                {
                    var sb = new StringBuilder();

                    foreach (var diff in comparence)
                    {
                        sb.AppendLine(diff.ToString());
                    }

                    FolderComparer.LogDifferences("Project " + folder + " differences:", comparence);

                    Assert.Fail(sb.ToString());
                }
            }
            catch (Exception ex)
            {
                Assert.Fail("Could not compare the project {0} output. Exception occurred: {1}.", folder, ex.Message);
            }
        }
Beispiel #3
0
        public void LogDifferences(string diffName, List <Comparence> comparence)
        {
            var differ = new DiffMatchPatch.diff_match_patch();

            differ.Diff_Timeout = 10;

            var sb = new StringBuilder(diffName);

            sb.AppendLine();

            foreach (var diff in comparence)
            {
                if (diff.Result != CompareResult.HasContentDifferences)
                {
                    continue;
                }

                try
                {
                    var file1Content = FolderComparer.ReadFile(diff.File1FullPath);

                    if (file1Content == null)
                    {
                        sb.AppendLine(string.Format("DIFF Could not get detailed diff for {0}. Content is null.}", diff.File1FullPath));

                        continue;
                    }

                    var file2Content = FolderComparer.ReadFile(diff.File2FullPath);

                    if (file2Content == null)
                    {
                        sb.AppendLine(string.Format("DIFF Could not get detailed diff for {0}. Content is null.}", diff.File2FullPath));
                        continue;
                    }

                    var differences = differ.diff_main(file1Content, file2Content);
                    var diffText    = differ.DiffText(differences, true);

                    sb.AppendLine();
                    sb.AppendLine("DIFF for " + diff.ToString());
                    sb.AppendLine();
                    sb.AppendLine("|" + diffText + "|");
                    //sb.AppendLine("-------------------File 1 content:");
                    //sb.AppendLine(file1Content);
                    //sb.AppendLine("-------------------File 2 content:");
                    //sb.AppendLine(file2Content);
                }
                catch (System.Exception ex)
                {
                    sb.AppendLine(string.Format("DIFF Could not get detailed diff for {0}. Exception: {1}", diff.ToString(), ex.Message));
                }
            }

            Logger.Warn(string.Empty);
            Logger.Warn(sb.ToString());
        }
Beispiel #4
0
        private void CheckDifferenceBetweenReferenceAndOutput(string folder, bool useSpecialFileCompare, string markedContentFiles, Logger logger)
        {
            var folderComparer = new FolderComparer()
            {
                Logger = logger
            };

            var specialFiles = new Dictionary <string, CompareMode>();

            if (useSpecialFileCompare)
            {
                foreach (var item in SpecialFiles)
                {
                    specialFiles.Add(item.Key, item.Value);
                }
            }

            if (markedContentFiles != null)
            {
                var contentFiles = markedContentFiles.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                foreach (var fileName in contentFiles)
                {
                    specialFiles.Add(fileName, CompareMode.MarkedContent);
                }
            }

            var comparence = folderComparer.CompareFolders(this.ReferenceFolder, this.OutputFolder, specialFiles);

            if (comparence.Any())
            {
                var sb = new StringBuilder();

                foreach (var diff in comparence)
                {
                    sb.AppendLine(diff.ToString());
                }

                folderComparer.LogDifferences("Project " + folder + " differences:", comparence);

                Assert.Fail(sb.ToString());
            }
        }
Beispiel #5
0
        private void CheckDifferenceBetweenReferenceAndOutput(string folder, bool useSpecialFileCompare, Logger logger)
        {
            var folderComparer = new FolderComparer()
            {
                Logger = logger
            };

            var comparence = folderComparer.CompareFolders(this.ReferenceFolder, this.OutputFolder, useSpecialFileCompare ? SpecialFiles : null);

            if (comparence.Any())
            {
                var sb = new StringBuilder();

                foreach (var diff in comparence)
                {
                    sb.AppendLine(diff.ToString());
                }

                folderComparer.LogDifferences("Project " + folder + " differences:", comparence);

                Assert.Fail(sb.ToString());
            }
        }
Beispiel #6
0
        public void Test(string folder, bool isToTranslate, bool useSpecialFileCompare)
        {
            var logDir = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

            var logger = new Logger("Bridge.Test.Runner", true, new SimpleFileLoggerWriter(logDir), new ConsoleLoggerWriter());

            GetPaths(folder);

            logger.Info("OutputTest Project " + folder);

            logger.Info("\tProjectFileName " + ProjectFileName);
            logger.Info("\tProjectFolder " + ProjectFolder);

            logger.Info("\tProjectFilePath " + ProjectFilePath);

            logger.Info("\tOutputFolder " + OutputFolder);
            logger.Info("\tReferenceFolder " + ReferenceFolder);

            var translator = new TranslatorRunner()
            {
                Logger = logger,
                ProjectLocation = ProjectFilePath,
                BuildArguments = OutputTest.BuildArguments
            };

            try
            {
                if (isToTranslate)
                {
                    translator.Translate();
                }
                else
                {
                    translator.Build();
                }
            }
            catch (Exception ex)
            {
                Assert.Fail("Could not {0} the project {1}. Exception occurred: {2}.", isToTranslate ? "translate" : "build", folder, ex.Message);
            }

            try
            {
                var folderComparer = new FolderComparer() { Logger = logger };

                var comparence = folderComparer.CompareFolders(this.ReferenceFolder, this.OutputFolder, useSpecialFileCompare ? SpecialFiles : null);

                if (comparence.Any())
                {
                    var sb = new StringBuilder();

                    foreach (var diff in comparence)
                    {
                        sb.AppendLine(diff.ToString());
                    }

                    folderComparer.LogDifferences("Project " + folder + " differences:", comparence);

                    Assert.Fail(sb.ToString());
                }
            }
            catch (Exception ex)
            {
                var message = string.Format("Could not compare the project {0} output. Exception occurred: {1}.", folder, ex.Message);

                logger.Error(message);
                Assert.Fail(message);
            }
        }
Beispiel #7
0
        public void Test(string folder, bool isToTranslate, bool useSpecialFileCompare)
        {
            var logger = new Logger("Bridge.Test.Runner", true, SimpleFileLoggerWriter.Instance, new ConsoleLoggerWriter());

            GetPaths(folder);

            logger.Info("OutputTest Project " + folder);

            logger.Info("\tProjectFileName " + ProjectFileName);
            logger.Info("\tProjectFolder " + ProjectFolder);

            logger.Info("\tProjectFilePath " + ProjectFilePath);

            logger.Info("\tOutputFolder " + OutputFolder);
            logger.Info("\tReferenceFolder " + ReferenceFolder);

            var translator = new TranslatorRunner()
            {
                Logger          = logger,
                ProjectLocation = ProjectFilePath,
                BuildArguments  = OutputTest.BuildArguments
            };

            try
            {
                if (isToTranslate)
                {
                    translator.Translate();
                }
                else
                {
                    translator.Build();
                }
            }
            catch (Exception ex)
            {
                Assert.Fail("Could not {0} the project {1}. Exception occurred: {2}.", isToTranslate ? "translate" : "build", folder, ex.Message);
            }

            try
            {
                var folderComparer = new FolderComparer()
                {
                    Logger = logger
                };

                var comparence = folderComparer.CompareFolders(this.ReferenceFolder, this.OutputFolder, useSpecialFileCompare ? SpecialFiles : null);

                if (comparence.Any())
                {
                    var sb = new StringBuilder();

                    foreach (var diff in comparence)
                    {
                        sb.AppendLine(diff.ToString());
                    }

                    folderComparer.LogDifferences("Project " + folder + " differences:", comparence);

                    Assert.Fail(sb.ToString());
                }
            }
            catch (Exception ex)
            {
                var message = string.Format("Could not compare the project {0} output. Exception occurred: {1}.", folder, ex.Message);

                logger.Error(message);
                Assert.Fail(message);
            }
        }