public void WriteTestsWritesDirectoriesForReferencedProjectsToSysPathCommandLineArguments()
        {
            MockCSharpProject referencedProject = new MockCSharpProject();

            referencedProject.FileName = @"c:\projects\pyproject\pyproject.pyproj";

            MockCSharpProject           unitTestProject = new MockCSharpProject();
            ProjectReferenceProjectItem projectRef      = new ProjectReferenceProjectItem(unitTestProject, referencedProject);

            projectRef.FileName = @"c:\projects\pyproject\pyproject.pyproj";
            ProjectService.AddProjectItem(unitTestProject, projectRef);

            MockMethod method = MockMethod.CreateMockMethodWithoutAnyAttributes();

            method.FullyQualifiedName = "MyNamespace.MyTests.MyTestMethod";

            SelectedTests tests = new SelectedTests(unitTestProject, null, null, method);

            responseFile.WriteTests(tests);

            string expectedText =
                "/p:\"c:\\projects\\pyproject\"\r\n" +
                "MyNamespace.MyTests.MyTestMethod\r\n";

            Assert.AreEqual(expectedText, responseFileText.ToString());
        }
        public ProjectReferenceProjectItem AddProjectReference(IProject referencedProject)
        {
            var referenceProjectItem = new ProjectReferenceProjectItem(this, referencedProject);

            ProjectService.AddProjectItem(this, referenceProjectItem);
            return(referenceProjectItem);
        }
Esempio n. 3
0
        public void CreateProcessInfoReturnsCommandLineWithDirectoriesForReferencedProjects()
        {
            MockCSharpProject referencedProject = new MockCSharpProject();

            referencedProject.FileName = @"c:\projects\rbproject\rbproject.rbproj";

            MockCSharpProject           unitTestProject = new MockCSharpProject();
            ProjectReferenceProjectItem projectRef      = new ProjectReferenceProjectItem(unitTestProject, referencedProject);

            projectRef.FileName = @"c:\projects\rbproject\pyproject.rbproj";
            ProjectService.AddProjectItem(unitTestProject, projectRef);

            MockMethod method = MockMethod.CreateMockMethodWithoutAnyAttributes();

            method.CompilationUnit.FileName = @"d:\mytest.rb";
            FileProjectItem fileItem = new FileProjectItem(unitTestProject, ItemType.Compile);

            fileItem.FileName = @"d:\mytest.rb";
            ProjectService.AddProjectItem(unitTestProject, fileItem);

            SelectedTests    tests            = RubySelectedTestsHelper.CreateSelectedTests(unitTestProject);
            ProcessStartInfo processStartInfo = GetProcessStartInfoFromTestRunnerApp(tests);

            string expectedCommandLine =
                "--disable-gems " +
                "\"-Ic:\\rubybinding\\TestRunner\" " +
                "\"-Ic:\\projects\\rbproject\" " +
                "\"c:\\rubybinding\\TestRunner\\sdtest.rb\" " +
                "-- " +
                "\"results.txt\" " +
                "\"temp.tmp\"";

            Assert.AreEqual(expectedCommandLine, processStartInfo.Arguments);
        }
Esempio n. 4
0
        static void AddProjectReferenceToProject(IProject project, IProject referenceTo)
        {
            LoggingService.Warn("Adding project reference to project.");
            ProjectReferenceProjectItem reference = new ProjectReferenceProjectItem(project, referenceTo);

            ProjectService.AddProjectItem(project, reference);
            project.Save();
        }
        void DoResolveReferences(IProgressMonitor progressMonitor)
        {
            var          referenceItems            = project.ResolveAssemblyReferences(progressMonitor.CancellationToken);
            const double assemblyResolvingProgress = 0.3;             // 30% asm resolving, 70% asm loading

            progressMonitor.Progress += assemblyResolvingProgress;
            progressMonitor.CancellationToken.ThrowIfCancellationRequested();

            List <FileName>           assemblyFiles = new List <FileName>();
            List <IAssemblyReference> newReferences = new List <IAssemblyReference>();

            foreach (var reference in referenceItems)
            {
                ProjectReferenceProjectItem projectReference = reference as ProjectReferenceProjectItem;
                if (projectReference != null)
                {
                    newReferences.Add(projectReference);
                }
                else
                {
                    assemblyFiles.Add(reference.FileName);
                }
            }

            foreach (var file in assemblyFiles)
            {
                progressMonitor.CancellationToken.ThrowIfCancellationRequested();
                if (File.Exists(file))
                {
                    try {
                        var pc = SD.AssemblyParserService.GetAssembly(file, false, progressMonitor.CancellationToken);
                        if (pc != null)
                        {
                            newReferences.Add(pc);
                        }
                    } catch (IOException ex) {
                        LoggingService.Warn(ex);
                    } catch (BadImageFormatException ex) {
                        LoggingService.Warn(ex);
                    }
                }
                progressMonitor.Progress += (1.0 - assemblyResolvingProgress) / assemblyFiles.Count;
            }
            lock (lockObj) {
                if (!disposed)
                {
                    projectContent  = projectContent.RemoveAssemblyReferences(this.references).AddAssemblyReferences(newReferences);
                    this.references = newReferences.ToArray();
                    SD.ParserService.InvalidateCurrentSolutionSnapshot();
                    SD.MainThread.InvokeAsyncAndForget(
                        delegate {
                        assemblyModel.UpdateReferences(projectContent.AssemblyReferences.Select(ResolveReferenceForAssemblyModel).Where(r => r != null).ToList());
                    });
                }
            }
        }
