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

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

@ -0,0 +1,19 @@ @@ -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 @@ -162,13 +162,26 @@ namespace ICSharpCode.PackageManagement
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)
{
string fileName = Path.GetFileName(path);
return IsMatchIgnoringCase("app.config", fileName);
return IsFileNameMatchIgnoringPath("app.config", path);
}
bool IsFileNameMatchIgnoringPath(string fileName1, string path)
{
string fileName2 = Path.GetFileName(path);
return IsMatchIgnoringCase(fileName1, fileName2);
}
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 @@ -32,6 +32,35 @@ namespace PackageManagement.Tests.Helpers
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)
{
var referenceProjectItem = new ReferenceProjectItem(project, referenceName);

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

@ -28,6 +28,16 @@ namespace PackageManagement.Tests @@ -28,6 +28,16 @@ namespace PackageManagement.Tests
project = ProjectHelper.CreateTestProject();
}
void CreateTestWebApplicationProject()
{
project = ProjectHelper.CreateTestWebApplicationProject();
}
void CreateTestWebSiteProject()
{
project = ProjectHelper.CreateTestWebSiteProject();
}
void CreateTestProject(string fileName)
{
CreateTestProject();
@ -133,9 +143,9 @@ namespace PackageManagement.Tests @@ -133,9 +143,9 @@ namespace PackageManagement.Tests
}
[Test]
public void IsSupportedFile_PassedAppConfigFileName_ReturnsFalse()
public void IsSupportedFile_ProjectIsWebProjectAndPassedAppConfigFileName_ReturnsFalse()
{
CreateTestProject();
CreateTestWebApplicationProject();
CreateProjectSystem(project);
string fileName = @"d:\temp\app.config";
@ -145,9 +155,9 @@ namespace PackageManagement.Tests @@ -145,9 +155,9 @@ namespace PackageManagement.Tests
}
[Test]
public void IsSupportedFile_PassedAppConfigFileNameInUpperCase_ReturnsFalse()
public void IsSupportedFile_ProjectIsWebProjectAndPassedAppConfigFileNameInUpperCase_ReturnsFalse()
{
CreateTestProject();
CreateTestWebApplicationProject();
CreateProjectSystem(project);
string fileName = @"c:\projects\APP.CONFIG";
@ -156,6 +166,66 @@ namespace PackageManagement.Tests @@ -156,6 +166,66 @@ namespace PackageManagement.Tests
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]
public void ReferenceExists_ProjectHasReferenceAndFullPathToAssemblyPassedToMethod_ReturnsTrue()
{

Loading…
Cancel
Save