Browse Source

Implement EnvDTE.SolutionBuild.StartupProjects

Used by Entity Framework when enabling migrations.
pull/28/head
Matt Ward 13 years ago
parent
commit
899e4a6964
  1. 17
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Solution.cs
  2. 23
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/SolutionBuild.cs
  3. 1
      src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/Src/Solution.vb
  4. 1
      src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/Src/SolutionBuild.vb
  5. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  6. 4
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectsTests.cs
  7. 59
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/SolutionBuildTests.cs
  8. 15
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/SolutionTests.cs
  9. 16
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs
  10. 10
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/SolutionHelper.cs
  11. 5
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProject.cs

17
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Solution.cs

@ -57,7 +57,22 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -57,7 +57,22 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public global::EnvDTE.SolutionBuild SolutionBuild {
get { throw new NotImplementedException(); }
get { return new SolutionBuild(this); }
}
public global::EnvDTE.Properties Properties {
get {
throw new NotImplementedException();
}
}
internal Project GetStartupProject()
{
MSBuildBasedProject project = solution.StartupProject as MSBuildBasedProject;
if (project != null) {
return new Project(project);
}
return null;
}
}
}

23
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/SolutionBuild.cs

@ -7,10 +7,18 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -7,10 +7,18 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public class SolutionBuild : MarshalByRefObject, global::EnvDTE.SolutionBuild
{
Solution solution;
int lastBuildInfo;
public SolutionBuild()
{
}
public SolutionBuild(Solution solution)
{
this.solution = solution;
}
public global::EnvDTE.SolutionConfiguration ActiveConfiguration {
get { throw new NotImplementedException(); }
}
@ -19,12 +27,25 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -19,12 +27,25 @@ namespace ICSharpCode.PackageManagement.EnvDTE
/// Returns the number of projects that failed to build.
/// </summary>
public int LastBuildInfo {
get { throw new NotImplementedException(); }
get { return lastBuildInfo; }
}
public void BuildProject(string solutionConfiguration, string projectUniqueName, bool waitForBuildToFinish)
{
throw new NotImplementedException();
}
public object StartupProjects {
get { return GetStartupProjects(); }
}
object[] GetStartupProjects()
{
var project = solution.GetStartupProject();
if (project != null) {
return new string[] { project.UniqueName };
}
return new string[0];
}
}
}

1
src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/Src/Solution.vb

@ -9,6 +9,7 @@ Namespace EnvDTE @@ -9,6 +9,7 @@ Namespace EnvDTE
ReadOnly Property Projects() As Projects
ReadOnly Property Globals() As Globals
ReadOnly Property SolutionBuild() As SolutionBuild
ReadOnly Property Properties As Properties
Function FindProjectItem(fileName As String) As ProjectItem
End Interface

1
src/AddIns/Misc/PackageManagement/SharpDevelop.EnvDTE/Src/SolutionBuild.vb

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
Namespace EnvDTE
Public Interface SolutionBuild
ReadOnly Property ActiveConfiguration() As SolutionConfiguration
ReadOnly Property StartupProjects As Object
''' <summary>
''' Returns the number of projects that failed to build.

1
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -102,6 +102,7 @@ @@ -102,6 +102,7 @@
<Compile Include="Src\EnvDTE\FileProjectItemsTests.cs" />
<Compile Include="Src\EnvDTE\NamespaceNameTests.cs" />
<Compile Include="Src\EnvDTE\ProjectsTests.cs" />
<Compile Include="Src\EnvDTE\SolutionBuildTests.cs" />
<Compile Include="Src\EnvDTE\SolutionGlobalsTests.cs" />
<Compile Include="Src\EnvDTE\SolutionTests.cs" />
<Compile Include="Src\Helpers\AttributeHelper.cs" />

4
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectsTests.cs