Esempio n. 6
0
        TestableProject CreateProjectReference()
        {
            project        = new TestableDTEProject();
            msbuildProject = project.TestableProject;
            TestableProject             referencedProject    = ProjectHelper.CreateTestProject();
            ProjectReferenceProjectItem referenceProjectItem = msbuildProject.AddProjectReference(referencedProject);

            fakeProjectService = project.FakeProjectService;
            CreateReference(project, referenceProjectItem);
            return(referencedProject);
        }
 void AddLoadPathForReferencedProjects(IProject project)
 {
     foreach (ProjectItem item in project.Items)
     {
         ProjectReferenceProjectItem projectRef = item as ProjectReferenceProjectItem;
         if (projectRef != null)
         {
             string directory = Path.GetDirectoryName(projectRef.FileName);
             consoleApplication.AddLoadPath(directory);
         }
     }
 }
Esempio n. 8
0
        public static void RenameProject(IProject project, string newName)
        {
            if (project.Name == newName)
            {
                return;
            }
            if (!FileService.CheckFileName(newName))
            {
                return;
            }
            // multiple projects with the same name shouldn't be a problem
//			foreach (IProject p in ProjectService.OpenSolution.Projects) {
//				if (string.Equals(p.Name, newName, StringComparison.OrdinalIgnoreCase)) {
//					MessageService.ShowMessage("There is already a project with this name.");
//					return;
//				}
//			}
            string newFileName = Path.Combine(project.Directory, newName + Path.GetExtension(project.FileName));

            if (!FileService.RenameFile(project.FileName, newFileName, false))
            {
                return;
            }
            if (project.AssemblyName == project.Name)
            {
                project.AssemblyName = newName;
            }
            if (File.Exists(project.FileName + ".user"))
            {
                FileService.RenameFile(project.FileName + ".user", newFileName + ".user", false);
            }
            foreach (IProject p in ProjectService.OpenSolution.Projects)
            {
                foreach (ProjectItem item in p.Items)
                {
                    if (item.ItemType == ItemType.ProjectReference)
                    {
                        ProjectReferenceProjectItem refItem = (ProjectReferenceProjectItem)item;
                        if (refItem.ReferencedProject == project)
                        {
                            refItem.ProjectName = newName;
                            refItem.Include     = FileUtility.GetRelativePath(p.Directory, newFileName);
                        }
                    }
                }
            }
            project.FileName = newFileName;
            project.Name     = newName;
            ProjectService.SaveSolution();
        }
 void WritePathsForReferencedProjects(IProject project)
 {
     if (project != null)
     {
         foreach (ProjectItem item in project.Items)
         {
             ProjectReferenceProjectItem projectRef = item as ProjectReferenceProjectItem;
             if (projectRef != null)
             {
                 string directory = Path.GetDirectoryName(projectRef.FileName);
                 WritePathIfNotEmpty(directory);
             }
         }
     }
 }
        static string GetICSharpCodeCoreFullPath(IProject sourceProject)
        {
            if (sourceProject == null)
            {
                return(null);
            }

            string coreAssemblyFullPath = null;

            if (sourceProject.Name.Equals("ICSharpCode.Core", StringComparison.OrdinalIgnoreCase))
            {
                // This is the ICSharpCode.Core project itself.
                coreAssemblyFullPath = sourceProject.OutputAssemblyFullPath;
            }
            else
            {
                // Get the ICSharpCode.Core.dll path by using the project reference.
                foreach (ProjectItem item in sourceProject.Items)
                {
                    ProjectReferenceProjectItem prpi = item as ProjectReferenceProjectItem;
                    if (prpi != null)
                    {
                        if (prpi.ReferencedProject != null)
                        {
                            if (prpi.ReferencedProject.Name.Equals("ICSharpCode.Core", StringComparison.OrdinalIgnoreCase) && prpi.ReferencedProject.OutputAssemblyFullPath != null)
                            {
                                coreAssemblyFullPath = prpi.ReferencedProject.OutputAssemblyFullPath;
                                break;
                            }
                        }
                    }
                    ReferenceProjectItem rpi = item as ReferenceProjectItem;
                    if (rpi != null)
                    {
                        if (rpi.Name.Equals("ICSharpCode.Core", StringComparison.OrdinalIgnoreCase) && rpi.FileName != null)
                        {
                            coreAssemblyFullPath = rpi.FileName;
                            break;
                        }
                    }
                }
            }

            return(coreAssemblyFullPath);
        }
Esempio n. 11
0
        TestableProject CreateProjectReference(string parentProjectFileName, string referencedProjectFileName)
        {
            project                 = new TestableDTEProject();
            msbuildProject          = project.TestableProject;
            msbuildProject.FileName = new FileName(parentProjectFileName);
            TestableProject referencedProject = ProjectHelper.CreateTestProject();

            referencedProject.FileName = new FileName(referencedProjectFileName);
            ((ICollection <IProject>)msbuildProject.ParentSolution.Projects).Add(referencedProject);
            IWorkbench workbench = MockRepository.GenerateStub <IWorkbench>();

            ICSharpCode.SharpDevelop.SD.Services.AddService(typeof(IWorkbench), workbench);
            ProjectReferenceProjectItem referenceProjectItem = msbuildProject.AddProjectReference(referencedProject);

            fakeProjectService = project.FakeProjectService;
            CreateReference(project, referenceProjectItem);
            return(referencedProject);
        }