private static string GetFilePathAbsoluteFrom(string baseAbsolutePath, string relativePath)
        {
            var absoluteBase     = new FilePathAbsolute(baseAbsolutePath).ParentDirectoryPath;
            var relativeFilePath = new FilePathRelative(relativePath);

            return(relativeFilePath.GetAbsolutePathFrom(absoluteBase).Path);
        }
 public ProjectFilesClone(IFileSystem fs, FilePathAbsolute path)
 {
     _fs        = fs;
     Assemblies = new List <FilePathAbsolute>();
     Referenced = new List <FilePathAbsolute>();
     ParentPath = path;
 }
Example #3
0
        /// <summary>
        /// Compares two directory strings
        /// </summary>
        /// <param name="rootDir"></param>
        /// <param name="searchItem"></param>
        /// <returns></returns>
        public static bool CompareDirectories(string rootDir, string searchItem)
        {
            var root   = new FilePathAbsolute(Path.GetFullPath(rootDir));
            var search = new FilePathAbsolute(Path.GetFullPath(searchItem));

            return(root == search);
        }
        protected string PrepareNunitArgs(string inputFile, string outputFile)
        {
            var listpath = new FilePathAbsolute(inputFile)
                           .GetBrotherFileWithName(
                Path.GetFileNameWithoutExtension(inputFile) + "-Runlist.txt").Path;

            string testToRun = "";

            if (!_testsSelector.AllowAll)
            {
                using (var file = File.CreateText(listpath))
                {
                    foreach (var str in _testsSelector.MinimalSelectionList)
                    {
                        file.WriteLine(str.Trim());
                    }
                }
                testToRun = " --testlist=" + listpath.InQuotes() + " ";
            }

            string arg = inputFile.InQuotes()
                         + testToRun
                         + " --result=\"" + outputFile + "\";format=nunit2 --noheader --nocolor --dispose-runners --skipnontestassemblies";

            if (_options?.ParsedParams.NUnitNetVersion.Length != 0)
            {
                arg += (" --framework=" + _options.OtherParams);
            }

            return(arg);
        }
 public ProjectFilesClone(IFileSystem fs, FilePathAbsolute path)
 {
     _fs = fs;
     Assemblies = new List<FilePathAbsolute>();
     Referenced = new List<FilePathAbsolute>();
     ParentPath = path;
 }
Example #6
0
        private void Run()
        {
            DirectoryPathAbsolute dp = new DirectoryPathAbsolute(Path.GetDirectoryName(models.First().DisplayName));

            ScenariosToRun = new ConcurrentStack <ScenarioRun>(Runs.Where(var => var.RunThis));
            foreach (var v in models)
            {
                v.ResultFileNames.Clear();
                DirectoryPathAbsolute dp2 = new DirectoryPathAbsolute(Path.GetDirectoryName(v.DisplayName));

                foreach (var file in FileNamesToCopy)
                {
                    FilePathAbsolute fp = new FilePathAbsolute(file);
                    var rp = fp.GetPathRelativeFrom(dp);
                    v.ResultFileNames.Add(rp.GetAbsolutePathFrom(dp2).Path);
                }

                if (v is PestModel)
                {
                    ((PestModel)v).MsheFileName       = mikeSheFileName.GetAbsolutePathFrom(dp2).Path;
                    ((PestModel)v).PostProcessBatFile = postProcessBat.GetAbsolutePathFrom(dp2).Path;
                }
                Thread.Sleep(TimeSpan.FromMinutes(1));
                RunNext(v);
            }
        }
Example #7
0
        public async Task <ProjectFilesClone> CreateCloneAsync(string name)
        {
            FilePathAbsolute  tmp   = CreateTmpDir("VisualMutator-" + name + "-");
            ProjectFilesClone clone = await _filesManager.CreateProjectClone(_mainClone.Referenced, _mainClone.Assemblies, tmp);

            clone.IsIncomplete |= _mainClone.IsIncomplete;
            return(clone);
        }
