Browse Source

Set CustomTool for files added by NuGet.

Files added (e.g. T4MVC.tt) when installing a NuGet package were not getting a default CustomTool configured.
Now the CustomToolsService.GetCompatibleCustomToolNames() is used to find the first matching custom tool name for a file.
pull/28/head
Matt Ward 13 years ago
parent
commit
a8f92d9e3e
  1. 15
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProjectService.cs
  2. 6
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementProjectService.cs
  3. 7
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProjectService.cs
  4. 3
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
  5. 39
      src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs

15
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakePackageManagementProjectService.cs

@ -99,5 +99,20 @@ namespace ICSharpCode.PackageManagement.Design @@ -99,5 +99,20 @@ namespace ICSharpCode.PackageManagement.Design
{
return ProjectBrowserUpdater;
}
Dictionary<string, string> defaultCustomTools = new Dictionary<string, string>();
public void AddDefaultCustomToolForFileName(string fileName, string customTool)
{
defaultCustomTools.Add(fileName, customTool);
}
public string GetDefaultCustomToolForFileName(FileProjectItem projectItem)
{
if (defaultCustomTools.ContainsKey(projectItem.FileName)) {
return defaultCustomTools[projectItem.FileName];
}
return String.Empty;
}
}
}

6
src/AddIns/Misc/PackageManagement/Project/Src/IPackageManagementProjectService.cs

@ -25,9 +25,11 @@ namespace ICSharpCode.PackageManagement @@ -25,9 +25,11 @@ namespace ICSharpCode.PackageManagement
void Save(Solution solution);
IEnumerable<IProject> GetOpenProjects();
IProjectContent GetProjectContent(IProject project);
IProjectBrowserUpdater CreateProjectBrowserUpdater();
string GetDefaultCustomToolForFileName(FileProjectItem projectItem);
}
}

7
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProjectService.cs

@ -3,6 +3,8 @@ @@ -3,6 +3,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Gui;
@ -109,5 +111,10 @@ namespace ICSharpCode.PackageManagement @@ -109,5 +111,10 @@ namespace ICSharpCode.PackageManagement
{
return new ThreadSafeProjectBrowserUpdater();
}
public string GetDefaultCustomToolForFileName(FileProjectItem projectItem)
{
return CustomToolsService.GetCompatibleCustomToolNames(projectItem).FirstOrDefault();
}
}
}

3
src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs

@ -212,8 +212,9 @@ namespace ICSharpCode.PackageManagement @@ -212,8 +212,9 @@ namespace ICSharpCode.PackageManagement
FileProjectItem CreateFileProjectItem(string path)
{
ItemType itemType = project.GetDefaultItemType(path);
FileProjectItem fileItem = new FileProjectItem(project, itemType);
var fileItem = new FileProjectItem(project, itemType);
fileItem.FileName = path;
fileItem.CustomTool = projectService.GetDefaultCustomToolForFileName(fileItem);
return fileItem;
}

39
src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs

@ -38,7 +38,12 @@ namespace PackageManagement.Tests @@ -38,7 +38,12 @@ namespace PackageManagement.Tests
{
ProjectHelper.AddFile(project, fileName);
}
void AddDefaultCustomToolForFileName(string fileName, string customTool)
{
projectSystem.FakeProjectService.AddDefaultCustomToolForFileName(fileName, customTool);
}
[Test]
public void Root_NewInstanceCreated_ReturnsProjectDirectory()
{
@ -721,5 +726,37 @@ namespace PackageManagement.Tests @@ -721,5 +726,37 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedPath, path);
}
[Test]
public void AddFile_NewTextTemplateFileWithAssociatedDefaultCustomTool_AddsFileToProjectWithDefaultCustomTool()
{
CreateTestProject();
CreateProjectSystem(project);
string path = @"d:\temp\abc.tt";
AddDefaultCustomToolForFileName(path, "TextTemplatingFileGenerator");
Stream stream = new MemoryStream();
projectSystem.AddFile(path, stream);
FileProjectItem fileItem = ProjectHelper.GetFile(project, path);
string customTool = fileItem.CustomTool;
Assert.AreEqual("TextTemplatingFileGenerator", customTool);
}
[Test]
public void AddFile_NewFileWithNoAssociatedDefaultCustomTool_AddsFileToProjectWithNoDefaultCustomTool()
{
CreateTestProject();
CreateProjectSystem(project);
string path = @"d:\temp\abc.tt";
AddDefaultCustomToolForFileName(path, null);
Stream stream = new MemoryStream();
projectSystem.AddFile(path, stream);
FileProjectItem fileItem = ProjectHelper.GetFile(project, path);
string customTool = fileItem.CustomTool;
Assert.AreEqual(String.Empty, customTool);
}
}
}

Loading…
Cancel
Save