public void SetUpFixture() { RubyMSBuildEngineHelper.InitMSBuildEngine(); List <ProjectBindingDescriptor> bindings = new List <ProjectBindingDescriptor>(); using (TextReader reader = RubyBindingAddInFile.ReadAddInFile()) { AddIn addin = AddIn.Load(reader, String.Empty); bindings.Add(new ProjectBindingDescriptor(AddInHelper.GetCodon(addin, "/SharpDevelop/Workbench/ProjectBindings", "Ruby"))); } ProjectBindingService.SetBindings(bindings); convertProjectCommand = new DerivedConvertProjectToRubyProjectCommand(); parseInfo = new ParseInformation(new DefaultCompilationUnit(new DefaultProjectContent())); convertProjectCommand.ParseInfo = parseInfo; convertProjectCommand.FileServiceDefaultEncoding = Encoding.Unicode; sourceProject = new MockProject(); sourceProject.Directory = @"d:\projects\test"; source = new FileProjectItem(sourceProject, ItemType.Compile, @"src\Program.cs"); targetProject = (RubyProject)convertProjectCommand.CallCreateProject(@"d:\projects\test\converted", sourceProject); target = new FileProjectItem(targetProject, source.ItemType, source.Include); source.CopyMetadataTo(target); textFileSource = new FileProjectItem(sourceProject, ItemType.None, @"src\readme.txt"); textFileTarget = new FileProjectItem(targetProject, textFileSource.ItemType, textFileSource.Include); textFileSource.CopyMetadataTo(textFileTarget); convertProjectCommand.AddParseableFileContent(source.FileName, sourceCode); convertProjectCommand.CallConvertFile(source, target); convertProjectCommand.CallConvertFile(textFileSource, textFileTarget); }
protected virtual void CopyItems(IProject sourceProject, IProject targetProject, IProgressMonitor monitor) { if (sourceProject == null) { throw new ArgumentNullException("sourceProject"); } if (targetProject == null) { throw new ArgumentNullException("targetProject"); } IProjectItemListProvider targetProjectItems = targetProject as IProjectItemListProvider; if (targetProjectItems == null) { throw new ArgumentNullException("targetProjectItems"); } ICollection <ProjectItem> sourceItems = sourceProject.Items; double totalWork = 0; foreach (ProjectItem item in sourceItems) { totalWork += GetRequiredWork(item); } foreach (ProjectItem item in sourceItems) { FileProjectItem fileItem = item as FileProjectItem; if (fileItem != null && FileUtility.IsBaseDirectory(sourceProject.Directory, fileItem.FileName)) { FileProjectItem targetItem = new FileProjectItem(targetProject, fileItem.ItemType); fileItem.CopyMetadataTo(targetItem); targetItem.Include = fileItem.Include; if (File.Exists(fileItem.FileName)) { if (!Directory.Exists(Path.GetDirectoryName(targetItem.FileName))) { Directory.CreateDirectory(Path.GetDirectoryName(targetItem.FileName)); } try { ConvertFile(fileItem, targetItem); } catch (Exception ex) { throw new ConversionException("Error converting " + fileItem.FileName, ex); } } targetProjectItems.AddProjectItem(targetItem); } else { targetProjectItems.AddProjectItem(item.CloneFor(targetProject)); } monitor.CancellationToken.ThrowIfCancellationRequested(); monitor.Progress += GetRequiredWork(item) / totalWork; } }
public void SetUpFixture() { PythonMSBuildEngineHelper.InitMSBuildEngine(); List <ProjectBindingDescriptor> bindings = new List <ProjectBindingDescriptor>(); using (TextReader reader = PythonBindingAddInFile.ReadAddInFile()) { AddIn addin = AddIn.Load(reader, String.Empty); bindings.Add(new ProjectBindingDescriptor(AddInHelper.GetCodon(addin, "/SharpDevelop/Workbench/ProjectBindings", "Python"))); } ProjectBindingService.SetBindings(bindings); // Set up IProjectContent so the ConvertProjectToPythonProjectCommand can // locate the startup object and determine it's filename. mockProjectContent = new ICSharpCode.Scripting.Tests.Utils.MockProjectContent(); MockClass mainClass = new MockClass(mockProjectContent, startupObject); mainClass.CompilationUnit.FileName = @"d:\projects\test\src\Main2.cs"; mockProjectContent.SetClassToReturnFromGetClass(startupObject, mainClass); convertProjectCommand = new DerivedConvertProjectToPythonProjectCommand(); convertProjectCommand.ProjectContent = mockProjectContent; convertProjectCommand.FileServiceDefaultEncoding = Encoding.Unicode; Solution solution = new Solution(new MockProjectChangeWatcher()); sourceProject = new MSBuildBasedProject( new ProjectCreateInformation() { Solution = solution, OutputProjectFileName = @"d:\projects\test\source.csproj", ProjectName = "source" }); sourceProject.Parent = solution; sourceProject.SetProperty(null, null, "StartupObject", startupObject, PropertyStorageLocations.Base, true); mainFile = new FileProjectItem(sourceProject, ItemType.Compile, @"src\Main.cs"); targetProject = (PythonProject)convertProjectCommand.CallCreateProject(@"d:\projects\test\converted", sourceProject); convertProjectCommand.CallCopyProperties(sourceProject, targetProject); targetMainFile = new FileProjectItem(targetProject, mainFile.ItemType, mainFile.Include); mainFile.CopyMetadataTo(targetMainFile); main2File = new FileProjectItem(sourceProject, ItemType.Compile, @"src\Main2.cs"); targetMain2File = new FileProjectItem(targetProject, main2File.ItemType, main2File.Include); main2File.CopyMetadataTo(targetMain2File); convertProjectCommand.AddParseableFileContent(mainFile.FileName, mainSource); convertProjectCommand.AddParseableFileContent(main2File.FileName, main2Source); convertProjectCommand.CallConvertFile(mainFile, targetMainFile); convertProjectCommand.CallConvertFile(main2File, targetMain2File); }
public void SetUpFixture() { MSBuildEngineHelper.InitMSBuildEngine(); List <LanguageBindingDescriptor> bindings = new List <LanguageBindingDescriptor>(); using (TextReader reader = PythonBindingAddInFile.ReadAddInFile()) { AddIn addin = AddIn.Load(reader, String.Empty); bindings.Add(new LanguageBindingDescriptor(AddInHelper.GetCodon(addin, "/SharpDevelop/Workbench/LanguageBindings", "Python"))); } LanguageBindingService.SetBindings(bindings); mockTextEditorProperties = new MockTextEditorProperties(); convertProjectCommand = new DerivedConvertProjectToPythonProjectCommand(mockTextEditorProperties); mockTextEditorProperties.Encoding = Encoding.Unicode; sourceProject = new MockProject(); sourceProject.Directory = @"d:\projects\test"; source = new FileProjectItem(sourceProject, ItemType.Compile, @"src\Program.cs"); targetProject = (PythonProject)convertProjectCommand.CallCreateProject(@"d:\projects\test\converted", sourceProject); target = new FileProjectItem(targetProject, source.ItemType, source.Include); source.CopyMetadataTo(target); textFileSource = new FileProjectItem(sourceProject, ItemType.None, @"src\readme.txt"); textFileTarget = new FileProjectItem(targetProject, textFileSource.ItemType, textFileSource.Include); textFileSource.CopyMetadataTo(textFileTarget); foreach (ProjectItem item in targetProject.Items) { ReferenceProjectItem reference = item as ReferenceProjectItem; if ((reference != null) && (reference.Name == "IronPython")) { ironPythonReference = reference; break; } } convertProjectCommand.AddParseableFileContent(source.FileName, sourceCode); convertProjectCommand.CallConvertFile(source, target); convertProjectCommand.CallConvertFile(textFileSource, textFileTarget); }
protected virtual void CopyItems(IProject sourceProject, IProject targetProject) { if (sourceProject == null) { throw new ArgumentNullException("sourceProject"); } if (targetProject == null) { throw new ArgumentNullException("targetProject"); } IProjectItemListProvider targetProjectItems = targetProject as IProjectItemListProvider; if (targetProjectItems == null) { throw new ArgumentNullException("targetProjectItems"); } foreach (ProjectItem item in sourceProject.Items) { FileProjectItem fileItem = item as FileProjectItem; if (fileItem != null && FileUtility.IsBaseDirectory(sourceProject.Directory, fileItem.FileName)) { FileProjectItem targetItem = new FileProjectItem(targetProject, fileItem.ItemType); fileItem.CopyMetadataTo(targetItem); targetItem.Include = fileItem.Include; if (File.Exists(fileItem.FileName)) { if (!Directory.Exists(Path.GetDirectoryName(targetItem.FileName))) { Directory.CreateDirectory(Path.GetDirectoryName(targetItem.FileName)); } ConvertFile(fileItem, targetItem); } targetProjectItems.AddProjectItem(targetItem); } else { targetProjectItems.AddProjectItem(item.CloneFor(targetProject)); } } }
public static void CopyDirectory(string directoryName, DirectoryNode node, bool includeInProject) { directoryName = FileUtility.NormalizePath(directoryName); string copiedFileName = Path.Combine(node.Directory, Path.GetFileName(directoryName)); LoggingService.Debug("Copy " + directoryName + " to " + copiedFileName); if (!FileUtility.IsEqualFileName(directoryName, copiedFileName)) { if (includeInProject && ProjectService.OpenSolution != null) { // get ProjectItems in source directory foreach (IProject project in ProjectService.OpenSolution.Projects) { if (!FileUtility.IsBaseDirectory(project.Directory, directoryName)) { continue; } LoggingService.Debug("Searching for child items in " + project.Name); foreach (ProjectItem item in project.Items) { FileProjectItem fileItem = item as FileProjectItem; if (fileItem == null) { continue; } string virtualFullName = Path.Combine(project.Directory, fileItem.VirtualName); if (FileUtility.IsBaseDirectory(directoryName, virtualFullName)) { if (item.ItemType == ItemType.Folder && FileUtility.IsEqualFileName(directoryName, virtualFullName)) { continue; } LoggingService.Debug("Found file " + virtualFullName); FileProjectItem newItem = new FileProjectItem(node.Project, fileItem.ItemType); if (FileUtility.IsBaseDirectory(directoryName, fileItem.FileName)) { newItem.FileName = FileUtility.RenameBaseDirectory(fileItem.FileName, directoryName, copiedFileName); } else { newItem.FileName = fileItem.FileName; } fileItem.CopyMetadataTo(newItem); if (fileItem.IsLink) { string newVirtualFullName = FileUtility.RenameBaseDirectory(virtualFullName, directoryName, copiedFileName); fileItem.SetEvaluatedMetadata("Link", FileUtility.GetRelativePath(node.Project.Directory, newVirtualFullName)); } ProjectService.AddProjectItem(node.Project, newItem); } } } } FileService.CopyFile(directoryName, copiedFileName, true, false); DirectoryNode newNode = new DirectoryNode(copiedFileName); newNode.InsertSorted(node); if (includeInProject) { IncludeFileInProject.IncludeDirectoryNode(newNode, false); } newNode.Expanding(); } else if (includeInProject) { foreach (TreeNode childNode in node.Nodes) { if (childNode is DirectoryNode) { DirectoryNode directoryNode = (DirectoryNode)childNode; if (FileUtility.IsEqualFileName(directoryNode.Directory, copiedFileName)) { IncludeFileInProject.IncludeDirectoryNode(directoryNode, true); } } } } }