Example #8
0
        public string GetRelativePath(string absoluteFilePath, string absoluteDirectoryPath)
        {
            FilePathAbsolute      filePathAbsolute1      = new FilePathAbsolute(absoluteFilePath);
            DirectoryPathAbsolute directoryPathAbsolute1 = new DirectoryPathAbsolute(absoluteDirectoryPath);
            FilePathRelative      filePathRelative1      = filePathAbsolute1.GetPathRelativeFrom(directoryPathAbsolute1);

            return(filePathRelative1.Path);
        }
        public async Task<MutantTestResults> RunTests()
        {
            string name = string.Format("muttest-{0}.xml", Path.GetFileName(_assemblyPath));
            string outputFilePath = new FilePathAbsolute(_assemblyPath).GetBrotherFileWithName(name).ToString();

            if (_testsSelector.IsEmpty)
            {
                _testResults = new MutantTestResults();
                return TestResults;
            }
            _testResults = await RunTests(_assemblyPath,
                outputFilePath);
            return TestResults;
        }
Example #10
0
        private void GetMshe()
        {
            Microsoft.Win32.OpenFileDialog openFileDialog2 = new Microsoft.Win32.OpenFileDialog();
            openFileDialog2.Filter = "Known file types (*.she)|*.she";
            openFileDialog2.Title  = "Select the Mike She file corresponding to the first .pst-file";

            if (openFileDialog2.ShowDialog().Value)
            {
                DirectoryPathAbsolute dp = new DirectoryPathAbsolute(Path.GetDirectoryName(models.First().DisplayName));
                FilePathAbsolute      fp = new FilePathAbsolute(openFileDialog2.FileName);
                mikeSheFileName = fp.GetPathRelativeFrom(dp);
                RaisePropertyChanged("MikeSheFileName");
            }
        }
Example #11
0
        private void GetBat()
        {
            Microsoft.Win32.OpenFileDialog openFileDialog2 = new Microsoft.Win32.OpenFileDialog();
            openFileDialog2.Filter = "Known file types (*.bat)|*.bat";
            openFileDialog2.Title  = "Select a batch file that will be run after completion of the model run";

            if (openFileDialog2.ShowDialog().Value)
            {
                DirectoryPathAbsolute dp = new DirectoryPathAbsolute(Path.GetDirectoryName(models.First().DisplayName));
                FilePathAbsolute      fp = new FilePathAbsolute(openFileDialog2.FileName);
                postProcessBat = fp.GetPathRelativeFrom(dp);
                RaisePropertyChanged("PostProcessBat");
            }
        }
        public async Task <MutantTestResults> RunTests()
        {
            string name           = string.Format("muttest-{0}.xml", Path.GetFileName(_assemblyPath));
            string outputFilePath = new FilePathAbsolute(_assemblyPath).GetBrotherFileWithName(name).ToString();

            if (_testsSelector.IsEmpty)
            {
                _testResults = new MutantTestResults();
                return(TestResults);
            }
            _testResults = await RunTests(_assemblyPath,
                                          outputFilePath);

            return(TestResults);
        }
Example #13
0
 /// <summary>
 /// Returns a relative path string from a full path.
 /// </summary>
 /// <returns></returns>
 public static string GetRelativePath(string rootDir, string filePath)
 {
     if (rootDir == null || filePath == null)
     {
         return(filePath);
     }
     if (IsSubdirectory(rootDir, filePath))
     {
         var filePathAbsolute              = new FilePathAbsolute(filePath);
         var directoryPathAbsolute         = new DirectoryPathAbsolute(rootDir);
         FilePathRelative filePathRelative = filePathAbsolute.GetPathRelativeFrom(directoryPathAbsolute);
         return(filePathRelative.Path);
     }
     return(filePath);
 }
Example #14
0
        public ProjectClonesManager(
            IHostEnviromentConnection hostEnviroment,
            FilesManager filesManager,
            IFileSystem fs)
        {
            _hostEnviroment = hostEnviroment;
            _filesManager   = filesManager;
            _fs             = fs;

            List <FilePathAbsolute>        originalProjectFiles = _hostEnviroment.GetProjectAssemblyPaths().ToList();
            IEnumerable <FilePathAbsolute> referencedFiles      = GetReferencedAssemblyPaths(originalProjectFiles).Select(s => s.ToFilePathAbs());

            FilePathAbsolute tmp = CreateTmpDir("VisualMutator-MainClone-");

            _mainClone = _filesManager.CreateProjectClone(referencedFiles, originalProjectFiles, tmp).Result;
        }
        public Task <ProcessResults> RunNUnitConsole(string nunitConsolePath,
                                                     string inputFile, string outputFile)
        {
            var listpath = new FilePathAbsolute(inputFile)
                           .GetBrotherFileWithName(
                Path.GetFileNameWithoutExtension(inputFile) + "-Runlist.txt").Path;

            string testToRun = "";

            if (!_testsSelector.AllowAll)
            {
                using (var file = File.CreateText(listpath))
                {
                    foreach (var str in _testsSelector.MinimalSelectionList)
                    {
                        file.WriteLine(str.Trim());
                    }
                }
                testToRun = " /runlist:" + listpath.InQuotes() + " ";
            }

            string arg = inputFile.InQuotes()
                         + testToRun
                         + " /xml \"" + outputFile + "\" /nologo -trace=Verbose /noshadow /nothread";

            if (_options.ParsedParams.NUnitNetVersion.Length != 0)
            {
                arg += (" /framework:" + _options.OtherParams);
            }

            _log.Info("Running \"" + nunitConsolePath + "\" " + arg);
            var startInfo = new ProcessStartInfo
            {
                Arguments              = arg,
                CreateNoWindow         = true,
                ErrorDialog            = true,
                RedirectStandardOutput = false,
                FileName        = nunitConsolePath,
                UseShellExecute = false,
            };

            return(_processes.RunAsync(startInfo, _cancellationTokenSource));
        }
