Browse Source

Fix EF NuGet package adding web.config files to non-web projects.

NuGet's IProjectSystem.IsSupportedFile now returns false for web.config files when the project is not a web project.
It returns false for app.config files when the project is a web project.
pull/28/head
Matt Ward 13 years ago
parent
commit
3859303d20
  1. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 19
      src/AddIns/Misc/PackageManagement/Project/Src/MSBuildBasedProjectExtensions.cs
  3. 19
      src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
  4. 29
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs
  5. 78
      src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs

1
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -214,6 +214,7 @@
<Compile Include="Src\IThreadSafePackageManagementEvents.cs" /> <Compile Include="Src\IThreadSafePackageManagementEvents.cs" />
<Compile Include="Src\ManagePackagesUserPrompts.cs" /> <Compile Include="Src\ManagePackagesUserPrompts.cs" />
<Compile Include="Src\ManagePackagesViewTitle.cs" /> <Compile Include="Src\ManagePackagesViewTitle.cs" />
<Compile Include="Src\MSBuildBasedProjectExtensions.cs" />
<Compile Include="Src\PackageManagementServiceProvider.cs" /> <Compile Include="Src\PackageManagementServiceProvider.cs" />
<Compile Include="Src\VirtualMethodUpdater.cs" /> <Compile Include="Src\VirtualMethodUpdater.cs" />
<Compile Include="Src\NewProjectsCreated.cs" /> <Compile Include="Src\NewProjectsCreated.cs" />

19
src/AddIns/Misc/PackageManagement/Project/Src/MSBuildBasedProjectExtensions.cs

@ -0,0 +1,19 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement
{
public static class MSBuildBasedProjectExtensions
{
public static readonly Guid WebApplication = Guid.Parse(ProjectTypeGuids.WebApplication);
public static readonly Guid WebSite = Guid.Parse(ProjectTypeGuids.WebSite);
public static bool IsWebProject(this MSBuildBasedProject project)
{
return project.HasProjectType(WebApplication) || project.HasProjectType(WebSite);
}
}
}

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

@ -162,13 +162,26 @@ namespace ICSharpCode.PackageManagement
public bool IsSupportedFile(string path) public bool IsSupportedFile(string path)
{ {
return !IsAppConfigFile(path); if (project.IsWebProject()) {
return !IsAppConfigFile(path);
}
return !IsWebConfigFile(path);
}
bool IsWebConfigFile(string path)
{
return IsFileNameMatchIgnoringPath("web.config", path);
} }
bool IsAppConfigFile(string path) bool IsAppConfigFile(string path)
{ {
string fileName = Path.GetFileName(path); return IsFileNameMatchIgnoringPath("app.config", path);
return IsMatchIgnoringCase("app.config", fileName); }
bool IsFileNameMatchIgnoringPath(string fileName1, string path)
{
string fileName2 = Path.GetFileName(path);
return IsMatchIgnoringCase(fileName1, fileName2);
} }
public override void AddFile(string path, Stream stream) public override void AddFile(string path, Stream stream)

29
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs

@ -32,6 +32,35 @@ namespace PackageManagement.Tests.Helpers
return project; return project;
} }
public static TestableProject CreateTestWebApplicationProject()
{
TestableProject project = CreateTestProject();
AddWebApplicationProjectType(project);
return project;
}
public static TestableProject CreateTestWebSiteProject()
{
TestableProject project = CreateTestProject();
AddWebSiteProjectType(project);
return project;
}
public static void AddWebApplicationProjectType(MSBuildBasedProject project)
{
AddProjectType(project, ProjectTypeGuids.WebApplication);
}
public static void AddWebSiteProjectType(TestableProject project)
{
AddProjectType(project, ProjectTypeGuids.WebSite);
}
public static void AddProjectType(MSBuildBasedProject project, string guidText)
{
project.AddProjectType(Guid.Parse(guidText));
}
public static void AddReference(MSBuildBasedProject project, string referenceName) public static void AddReference(MSBuildBasedProject project, string referenceName)
{ {
var referenceProjectItem = new ReferenceProjectItem(project, referenceName); var referenceProjectItem = new ReferenceProjectItem(project, referenceName);

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

@ -28,6 +28,16 @@ namespace PackageManagement.Tests
project = ProjectHelper.CreateTestProject(); project = ProjectHelper.CreateTestProject();
} }
void CreateTestWebApplicationProject()
{
project = ProjectHelper.CreateTestWebApplicationProject();
}
void CreateTestWebSiteProject()
{
project = ProjectHelper.CreateTestWebSiteProject();
}
void CreateTestProject(string fileName) void CreateTestProject(string fileName)
{ {
CreateTestProject(); CreateTestProject();
@ -133,9 +143,9 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
public void IsSupportedFile_PassedAppConfigFileName_ReturnsFalse() public void IsSupportedFile_ProjectIsWebProjectAndPassedAppConfigFileName_ReturnsFalse()
{ {
CreateTestProject(); CreateTestWebApplicationProject();
CreateProjectSystem(project); CreateProjectSystem(project);
string fileName = @"d:\temp\app.config"; string fileName = @"d:\temp\app.config";
@ -145,9 +155,9 @@ namespace PackageManagement.Tests
} }
[Test] [Test]
public void IsSupportedFile_PassedAppConfigFileNameInUpperCase_ReturnsFalse() public void IsSupportedFile_ProjectIsWebProjectAndPassedAppConfigFileNameInUpperCase_ReturnsFalse()
{ {
CreateTestProject(); CreateTestWebApplicationProject();
CreateProjectSystem(project); CreateProjectSystem(project);
string fileName = @"c:\projects\APP.CONFIG"; string fileName = @"c:\projects\APP.CONFIG";
@ -156,6 +166,66 @@ namespace PackageManagement.Tests
Assert.IsFalse(result); Assert.IsFalse(result);
} }
[Test]
public void IsSupportedFile_ProjectIsWebApplicationProjectAndPassedWebConfigFileName_ReturnsTrue()
{
CreateTestWebApplicationProject();
CreateProjectSystem(project);
string fileName = @"d:\temp\web.config";
bool result = projectSystem.IsSupportedFile(fileName);
Assert.IsTrue(result);
}
[Test]
public void IsSupportedFile_ProjectIsWebSiteProjectAndPassedWebConfigFileName_ReturnsTrue()
{
CreateTestWebSiteProject();
CreateProjectSystem(project);
string fileName = @"d:\temp\web.config";
bool result = projectSystem.IsSupportedFile(fileName);
Assert.IsTrue(result);
}
[Test]
public void IsSupportedFile_ProjectIsCSharpProjectAndPassedWebConfigFileName_ReturnsFalse()
{
CreateTestProject();
CreateProjectSystem(project);
string fileName = @"d:\temp\web.config";
bool result = projectSystem.IsSupportedFile(fileName);
Assert.IsFalse(result);
}
[Test]
public void IsSupportedFile_ProjectIsCSharpProjectAndPassedWebConfigFileNameInUpperCase_ReturnsFalse()
{
CreateTestProject();
CreateProjectSystem(project);
string fileName = @"d:\temp\WEB.CONFIG";
bool result = projectSystem.IsSupportedFile(fileName);
Assert.IsFalse(result);
}
[Test]
public void IsSupportedFile_ProjectIsCSharpProjectAndPassedAppConfigFileName_ReturnsTrue()
{
CreateTestProject();
CreateProjectSystem(project);
string fileName = @"d:\temp\app.config";
bool result = projectSystem.IsSupportedFile(fileName);
Assert.IsTrue(result);
}
[Test] [Test]
public void ReferenceExists_ProjectHasReferenceAndFullPathToAssemblyPassedToMethod_ReturnsTrue() public void ReferenceExists_ProjectHasReferenceAndFullPathToAssemblyPassedToMethod_ReturnsTrue()
{ {

Loading…
Cancel
Save