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);
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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);
        }
コード例 #5
0
        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));
                }
            }
        }
コード例 #6
0
        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);
                        }
                    }
                }
            }
        }