@ -24,8 +24,8 @@ namespace PackageManagement.Tests.EnvDTE @@ -24,8 +24,8 @@ namespace PackageManagement.Tests.EnvDTE
void CreateSolutionWithTwoProjects(string projectName1, string projectName2)
{
solutionHelper = new SolutionHelper();
solutionHelper.AddProjectToSolution(projectName1);
solutionHelper.AddProjectToSolution(projectName2);
TestableProject project = solutionHelper.AddProjectToSolutionWithFileName(projectName1, @"d:\projects\" + projectName1 + ".csproj");
solutionHelper.AddProjectToSolutionWithFileName(projectName2, @"d:\projects\" + projectName2 + ".csproj");
projects = (Projects)solutionHelper.Solution.Projects;
}

59
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/SolutionBuildTests.cs

@ -0,0 +1,59 @@ @@ -0,0 +1,59 @@
// 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.PackageManagement.EnvDTE;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests.EnvDTE
{
[TestFixture]
public class SolutionBuildTests
{
SolutionHelper solutionHelper;
Solution solution;
SolutionBuild solutionBuild;
void CreateSolutionBuild()
{
solutionHelper = new SolutionHelper();
solution = solutionHelper.Solution;
solutionBuild = (SolutionBuild)solution.SolutionBuild;
}
void CreateSolutionBuild(string solutionFileName)
{
CreateSolutionBuild();
solutionHelper.MSBuildSolution.FileName = solutionFileName;
}
void AddStartupProject(string projectFileName)
{
solutionHelper.AddProjectToSolutionWithFileName("TestProject", projectFileName);
}
[Test]
public void StartupProjects_SolutionHasNoProjects_ReturnsEmptyArray()
{
CreateSolutionBuild();
object startupProjects = solutionBuild.StartupProjects;
object[] array = startupProjects as object[];
Assert.AreEqual(0, array.Length);
}
[Test]
public void StartupProjects_SolutionHasStartupProjectDefined_ReturnsArrayContainingStartupProjectFileName()
{
CreateSolutionBuild(@"d:\projects\MyProject\MySolution.sln");
AddStartupProject(@"d:\projects\MyProject\MyProject.csproj");
object[] expectedProjects = new string[] { "MyProject.csproj" };
object[] projects = solutionBuild.StartupProjects as object[];
CollectionAssert.AreEqual(expectedProjects, projects);
}
}
}

15
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/SolutionTests.cs

@ -149,8 +149,8 @@ namespace PackageManagement.Tests.EnvDTE @@ -149,8 +149,8 @@ namespace PackageManagement.Tests.EnvDTE
public void FindProjectItem_SolutionHasTwoProjectsWithOneItemMatchingFileNameInSecondProject_ReturnsProjectItem()
{
CreateSolution();
AddProjectToSolutionWithFileName("MyProject1", @"c:\projects\MyProject1\MyProject.csproj");
AddProjectToSolutionWithFileName("MyProject2", @"c:\projects\MyProject2\MyProject.csproj");
AddProjectToSolutionWithFileName("MyProject1", @"c:\projects\MyProject1\MyProject1.csproj");
AddProjectToSolutionWithFileName("MyProject2", @"c:\projects\MyProject2\MyProject2.csproj");
AddFileToSecondProjectInSolution(@"src\test.cs");
string fileName = @"c:\projects\MyProject2\src\test.cs";
@ -158,5 +158,16 @@ namespace PackageManagement.Tests.EnvDTE @@ -158,5 +158,16 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual("test.cs", item.Name);
}
[Test]
public void SolutionBuild_SolutionNotBuilt_ReturnsSolutionBuildWithNoProjectsFailingToBuild()
{
CreateSolution();
global::EnvDTE.SolutionBuild solutionBuild = solution.SolutionBuild;
int lastBuildInfo = solutionBuild.LastBuildInfo;
Assert.AreEqual(0, lastBuildInfo);
}
}
}

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

@ -19,16 +19,24 @@ namespace PackageManagement.Tests.Helpers @@ -19,16 +19,24 @@ namespace PackageManagement.Tests.Helpers
Solution solution = new Solution(new MockProjectChangeWatcher());
solution.FileName = @"d:\projects\Test\TestSolution.sln";
return CreateTestProject(solution, name);
}
public static TestableProject CreateTestProject(
Solution parentSolution,
string name,
string fileName = @"d:\projects\Test\TestProject\TestProject.csproj")
{
ProjectCreateInformation createInfo = new ProjectCreateInformation();
createInfo.Solution = solution;
createInfo.Solution = parentSolution;
createInfo.ProjectName = name;
createInfo.SolutionPath = @"d:\projects\Test";
createInfo.ProjectBasePath = @"d:\projects\Test\TestProject";
createInfo.OutputProjectFileName = @"d:\projects\Test\TestProject\TestProject.csproj";
createInfo.OutputProjectFileName = fileName;
var project = new TestableProject(createInfo);
project.Parent = solution;
solution.AddFolder(project);
project.Parent = parentSolution;
parentSolution.AddFolder(project);
return project;
}

10
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/SolutionHelper.cs

@ -48,16 +48,16 @@ namespace PackageManagement.Tests.Helpers @@ -48,16 +48,16 @@ namespace PackageManagement.Tests.Helpers
FakeProjectService.OpenSolution = null;
}
public void AddProjectToSolution(string projectName)
public TestableProject AddProjectToSolution(string projectName)
{
AddProjectToSolutionWithFileName(projectName, @"c:\projects\MyProject\MyProject.csproj");
return AddProjectToSolutionWithFileName(projectName, @"c:\projects\MyProject\MyProject.csproj");
}
public void AddProjectToSolutionWithFileName(string projectName, string fileName)
public TestableProject AddProjectToSolutionWithFileName(string projectName, string fileName)
{
TestableProject project = ProjectHelper.CreateTestProject(projectName);
project.FileName = fileName;
TestableProject project = ProjectHelper.CreateTestProject(MSBuildSolution, projectName, fileName);
FakeProjectService.AddFakeProject(project);
return project;
}
public void AddExtensibilityGlobalsSection()

5
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProject.cs

@ -13,6 +13,7 @@ namespace PackageManagement.Tests.Helpers @@ -13,6 +13,7 @@ namespace PackageManagement.Tests.Helpers
public bool IsSaved;
string assemblyName;
string rootNamespace;
bool isStartable = true;
public ItemType ItemTypeToReturnFromGetDefaultItemType {
get { return TestableProjectBehaviour.ItemTypeToReturnFromGetDefaultItemType; }
@ -26,6 +27,10 @@ namespace PackageManagement.Tests.Helpers @@ -26,6 +27,10 @@ namespace PackageManagement.Tests.Helpers
{
}
public override bool IsStartable {
get { return isStartable; }
}
public override void Save(string fileName)
{
IsSaved = true;

Loading…
Cancel
Save