Example #16
0
 /// <summary>
 /// Returns a relative path string from a full path.
 /// </summary>
 /// <returns></returns>
 public static string GetRelativePath(string rootDir, string filePath)
 {
     if (rootDir == null || filePath == null)
     {
         return(filePath);
     }
     if (IsSubdirectory(rootDir, filePath))
     {
         if (rootDir.StartsWith("\\")) //network disk?
         {
             return("." + filePath.Substring(rootDir.Length));
         }
         else
         {
             var filePathAbsolute              = new FilePathAbsolute(filePath);
             var directoryPathAbsolute         = new DirectoryPathAbsolute(rootDir);
             FilePathRelative filePathRelative = filePathAbsolute.GetPathRelativeFrom(directoryPathAbsolute);
             return(filePathRelative.Path);
         }
     }
     return(filePath);
 }
Example #17
0
    static void Main(string[] args)
    {
        FilePathAbsolute      filePathAbsolute1, filePathAbsolute2;
        FilePathRelative      filePathRelative1;
        DirectoryPathAbsolute directoryPathAbsolute1;
        DirectoryPathRelative directoryPathRelative1;



        //  Path normalization
        filePathAbsolute1 = new FilePathAbsolute(@"C:/Dir1\\File.txt");
        Debug.Assert(filePathAbsolute1.Path == @"C:\Dir1\File.txt");

        directoryPathAbsolute1 = new DirectoryPathAbsolute(@"C:/Dir1\\Dir2\");
        Debug.Assert(directoryPathAbsolute1.Path == @"C:\Dir1\Dir2");

        directoryPathAbsolute1 = new DirectoryPathAbsolute(@"C:\Dir1\..\Dir2\.");
        Debug.Assert(directoryPathAbsolute1.Path == @"C:\Dir2");



        // Path comparison
        filePathAbsolute1 = new FilePathAbsolute(@"C:/Dir1\\File.txt");
        filePathAbsolute2 = new FilePathAbsolute(@"C:\DIR1\FILE.TXT");
        Debug.Assert(filePathAbsolute1.Equals(filePathAbsolute2));
        Debug.Assert(filePathAbsolute1 == filePathAbsolute2);



        // Relative -> Absolute path conversion
        filePathRelative1      = new FilePathRelative(@"..\..\Dir1\File.txt");
        directoryPathAbsolute1 = new DirectoryPathAbsolute(@"C:\Dir2\Dir3\Dir4");
        filePathAbsolute1      = filePathRelative1.GetAbsolutePathFrom(directoryPathAbsolute1);
        Debug.Assert(filePathAbsolute1.Path == @"C:\Dir2\Dir1\File.txt");



        // Absolute -> Relative path conversion
        filePathAbsolute1      = new FilePathAbsolute(@"C:\Dir1\File.txt");
        directoryPathAbsolute1 = new DirectoryPathAbsolute(@"C:\Dir2\Dir3\Dir4");
        filePathRelative1      = filePathAbsolute1.GetPathRelativeFrom(directoryPathAbsolute1);
        Debug.Assert(filePathRelative1.Path == @"..\..\..\Dir1\File.txt");



        // Path string validation
        string reason;

        Debug.Assert(PathHelper.IsValidAbsolutePath(@"C:\Dir2\Dir1", out reason));
        Debug.Assert(!PathHelper.IsValidAbsolutePath(@"C:\..\Dir1", out reason));
        Debug.Assert(!PathHelper.IsValidAbsolutePath(@".\Dir1", out reason));
        Debug.Assert(!PathHelper.IsValidAbsolutePath(@"1:\Dir1", out reason));
        Debug.Assert(PathHelper.IsValidRelativePath(@".\Dir1\Dir2", out reason));
        Debug.Assert(PathHelper.IsValidRelativePath(@"..\Dir1\Dir2", out reason));
        Debug.Assert(PathHelper.IsValidRelativePath(@".\Dir1\..\Dir2", out reason));
        Debug.Assert(!PathHelper.IsValidRelativePath(@".\Dir1\..\..\Dir2", out reason));
        Debug.Assert(!PathHelper.IsValidRelativePath(@"C:\Dir1\Dir2", out reason));



        // File name & extension
        filePathAbsolute1 = new FilePathAbsolute(@"C:\Dir1\File.cs.Txt");
        Debug.Assert(filePathAbsolute1.FileName == "File.cs.Txt");
        Debug.Assert(filePathAbsolute1.FileNameWithoutExtension == "File.cs");
        Debug.Assert(filePathAbsolute1.FileExtension == ".Txt");
        Debug.Assert(filePathAbsolute1.HasExtension(".txt"));



        // Path browsing
        filePathAbsolute1 = new FilePathAbsolute(@"C:\Dir1\File.cs.Txt");
        Debug.Assert(filePathAbsolute1.ParentDirectoryPath.Path == @"C:\Dir1");
        Debug.Assert(filePathAbsolute1.GetBrotherFileWithName("File.xml").Path == @"C:\Dir1\File.xml");
        Debug.Assert(filePathAbsolute1.ParentDirectoryPath.GetChildDirectoryWithName("Dir2").Path == @"C:\Dir1\Dir2");
        Debug.Assert(filePathAbsolute1.ParentDirectoryPath.GetChildDirectoryWithName("..").Path == @"C:");

        directoryPathRelative1 = new DirectoryPathRelative(@"..\Dir1\Dir2");
        Debug.Assert(directoryPathRelative1.ParentDirectoryPath.Path == @"..\Dir1");



        // Path rebasing
        directoryPathAbsolute1 = new DirectoryPathAbsolute(@"C:\Dir1\Dir2\Dir3");
        DirectoryPathAbsolute directoryPathAbsolute2 = new DirectoryPathAbsolute(@"E:\Dir4\Dir1");
        DirectoryPathAbsolute rebasedPath;

        PathHelper.TryRebasePath(directoryPathAbsolute1, directoryPathAbsolute2, out rebasedPath);
        Debug.Assert(rebasedPath.Path == @"E:\Dir4\Dir1\Dir2\Dir3");


        // List of path  ListOfPathsEquals \ Contains \ TryGetCommonRootDirectory
        List <DirectoryPathAbsolute> list1 = new List <DirectoryPathAbsolute>();
        List <DirectoryPathAbsolute> list2 = new List <DirectoryPathAbsolute>();

        list1.Add(new DirectoryPathAbsolute(@"C:\Dir1\Dir2"));
        list2.Add(new DirectoryPathAbsolute(@"c:\dir1\dir2"));
        list1.Add(new DirectoryPathAbsolute(@"C:\Dir1\Dir3\Dir4"));
        list2.Add(new DirectoryPathAbsolute(@"c:\dir1\dir3\dir4"));
        Debug.Assert(ListOfPathHelper.ListOfPathsEquals(list1, list2));
        Debug.Assert(ListOfPathHelper.Contains(list1, new DirectoryPathAbsolute(@"C:\Dir1\dir2")));
        ListOfPathHelper.TryGetCommonRootDirectory(list1, out directoryPathAbsolute1);
        Debug.Assert(directoryPathAbsolute1.Path == @"C:\Dir1");


        // List of path   GetListOfUniqueDirsAndUniqueFileNames
        List <FilePathAbsolute> list = new List <FilePathAbsolute>();

        list.Add(new FilePathAbsolute(@"E:\Dir1\Dir2\File1.txt"));
        list.Add(new FilePathAbsolute(@"E:\dir1\dir2\File2.txt"));
        list.Add(new FilePathAbsolute(@"E:\Dir1\Dir2\Dir3\file2.txt"));
        List <DirectoryPathAbsolute> listOfUniqueDirs;
        List <string> listOfUniqueFileNames;

        ListOfPathHelper.GetListOfUniqueDirsAndUniqueFileNames(list, out listOfUniqueDirs, out listOfUniqueFileNames);
        Debug.Assert(listOfUniqueDirs.Count == 2);
        Debug.Assert(listOfUniqueDirs[0].Path == @"E:\Dir1\Dir2");
        Debug.Assert(listOfUniqueDirs[1].Path == @"E:\Dir1\Dir2\Dir3");
        Debug.Assert(listOfUniqueFileNames.Count == 2);
        Debug.Assert(listOfUniqueFileNames[0] == "File1.txt");
        Debug.Assert(listOfUniqueFileNames[1] == "File2.txt");


        // Interaction with System.IO API
        filePathAbsolute1 = new FilePathAbsolute(
            System.Reflection.Assembly.GetExecutingAssembly().Location);
        Debug.Assert(filePathAbsolute1.Exists);
        System.IO.FileInfo fileInfo = filePathAbsolute1.FileInfo;

        directoryPathAbsolute1 = filePathAbsolute1.ParentDirectoryPath as DirectoryPathAbsolute;
        Debug.Assert(directoryPathAbsolute1.Exists);
        System.IO.DirectoryInfo directoryInfo = directoryPathAbsolute1.DirectoryInfo;

        List <DirectoryPathAbsolute> listSubDir  = directoryPathAbsolute1.ChildrenDirectoriesPath;
        List <FilePathAbsolute>      listSubFile = directoryPathAbsolute1.ChildrenFilesPath;
    }
Example #18
0
        public async Task <ProjectFilesClone> CreateProjectClone(IEnumerable <FilePathAbsolute> referencedFiles,
                                                                 IEnumerable <FilePathAbsolute> projectFiles, FilePathAbsolute tmp)
        {
            var clone = _clonesFactory.CreateWithParams(tmp);

            foreach (var referenced in referencedFiles)
            {
                try
                {
                    var destination = (FilePathAbsolute)tmp.AsChild(referenced);
                    await CopyOverwriteAsync(referenced, destination);

                    clone.Referenced.Add(destination);
                }
                catch (Exception e)
                {
                    _log.Warn("Could not copy file : " + e.Message);
                    clone.IsIncomplete = true;
                }
            }
            foreach (var projFile in projectFiles)
            {
                try
                {
                    var destination = (FilePathAbsolute)tmp.AsChild(projFile);
                    await CopyOverwriteAsync(projFile, destination);

                    clone.Assemblies.Add(destination);
                }
                catch (Exception e)
                {
                    _log.Warn("Could not copy file : " + e.Message);
                    clone.IsIncomplete = true;
                }
            }
            return(clone);
        }
        public Task<ProcessResults> RunNUnitConsole(string nunitConsolePath,
            string inputFile, string outputFile)
        {
            var listpath = new FilePathAbsolute(inputFile)
                .GetBrotherFileWithName(
                Path.GetFileNameWithoutExtension(inputFile) + "-Runlist.txt").Path;

            string testToRun = "";
            if(!_testsSelector.AllowAll)
            {
                using (var file = File.CreateText(listpath))
                {
                    foreach (var str in _testsSelector.MinimalSelectionList)
                    {
                        file.WriteLine(str.Trim());
                    }
                }
                testToRun = " /runlist:" + listpath.InQuotes() + " ";
            }

            string arg = inputFile.InQuotes()
                         + testToRun
                         + " /xml \"" + outputFile + "\" /nologo -trace=Verbose /noshadow /nothread";

            if (_options.ParsedParams.NUnitNetVersion.Length != 0)
            {
                arg += (" /framework:" + _options.OtherParams);
            }

            _log.Info("Running \"" + nunitConsolePath+"\" " + arg);
            var startInfo = new ProcessStartInfo
            {
                Arguments = arg,
                CreateNoWindow = true,
                ErrorDialog = true,
                RedirectStandardOutput = false,
                FileName = nunitConsolePath,
                UseShellExecute = false,
            };
            return _processes.RunAsync(startInfo, _cancellationTokenSource);
        }
        private static string GetFilePathRelativeFrom(string baseAbsolutePath, string absolutePath)
        {
            var currentAbsoluteDirectoryPath = new FilePathAbsolute(baseAbsolutePath).ParentDirectoryPath;

            return(new FilePathAbsolute(absolutePath).GetPathRelativeFrom(currentAbsoluteDirectoryPath).Path);
        }