Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'main/tests/UnitTests/MonoDevelop.Projects')
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/LocalCopyTests.cs14
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs84
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/MakefileTests.cs2
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/MdsTests.cs2
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/ProjectTests.cs58
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/SharedAssetsProjectTests.cs65
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/SolutionFolderTests.cs2
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/SolutionTests.cs272
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/TestProjectsChecks.cs74
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/WebProjectTests.cs7
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/WorkspaceTests.cs63
11 files changed, 431 insertions, 212 deletions
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/LocalCopyTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/LocalCopyTests.cs
index cb113fa442..982f80bc48 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/LocalCopyTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/LocalCopyTests.cs
@@ -47,7 +47,7 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("vs-local-copy", "VSLocalCopyTest.sln");
- WorkspaceItem item = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ WorkspaceItem item = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
Assert.IsTrue (item is Solution);
Solution sol = (Solution) item;
@@ -188,7 +188,7 @@ namespace MonoDevelop.Projects
static void AssertCleanBuild (Solution sol, string configuration)
{
- BuildResult cr = sol.Build (Util.GetMonitor (), configuration);
+ BuildResult cr = sol.Build (Util.GetMonitor (), configuration).Result;
Assert.IsNotNull (cr);
Assert.AreEqual (0, cr.ErrorCount);
@@ -209,11 +209,15 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("local-copy-package", "ConsoleProject.sln");
- WorkspaceItem item = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ WorkspaceItem item = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
Solution sol = (Solution) item;
var p = (DotNetProject)sol.Items [0];
var ar = p.References.First (r => r.Reference.Contains ("gtk"));
+
+ if (!ar.Package.IsGacPackage)
+ Assert.Ignore ("This test only works with gtk-sharp as a GAC package.");
+
Assert.AreEqual (false, ar.LocalCopy);
ar.LocalCopy = true;
Assert.AreEqual (true, ar.LocalCopy);
@@ -233,8 +237,8 @@ namespace MonoDevelop.Projects
ar.LocalCopy = false;
Assert.AreEqual (false, ar.LocalCopy);
- sol.Save (new NullProgressMonitor ());
- sol.Build (new NullProgressMonitor (), "Debug");
+ sol.Save (new ProgressMonitor ());
+ sol.Build (new ProgressMonitor (), "Debug").Wait ();
string exeDebug = Platform.IsWindows ? ".pdb" : ".exe.mdb";
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs
index 8c834806e6..e44f9386a1 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs
@@ -50,14 +50,14 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("console-project", "ConsoleProject.sln");
- WorkspaceItem item = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution item = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
Assert.IsTrue (item is Solution);
Solution sol = (Solution) item;
TestProjectsChecks.CheckBasicVsConsoleProject (sol);
string projectFile = ((Project)sol.Items [0]).FileName;
- BuildResult cr = item.Build (Util.GetMonitor (), "Debug");
+ BuildResult cr = item.Build (Util.GetMonitor (), "Debug").Result;
Assert.IsNotNull (cr);
Assert.AreEqual (0, cr.ErrorCount);
Assert.AreEqual (0, cr.WarningCount);
@@ -78,12 +78,12 @@ namespace MonoDevelop.Projects
sol.Save (Util.GetMonitor ());
// Ensure the project is buildable
- var result = sol.Build (Util.GetMonitor (), "Debug");
+ var result = sol.Build (Util.GetMonitor (), "Debug").Result;
Assert.AreEqual (0, result.ErrorCount, "#1");
// Ensure the project is still buildable with xbuild after a rename
- ProjectOptionsDialog.RenameItem (sol.GetAllProjects () [0], "Test");
- result = sol.Build (Util.GetMonitor (), "Release");
+ ProjectOptionsDialog.RenameItem (sol.GetAllProjects ().First (), "Test");
+ result = sol.Build (Util.GetMonitor (), "Release").Result;
Assert.AreEqual (0, result.ErrorCount, "#2");
}
@@ -97,7 +97,7 @@ namespace MonoDevelop.Projects
// msbuild format
string solXml = File.ReadAllText (sol.FileName);
- string projectXml = Util.GetXmlFileInfoset (((SolutionEntityItem)sol.Items [0]).FileName);
+ string projectXml = Util.GetXmlFileInfoset (((SolutionItem)sol.Items [0]).FileName);
// Make sure we compare using the same guid
Project p = sol.Items [0] as Project;
@@ -140,7 +140,7 @@ namespace MonoDevelop.Projects
public void TestConfigurationMerging ()
{
string solFile = Util.GetSampleProject ("test-configuration-merging", "TestConfigurationMerging.sln");
- Solution sol = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile) as Solution;
+ Solution sol = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result as Solution;
Assert.IsNotNull (sol);
Assert.AreEqual (1, sol.Items.Count);
@@ -187,7 +187,7 @@ namespace MonoDevelop.Projects
public void TestConfigurationMergingConfigPlatformCombinations ()
{
string projectFile = Util.GetSampleProject ("test-configuration-merging", "TestConfigurationMerging2.csproj");
- DotNetProject p = Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projectFile) as DotNetProject;
+ DotNetProject p = Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projectFile).Result as DotNetProject;
Assert.IsNotNull (p);
Assert.IsNotNull (p.Configurations ["Debug|x86"]);
@@ -209,7 +209,7 @@ namespace MonoDevelop.Projects
public void TestConfigurationMergingDefaultValues ()
{
string projectFile = Util.GetSampleProject ("test-configuration-merging", "TestConfigurationMerging3.csproj");
- DotNetProject p = Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projectFile) as DotNetProject;
+ DotNetProject p = Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projectFile).Result as DotNetProject;
Assert.IsNotNull (p);
DotNetProjectConfiguration conf = p.Configurations ["Release|x86"] as DotNetProjectConfiguration;
@@ -229,7 +229,7 @@ namespace MonoDevelop.Projects
public void TestConfigurationMergingKeepOldConfig ()
{
string projectFile = Util.GetSampleProject ("test-configuration-merging", "TestConfigurationMerging4.csproj");
- DotNetProject p = Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projectFile) as DotNetProject;
+ DotNetProject p = Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projectFile).Result as DotNetProject;
Assert.IsNotNull (p);
DotNetProjectConfiguration conf = p.Configurations ["Debug|x86"] as DotNetProjectConfiguration;
@@ -255,7 +255,7 @@ namespace MonoDevelop.Projects
public void TestConfigurationMergingChangeNoMergeToParent ()
{
string projectFile = Util.GetSampleProject ("test-configuration-merging", "TestConfigurationMerging5.csproj");
- DotNetProject p = Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projectFile) as DotNetProject;
+ DotNetProject p = Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projectFile).Result as DotNetProject;
Assert.IsNotNull (p);
DotNetProjectConfiguration conf = p.Configurations ["Debug|x86"] as DotNetProjectConfiguration;
@@ -276,7 +276,7 @@ namespace MonoDevelop.Projects
public void TestConfigurationMergingChangeMergeToParent ()
{
string projectFile = Util.GetSampleProject ("test-configuration-merging", "TestConfigurationMerging6.csproj");
- DotNetProject p = Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projectFile) as DotNetProject;
+ DotNetProject p = Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projectFile).Result as DotNetProject;
Assert.IsNotNull (p);
DotNetProjectConfiguration conf = p.Configurations ["Debug|x86"] as DotNetProjectConfiguration;
@@ -298,7 +298,7 @@ namespace MonoDevelop.Projects
public void TestConfigurationMergingChangeMergeToParent2 ()
{
string projectFile = Util.GetSampleProject ("test-configuration-merging", "TestConfigurationMerging7.csproj");
- DotNetProject p = Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projectFile) as DotNetProject;
+ DotNetProject p = Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projectFile).Result as DotNetProject;
Assert.IsNotNull (p);
DotNetProjectConfiguration conf = p.Configurations ["Debug|x86"] as DotNetProjectConfiguration;
@@ -320,7 +320,7 @@ namespace MonoDevelop.Projects
public void ProjectReferenceWithSpace ()
{
string solFile = Util.GetSampleProject ("project-ref-with-spaces", "project-ref-with-spaces.sln");
- Solution sol = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile) as Solution;
+ Solution sol = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result as Solution;
Assert.IsNotNull (sol);
Assert.AreEqual (2, sol.Items.Count);
@@ -344,7 +344,7 @@ namespace MonoDevelop.Projects
conf.OutputAssembly = value;
sol.Save (Util.GetMonitor ());
- sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), sol.FileName);
+ sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), sol.FileName).Result;
p = (DotNetProject) sol.GetAllProjects ().First ();
conf = ((DotNetProjectConfiguration)p.Configurations [0]);
@@ -359,35 +359,48 @@ namespace MonoDevelop.Projects
Environment.SetEnvironmentVariable ("SOME_PLACE", dir);
string solFile = Util.GetSampleProject ("property-evaluation-test", "property-evaluation-test.sln");
- Solution sol = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile) as Solution;
+ Solution sol = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result as Solution;
var p = (DotNetProject) sol.GetAllProjects ().First ();
Assert.AreEqual ("Program1_test1.cs", p.Files[0].FilePath.FileName, "Basic replacement");
Assert.AreEqual ("Program2_test1_test2.cs", p.Files[1].FilePath.FileName, "Property referencing same property");
- Assert.AreEqual ("Program3_$(DebugType).cs", p.Files[2].FilePath.FileName, "Property inside group with non-evaluable condition");
+ Assert.AreEqual ("Program3_full.cs", p.Files[2].FilePath.FileName, "Property inside group with non-evaluable condition");
Assert.AreEqual ("Program4_yes_value.cs", p.Files[3].FilePath.FileName, "Evaluation of group condition");
Assert.AreEqual ("Program5_yes_value.cs", p.Files[4].FilePath.FileName, "Evaluation of property condition");
- Assert.AreEqual ("Program6_$(FFF).cs", p.Files[5].FilePath.FileName, "Evaluation of property with non-evaluable condition");
+ Assert.AreEqual ("Program6_unknown.cs", p.Files[5].FilePath.FileName, "Evaluation of property with non-evaluable condition");
Assert.AreEqual ("Program7_test1.cs", p.Files[6].FilePath.FileName, "Item conditions are ignored");
- Assert.AreEqual ("Program8_test1.cs", p.Files[7].FilePath.FileName, "Item group conditions are ignored");
- Assert.AreEqual ("Program9_$(GGG).cs", p.Files[8].FilePath.FileName, "Non-evaluable property group clears properties");
- Assert.AreEqual ("Program10_$(AAA", p.Files[9].FilePath.FileName, "Invalid property reference");
- Assert.AreEqual ("Program11_EnvTest.cs", p.Files[10].FilePath.FileName, "Environment variable");
var testRef = Path.Combine (dir, "MonoDevelop.Core.dll");
var asms = p.GetReferencedAssemblies (sol.Configurations [0].Selector).ToArray ();
Assert.IsTrue (asms.Contains (testRef));
}
+ [Ignore ("xbuild bug. It is not returning correct values for evaluated items without condition list")]
+ [Test]
+ public void EvaluatePropertiesWithConditionalGroup ()
+ {
+ string dir = Path.GetDirectoryName (typeof(Project).Assembly.Location);
+ Environment.SetEnvironmentVariable ("HHH", "EnvTest");
+ Environment.SetEnvironmentVariable ("SOME_PLACE", dir);
+
+ string solFile = Util.GetSampleProject ("property-evaluation-test", "property-evaluation-test.sln");
+ Solution sol = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result as Solution;
+ var p = (DotNetProject) sol.GetAllProjects ().First ();
+ Assert.AreEqual ("Program8_test1.cs", p.Files[7].FilePath.FileName, "Item group conditions are not ignored");
+ Assert.AreEqual ("Program9_$(GGG).cs", p.Files[8].FilePath.FileName, "Non-evaluable property group clears properties");
+ Assert.AreEqual ("Program10_$(AAA", p.Files[9].FilePath.FileName, "Invalid property reference");
+ Assert.AreEqual ("Program11_EnvTest.cs", p.Files[10].FilePath.FileName, "Environment variable");
+ }
+
void LoadBuildVSConsoleProject (string vsVersion, string toolsVersion)
{
string solFile = Util.GetSampleProject ("ConsoleApp-VS" + vsVersion, "ConsoleApplication.sln");
- var monitor = new NullProgressMonitor ();
- var sol = (Solution)Services.ProjectService.ReadWorkspaceItem (monitor, solFile);
+ var monitor = new ProgressMonitor ();
+ var sol = (Solution)Services.ProjectService.ReadWorkspaceItem (monitor, solFile).Result;
Assert.IsTrue (monitor.Errors.Length == 0);
Assert.IsTrue (monitor.Warnings.Length == 0);
var p = (DotNetProject) sol.GetAllProjects ().First ();
- Assert.AreEqual (toolsVersion, MSBuildProjectService.GetHandler (p).ToolsVersion);
- var r = sol.Build (monitor, "Debug");
+ Assert.AreEqual (toolsVersion, p.ToolsVersion);
+ var r = sol.Build (monitor, "Debug").Result;
Assert.IsTrue (monitor.Errors.Length == 0);
Assert.IsTrue (monitor.Warnings.Length == 0);
Assert.IsFalse (r.Failed);
@@ -436,12 +449,12 @@ namespace MonoDevelop.Projects
public void SaveReferenceWithCondition ()
{
string solFile = Util.GetSampleProject ("console-project-conditional-reference", "ConsoleProject.sln");
- Solution sol = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile) as Solution;
+ Solution sol = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result as Solution;
string proj = sol.GetAllProjects ().First ().FileName;
string projectXml1 = Util.GetXmlFileInfoset (proj);
- sol.Save (new NullProgressMonitor ());
+ sol.Save (new ProgressMonitor ());
string projectXml2 = Util.GetXmlFileInfoset (proj);
Assert.AreEqual (projectXml1, projectXml2);
@@ -482,5 +495,20 @@ namespace MonoDevelop.Projects
Assert.AreEqual (condition, import.GetAttribute ("Condition"));
}
+
+ [Test]
+ public void ProjectWithCustomConfigPropertyGroupBug20554 ()
+ {
+ string solFile = Util.GetSampleProject ("console-project-custom-configs", "ConsoleProject.sln");
+ Solution sol = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result as Solution;
+
+ string proj = sol.GetAllProjects ().First ().FileName;
+
+ string projectXml1 = Util.GetXmlFileInfoset (proj);
+ sol.Save (new ProgressMonitor ());
+
+ string projectXml2 = Util.GetXmlFileInfoset (proj);
+ Assert.AreEqual (projectXml1, projectXml2);
+ }
}
}
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/MakefileTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/MakefileTests.cs
index c66a684c1f..37f28ce6de 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/MakefileTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/MakefileTests.cs
@@ -68,7 +68,7 @@ namespace MonoDevelop.Projects
Assert.Ignore ();
string solFile = Util.GetSampleProject ("console-project-with-makefile", "ConsoleProject.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
DotNetProject p = (DotNetProject) sol.Items [0];
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/MdsTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/MdsTests.cs
index a1b8225b33..ca8678672c 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/MdsTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/MdsTests.cs
@@ -47,7 +47,7 @@ namespace MonoDevelop.Projects
sol.FileName = Path.Combine (dir, "thesolution");
ws.Items.Add (sol);
- DotNetAssemblyProject p = new DotNetAssemblyProject ("C#");
+ DotNetProject p = Services.ProjectService.CreateDotNetProject ("C#");
p.FileName = Path.Combine (dir, "theproject");
sol.RootFolder.Items.Add (p);
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/ProjectTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/ProjectTests.cs
index 7b1bc7d9d0..7da7a99a82 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/ProjectTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/ProjectTests.cs
@@ -31,6 +31,7 @@ using NUnit.Framework;
using UnitTests;
using MonoDevelop.Core;
using System.Linq;
+using System.Xml;
namespace MonoDevelop.Projects
{
@@ -40,7 +41,7 @@ namespace MonoDevelop.Projects
[Test()]
public void ProjectFilePaths ()
{
- DotNetProject project = new DotNetAssemblyProject ("C#");
+ DotNetProject project = Services.ProjectService.CreateDotNetProject ("C#");
string dir = Environment.CurrentDirectory;
ProjectFile file1 = project.AddFile (Util.Combine (dir, "test1.cs"), BuildAction.Compile);
@@ -67,10 +68,10 @@ namespace MonoDevelop.Projects
public void Resources ()
{
string solFile = Util.GetSampleProject ("resources-tester", "ResourcesTester.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
CheckResourcesSolution (sol);
- BuildResult res = sol.Build (Util.GetMonitor (), "Debug");
+ BuildResult res = sol.Build (Util.GetMonitor (), "Debug").Result;
Assert.AreEqual (0, res.ErrorCount);
Assert.AreEqual (0, res.WarningCount);
Assert.AreEqual (1, res.BuildCount);
@@ -78,7 +79,7 @@ namespace MonoDevelop.Projects
string spath = Util.Combine (sol.BaseDirectory, "ResourcesTester", "bin", "Debug", "ca", "ResourcesTesterApp.resources.dll");
Assert.IsTrue (File.Exists (spath), "Satellite assembly not generated");
- sol.Clean (Util.GetMonitor (), "Debug");
+ sol.Clean (Util.GetMonitor (), "Debug").Wait ();
Assert.IsFalse (File.Exists (spath), "Satellite assembly not removed");
// msbuild doesn't delete this directory
@@ -173,7 +174,10 @@ namespace MonoDevelop.Projects
ProjectCreateInformation info = new ProjectCreateInformation ();
info.ProjectName = "Some.Test";
info.ProjectBasePath = "/tmp/test";
- DotNetProject p = new DotNetAssemblyProject ("C#", info, null);
+ var doc = new XmlDocument ();
+ var projectOptions = doc.CreateElement ("Options");
+ projectOptions.SetAttribute ("language", "C#");
+ DotNetProject p = (DotNetProject) Services.ProjectService.CreateProject ("DotNet", info, projectOptions);
Assert.AreEqual (2, p.Configurations.Count);
Assert.AreEqual ("Debug", p.Configurations [0].Name);
@@ -186,7 +190,7 @@ namespace MonoDevelop.Projects
[Test()]
public void NewConfigurationsHaveAnAssemblyName ()
{
- DotNetProject p = new DotNetAssemblyProject ("C#");
+ DotNetProject p = Services.ProjectService.CreateDotNetProject ("C#");
p.Name = "HiThere";
DotNetProjectConfiguration c = (DotNetProjectConfiguration) p.CreateConfiguration ("First");
Assert.AreEqual ("HiThere", c.OutputAssembly);
@@ -195,7 +199,7 @@ namespace MonoDevelop.Projects
[Test()]
public void CustomCommands ()
{
- DotNetProject p = new DotNetAssemblyProject ("C#");
+ DotNetProject p = Services.ProjectService.CreateDotNetProject ("C#");
p.Name = "SomeProject";
DotNetProjectConfiguration c = (DotNetProjectConfiguration) p.CreateConfiguration ("First");
@@ -220,7 +224,7 @@ namespace MonoDevelop.Projects
public void FileDependencies ()
{
string solFile = Util.GetSampleProject ("file-dependencies", "ConsoleProject.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
Project p = (Project) sol.Items [0];
var dir = p.BaseDirectory;
@@ -288,8 +292,8 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("reference-refresh", "ConsoleProject.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- DotNetProject project = sol.GetAllSolutionItems<DotNetProject> ().FirstOrDefault ();
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
+ DotNetProject project = sol.GetAllItems<DotNetProject> ().FirstOrDefault ();
Assert.AreEqual (4, project.References.Count);
@@ -435,7 +439,7 @@ namespace MonoDevelop.Projects
[Test]
public void AssemblyReferenceHintPath ()
{
- var file = GetType ().Assembly.Location;
+ var file = (FilePath) GetType ().Assembly.Location;
var asmName = Path.GetFileNameWithoutExtension (file);
var r = new ProjectReference (ReferenceType.Assembly, file);
@@ -447,5 +451,37 @@ namespace MonoDevelop.Projects
Assert.AreEqual (file, r.HintPath);
}
+
+ [Test]
+ public void LoadPortableLibrary ()
+ {
+ string solFile = Util.GetSampleProject ("portable-library", "portable-library.sln");
+
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
+ var p = sol.FindProjectByName ("PortableLibrary");
+
+ Assert.IsInstanceOf<DotNetProject> (p);
+
+ var pl = (DotNetProject)p;
+ Assert.AreEqual (".NETPortable", pl.GetDefaultTargetFrameworkId ().Identifier);
+ }
+
+ [Test]
+ public void BuildPortableLibrary ()
+ {
+ string solFile = Util.GetSampleProject ("portable-library", "portable-library.sln");
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
+ var res = sol.Build (Util.GetMonitor (), "Debug").Result;
+ Assert.AreEqual (0, res.Errors.Count);
+ }
+
+ [Test]
+ public void PortableLibraryImplicitReferences ()
+ {
+ string solFile = Util.GetSampleProject ("portable-library", "portable-library.sln");
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
+ var p = (DotNetProject) sol.FindProjectByName ("PortableLibrary");
+ var refs = p.GetReferencedAssemblies (p.Configurations [0].Selector).Select (r => Path.GetFileName (r)).ToArray ();
+ }
}
}
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/SharedAssetsProjectTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/SharedAssetsProjectTests.cs
index dccaac4af8..4cc2f1b653 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/SharedAssetsProjectTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/SharedAssetsProjectTests.cs
@@ -38,9 +38,7 @@ namespace MonoDevelop.Projects
public void LoadSharedProject ()
{
string solFile = Util.GetSampleProject ("SharedProjectTest", "SharedProjectTest.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
-
- Assert.AreEqual (4, sol.GetAllProjects ().Count);
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
var pc1 = sol.FindProjectByName ("Console1");
Assert.IsNotNull (pc1);
@@ -54,6 +52,8 @@ namespace MonoDevelop.Projects
var pcs = (SharedAssetsProject) sol.FindProjectByName ("Shared");
Assert.IsNotNull (pcs);
+ Assert.AreEqual (4, sol.GetAllProjects ().Count ());
+
var sharedFile = pcs.ItemDirectory.Combine ("MyClass.cs");
Assert.IsTrue (pc1.Files.GetFile (sharedFile) != null);
@@ -68,7 +68,7 @@ namespace MonoDevelop.Projects
public void PropagateFileChanges ()
{
string solFile = Util.GetSampleProject ("SharedProjectTest", "SharedProjectTest.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
var pc1 = sol.FindProjectByName ("Console1");
var pc2 = sol.FindProjectByName ("Console2");
var pc3 = sol.FindProjectByName ("Console3");
@@ -113,7 +113,7 @@ namespace MonoDevelop.Projects
public void AddReference ()
{
string solFile = Util.GetSampleProject ("SharedProjectTest", "SharedProjectTest.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
var pcs = sol.FindProjectByName ("Shared");
var pc3 = (DotNetProject) sol.FindProjectByName ("Console3");
@@ -136,7 +136,7 @@ namespace MonoDevelop.Projects
public void RemoveReference ()
{
string solFile = Util.GetSampleProject ("SharedProjectTest", "SharedProjectTest.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
var pc1 = (DotNetProject) sol.FindProjectByName ("Console1");
var pc2 = (DotNetProject) sol.FindProjectByName ("Console2");
@@ -173,7 +173,7 @@ namespace MonoDevelop.Projects
};
sp.AddFile (sol.ItemDirectory.Combine ("Test.cs"));
- sp.Save (sol.ItemDirectory.Combine ("Shared"), Util.GetMonitor ());
+ sp.Save (Util.GetMonitor (), sol.ItemDirectory.Combine ("Shared"));
sol.RootFolder.AddItem (sp);
sol.Save (Util.GetMonitor ());
@@ -282,7 +282,7 @@ namespace MonoDevelop.Projects
Assert.IsNull (sol.StartupItem);
// An executable project is set as startup by default when there is no startup project
- DotNetAssemblyProject project = new DotNetAssemblyProject ("C#");
+ var project = Services.ProjectService.CreateDotNetProject ("C#");
sol.RootFolder.AddItem (project);
Assert.IsTrue (sol.StartupItem == project);
}
@@ -297,7 +297,7 @@ namespace MonoDevelop.Projects
sol.RootFolder.AddItem (shared);
// Reference to shared is added before adding project to solution
- var main = new DotNetAssemblyProject ("C#");
+ var main = Services.ProjectService.CreateDotNetProject ("C#");
main.References.Add (new ProjectReference (shared));
sol.RootFolder.AddItem (main);
@@ -312,7 +312,7 @@ namespace MonoDevelop.Projects
shared.AddFile ("Foo.cs");
// Reference to shared is added before adding project to solution
- var main = new DotNetAssemblyProject ("C#");
+ var main = Services.ProjectService.CreateDotNetProject ("C#");
main.References.Add (new ProjectReference (shared));
sol.RootFolder.AddItem (main);
@@ -329,7 +329,7 @@ namespace MonoDevelop.Projects
var shared = new SharedAssetsProject ("C#");
shared.AddFile ("Foo.cs");
- var main = new DotNetAssemblyProject ("C#");
+ var main = Services.ProjectService.CreateDotNetProject ("C#");
var pref = new ProjectReference (shared);
main.References.Add (pref);
@@ -346,6 +346,49 @@ namespace MonoDevelop.Projects
Assert.IsNull (main.Files.GetFile ("Foo.cs"));
Assert.IsFalse (main.References.Contains (pref));
}
+
+ [Test]
+ public void ProjItemsFileNameNotMatchingShproj_Bug20571 ()
+ {
+ string solFile = Util.GetSampleProject ("SharedProjectTestBug20571", "SharedProjectTest.sln");
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
+
+ Assert.AreEqual (3, sol.GetAllProjects ().Count());
+
+ var pc1 = (DotNetProject) sol.FindProjectByName ("Console1");
+ Assert.IsNotNull (pc1);
+
+ var pc2 = (DotNetProject) sol.FindProjectByName ("Console2");
+ Assert.IsNotNull (pc2);
+
+ var pcs = (SharedAssetsProject) sol.FindProjectByName ("Shared");
+ Assert.IsNotNull (pcs);
+
+ Assert.IsTrue (pc1.References.Any (r => r.Reference == "Shared"));
+
+ var sharedFile = pcs.ItemDirectory.Combine ("MyClass.cs");
+
+ Assert.IsTrue (pc1.Files.GetFile (sharedFile) != null);
+ Assert.IsTrue (pc2.Files.GetFile (sharedFile) == null);
+ Assert.IsTrue (pcs.Files.GetFile (sharedFile) != null);
+
+ pc2.References.Add (new ProjectReference (pcs));
+ Assert.IsTrue (pc2.Files.GetFile (sharedFile) != null);
+
+ pc2.Save (Util.GetMonitor ());
+
+ Solution sol2 = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), sol.FileName).Result;
+ sol.Dispose ();
+
+ pc2 = (DotNetProject) sol2.FindProjectByName ("Console2");
+ Assert.IsNotNull (pc2);
+
+ Assert.IsTrue (pc2.References.Any (r => r.Reference == "Shared"));
+
+ Assert.IsTrue (pc2.Files.GetFile (sharedFile) != null);
+
+ sol2.Dispose ();
+ }
}
}
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/SolutionFolderTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/SolutionFolderTests.cs
index ec5ad7841a..6080f5d6f3 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/SolutionFolderTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/SolutionFolderTests.cs
@@ -39,7 +39,7 @@ namespace MonoDevelop.Projects
public void CheckProjectContainsItself ()
{
var folder = new SolutionFolder ();
- var project = new DotNetAssemblyProject { Name = "foo" };
+ var project = new MonoDevelop.CSharp.Project.CSharpProject { Name = "foo" };
folder.AddItem (project);
Assert.IsNotNull (folder.GetProjectContainingFile (project.FileName), "#1");
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/SolutionTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/SolutionTests.cs
index 4535f14339..9073fa61d4 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/SolutionTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/SolutionTests.cs
@@ -89,14 +89,14 @@ namespace MonoDevelop.Projects
Assert.AreEqual (1, countSolutionItemAdded);
Assert.AreEqual (0, sol.Items.Count);
- DotNetAssemblyProject project = new DotNetAssemblyProject ("C#");
+ var project = Services.ProjectService.CreateDotNetProject ("C#");
project.Name = "project1";
sol.RootFolder.Items.Add (project);
Assert.AreEqual (2, countSolutionItemAdded);
Assert.AreEqual (1, sol.Items.Count);
- DotNetAssemblyProject project2 = new DotNetAssemblyProject ("C#");
+ var project2 = Services.ProjectService.CreateDotNetProject ("C#");
project2.Name = "project2";
folder.Items.Add (project2);
@@ -197,7 +197,7 @@ namespace MonoDevelop.Projects
{
int nameChanges = 0;
- DotNetAssemblyProject prj = new DotNetAssemblyProject ("C#");
+ var prj = Services.ProjectService.CreateDotNetProject ("C#");
prj.FileFormat = Util.FileFormatMSBuild05;
prj.NameChanged += delegate {
nameChanges++;
@@ -279,7 +279,7 @@ namespace MonoDevelop.Projects
Assert.IsFalse (p.NeedsReload);
string solFile2 = Util.GetSampleProject ("csharp-console", "csharp-console.sln");
- Solution sol2 = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile2);
+ Solution sol2 = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile2).Result;
Project p2 = sol2.Items [0] as Project;
Assert.IsFalse (sol2.NeedsReload);
Assert.IsFalse (p2.NeedsReload);
@@ -287,7 +287,7 @@ namespace MonoDevelop.Projects
// Check reloading flag in another solution
string solFile = sol.FileName;
- Solution sol3 = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol3 = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
Assert.IsFalse (sol3.NeedsReload);
Project p3 = sol3.Items [0] as Project;
@@ -304,7 +304,7 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("console-with-libs", "console-with-libs.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
DotNetProject p = (DotNetProject) sol.FindProjectByName ("console-with-libs");
DotNetProject lib2 = (DotNetProject) sol.FindProjectByName ("library2");
@@ -320,7 +320,7 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("console-with-libs", "console-with-libs.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
DotNetProject p = (DotNetProject) sol.FindProjectByName ("console-with-libs");
DotNetProject lib2 = (DotNetProject) sol.FindProjectByName ("library2");
@@ -333,7 +333,7 @@ namespace MonoDevelop.Projects
// Test that build configuration info is not lost when reloading a project
- lib2 = (DotNetProject) lib2.ParentFolder.ReloadItem (Util.GetMonitor (), lib2);
+ lib2 = (DotNetProject) lib2.ParentFolder.ReloadItem (Util.GetMonitor (), lib2).Result;
be = sol.Configurations ["Debug"].GetEntryForItem (lib2);
Assert.IsFalse (be.Build);
@@ -341,7 +341,7 @@ namespace MonoDevelop.Projects
// Test that startup project is the reloaded project
- p = (DotNetProject) p.ParentFolder.ReloadItem (Util.GetMonitor (), p);
+ p = (DotNetProject) p.ParentFolder.ReloadItem (Util.GetMonitor (), p).Result;
Assert.AreSame (sol.StartupItem, p);
}
@@ -350,22 +350,22 @@ namespace MonoDevelop.Projects
{
Solution sol = TestProjectsChecks.CreateConsoleSolution ("item-files");
- List<FilePath> files = sol.GetItemFiles (false);
+ List<FilePath> files = sol.GetItemFiles (false).ToList ();
Assert.AreEqual (1, files.Count);
Assert.AreEqual (sol.FileName, files [0]);
DotNetProject p = (DotNetProject) sol.Items [0];
- files = p.GetItemFiles (false);
+ files = p.GetItemFiles (false).ToList ();
Assert.AreEqual (1, files.Count);
Assert.AreEqual (p.FileName, files [0]);
- files = p.GetItemFiles (true);
+ files = p.GetItemFiles (true).ToList ();
Assert.AreEqual (6, files.Count);
Assert.IsTrue (files.Contains (p.FileName));
foreach (ProjectFile pf in p.Files)
Assert.IsTrue (files.Contains (pf.FilePath), "Contains " + pf.FilePath);
- files = sol.GetItemFiles (true);
+ files = sol.GetItemFiles (true).ToList ();
Assert.AreEqual (7, files.Count);
Assert.IsTrue (files.Contains (sol.FileName));
Assert.IsTrue (files.Contains (p.FileName));
@@ -378,7 +378,7 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("console-with-libs", "console-with-libs.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
DotNetProject p = (DotNetProject) sol.FindProjectByName ("console-with-libs");
Assert.IsNotNull (p);
DotNetProject lib1 = (DotNetProject) sol.FindProjectByName ("library1");
@@ -394,7 +394,7 @@ namespace MonoDevelop.Projects
// Build the project and the references
- BuildResult res = p.Build (Util.GetMonitor (), config, true);
+ BuildResult res = p.Build (Util.GetMonitor (), config, true).Result;
foreach (BuildError er in res.Errors)
Console.WriteLine (er);
Assert.AreEqual (0, res.ErrorCount);
@@ -410,7 +410,7 @@ namespace MonoDevelop.Projects
// Build the project, but not the references
- res = p.Build (Util.GetMonitor (), config, false);
+ res = p.Build (Util.GetMonitor (), config, false).Result;
Assert.AreEqual (0, res.ErrorCount);
Assert.AreEqual (0, res.WarningCount);
Assert.AreEqual (1, res.BuildCount);
@@ -421,7 +421,7 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("console-with-libs", "console-with-libs.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
DotNetProject p = (DotNetProject) sol.FindProjectByName ("console-with-libs");
DotNetProject lib1 = (DotNetProject) sol.FindProjectByName ("library1");
DotNetProject lib2 = (DotNetProject) sol.FindProjectByName ("library2");
@@ -439,7 +439,7 @@ namespace MonoDevelop.Projects
// Build the project and the references
- BuildResult res = ws.Build (Util.GetMonitor (), "Debug");
+ BuildResult res = ws.Build (Util.GetMonitor (), ConfigurationSelector.Default).Result;
Assert.AreEqual (0, res.ErrorCount);
Assert.AreEqual (0, res.WarningCount);
Assert.AreEqual (3, res.BuildCount);
@@ -453,7 +453,7 @@ namespace MonoDevelop.Projects
// Clean the workspace
- ws.Clean (Util.GetMonitor (), "Debug");
+ ws.Clean (Util.GetMonitor (), ConfigurationSelector.Default).Wait ();
Assert.IsFalse (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", "console-with-libs.exe")));
Assert.IsFalse (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb ("console-with-libs.exe"))));
Assert.IsFalse (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", "library1.dll")));
@@ -463,7 +463,7 @@ namespace MonoDevelop.Projects
// Build the solution
- res = ws.Build (Util.GetMonitor (), "Debug");
+ res = ws.Build (Util.GetMonitor (), ConfigurationSelector.Default).Result;
Assert.AreEqual (0, res.ErrorCount);
Assert.AreEqual (0, res.WarningCount);
Assert.AreEqual (3, res.BuildCount);
@@ -477,7 +477,7 @@ namespace MonoDevelop.Projects
// Clean the solution
- sol.Clean (Util.GetMonitor (), "Debug");
+ sol.Clean (Util.GetMonitor (), "Debug").Wait ();
Assert.IsFalse (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", "console-with-libs.exe")));
Assert.IsFalse (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb ("console-with-libs.exe"))));
Assert.IsFalse (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", "library1.dll")));
@@ -487,7 +487,7 @@ namespace MonoDevelop.Projects
// Build the solution folder
- res = folder.Build (Util.GetMonitor (), (SolutionConfigurationSelector) "Debug");
+ res = folder.Build (Util.GetMonitor (), (SolutionConfigurationSelector) "Debug").Result;
Assert.AreEqual (0, res.ErrorCount);
Assert.AreEqual (0, res.WarningCount);
Assert.AreEqual (1, res.BuildCount);
@@ -501,7 +501,7 @@ namespace MonoDevelop.Projects
// Clean the solution folder
- folder.Clean (Util.GetMonitor (), (SolutionConfigurationSelector) "Debug");
+ folder.Clean (Util.GetMonitor (), (SolutionConfigurationSelector) "Debug").Wait ();
Assert.IsFalse (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", "library2.dll")));
Assert.IsFalse (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb ("library2.dll"))));
}
@@ -514,7 +514,7 @@ namespace MonoDevelop.Projects
Assert.AreEqual (Services.ProjectService.DefaultFileFormat.Id, sol.FileFormat.Id);
Assert.AreEqual (Services.ProjectService.DefaultFileFormat.Id, p.FileFormat.Id);
- Assert.AreEqual ("4.0", MSBuildProjectService.GetHandler (p).ToolsVersion);
+ Assert.AreEqual ("4.0", p.ToolsVersion);
// Change solution format of unsaved solution
@@ -522,38 +522,38 @@ namespace MonoDevelop.Projects
Assert.AreEqual ("MSBuild08", sol.FileFormat.Id);
Assert.AreEqual ("MSBuild08", p.FileFormat.Id);
- Assert.AreEqual ("3.5", MSBuildProjectService.GetHandler (p).ToolsVersion);
+ Assert.AreEqual ("3.5", p.ToolsVersion);
sol.ConvertToFormat (Util.FileFormatMSBuild10, true);
Assert.AreEqual ("MSBuild10", sol.FileFormat.Id);
Assert.AreEqual ("MSBuild10", p.FileFormat.Id);
- Assert.AreEqual ("4.0", MSBuildProjectService.GetHandler (p).ToolsVersion);
+ Assert.AreEqual ("4.0", p.ToolsVersion);
// Change solution format of saved solution
sol.Save (Util.GetMonitor ());
sol.ConvertToFormat (Util.FileFormatMSBuild05, false);
-
+
Assert.AreEqual ("MSBuild05", sol.FileFormat.Id);
Assert.AreEqual ("MSBuild05", p.FileFormat.Id);
- Assert.AreEqual ("2.0", MSBuildProjectService.GetHandler (p).ToolsVersion);
+ Assert.AreEqual ("2.0", p.ToolsVersion);
// Add new project
- Project newp = new DotNetAssemblyProject ("C#");
+ Project newp = Services.ProjectService.CreateDotNetProject ("C#");
Assert.AreEqual ("MSBuild12", newp.FileFormat.Id);
- Assert.AreEqual ("4.0", MSBuildProjectService.GetHandler (newp).ToolsVersion);
+ Assert.AreEqual ("4.0", newp.ToolsVersion);
sol.RootFolder.Items.Add (newp);
Assert.AreEqual ("MSBuild05", newp.FileFormat.Id);
- Assert.AreEqual ("2.0", MSBuildProjectService.GetHandler (newp).ToolsVersion);
+ Assert.AreEqual ("2.0", newp.ToolsVersion);
// Add saved project
string solFile = Util.GetSampleProject ("console-project", "ConsoleProject.sln");
- Solution msol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution msol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
Project mp = (Project) msol.Items [0];
Assert.AreEqual ("MSBuild05", mp.FileFormat.Id);
@@ -567,7 +567,7 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("test-build-configs", "test-build-configs.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
DotNetProject lib1 = (DotNetProject) sol.FindProjectByName ("Lib1");
DotNetProject lib2 = (DotNetProject) sol.FindProjectByName ("Lib2");
DotNetProject lib3 = (DotNetProject) sol.FindProjectByName ("Lib3");
@@ -616,7 +616,7 @@ namespace MonoDevelop.Projects
Assert.IsFalse (File.Exists (lib3.GetOutputFileName (config)), tag);
Assert.IsFalse (File.Exists (lib4.GetOutputFileName (config)), tag);
- BuildResult res = sol.Build (Util.GetMonitor (), config);
+ BuildResult res = sol.Build (Util.GetMonitor (), config).Result;
Assert.AreEqual (0, res.WarningCount, tag);
Assert.AreEqual (0, res.ErrorCount, tag);
@@ -625,7 +625,7 @@ namespace MonoDevelop.Projects
Assert.IsTrue (File.Exists (lib3.GetOutputFileName (config)), tag);
Assert.IsTrue (File.Exists (lib4.GetOutputFileName (config)), tag);
- sol.Clean (Util.GetMonitor (), config);
+ sol.Clean (Util.GetMonitor (), config).Wait ();
Assert.IsFalse (File.Exists (lib1.GetOutputFileName (config)), tag);
Assert.IsFalse (File.Exists (lib2.GetOutputFileName (config)), tag);
@@ -647,7 +647,7 @@ namespace MonoDevelop.Projects
Assert.IsFalse (File.Exists (lib3.GetOutputFileName (config)), tag);
Assert.IsFalse (File.Exists (lib4.GetOutputFileName (config)), tag);
- BuildResult res = lib1.Build (Util.GetMonitor (), config, true);
+ BuildResult res = lib1.Build (Util.GetMonitor (), config, true).Result;
Assert.AreEqual (0, res.WarningCount, tag);
Assert.AreEqual (0, res.ErrorCount, tag + " " + res.CompilerOutput);
@@ -666,13 +666,13 @@ namespace MonoDevelop.Projects
Assert.IsFalse (File.Exists (lib.GetOutputFileName (config)), tag);
- BuildResult res = lib.Build (Util.GetMonitor (), config, false);
+ BuildResult res = lib.Build (Util.GetMonitor (), config, false).Result;
Assert.AreEqual (0, res.WarningCount, tag);
Assert.AreEqual (0, res.ErrorCount, tag);
Assert.IsTrue (File.Exists (lib.GetOutputFileName (config)), tag);
- lib.Clean (Util.GetMonitor (), config);
+ lib.Clean (Util.GetMonitor (), config).Wait ();
Assert.IsFalse (File.Exists (lib.GetOutputFileName (config)), tag);
}
@@ -686,23 +686,27 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("unsupported-project", "console-with-libs.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- var app = sol.GetAllSolutionItems<SolutionEntityItem> ().FirstOrDefault (it => it.FileName.FileName == "console-with-libs.csproj");
- var lib1 = sol.GetAllSolutionItems<SolutionEntityItem> ().FirstOrDefault (it => it.FileName.FileName == "library1.csproj");
- var lib2 = sol.GetAllSolutionItems<SolutionEntityItem> ().FirstOrDefault (it => it.FileName.FileName == "library2.csproj");
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
+ var app = sol.GetAllItems<SolutionItem> ().FirstOrDefault (it => it.FileName.FileName == "console-with-libs.csproj");
+ var lib1 = sol.GetAllItems<SolutionItem> ().FirstOrDefault (it => it.FileName.FileName == "library1.csproj");
+ var lib2 = sol.GetAllItems<SolutionItem> ().FirstOrDefault (it => it.FileName.FileName == "library2.csproj");
- Assert.IsInstanceOf<DotNetAssemblyProject> (app);
- Assert.IsInstanceOf<UnknownSolutionItem> (lib1);
- Assert.IsInstanceOf<UnknownProject> (lib2);
+ Assert.IsInstanceOf<DotNetProject> (app);
+ Assert.IsTrue (lib1.IsUnsupportedProject);
+ Assert.IsTrue (lib2.IsUnsupportedProject);
- var p = (UnknownProject)lib2;
+ var p = (Project)lib2;
Assert.AreEqual (2, p.Files.Count);
p.AddFile (p.BaseDirectory.Combine ("Test.cs"), BuildAction.Compile);
- sol.Save (new NullProgressMonitor ());
+
+ var solText = File.ReadAllLines (solFile);
+
+ sol.Save (new ProgressMonitor ());
Assert.AreEqual (Util.GetXmlFileInfoset (p.FileName + ".saved"), Util.GetXmlFileInfoset (p.FileName));
+ Assert.AreEqual (solText, File.ReadAllLines (solFile));
}
[Test]
@@ -710,26 +714,26 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("unsupported-project", "console-with-libs.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- var res = sol.Build (Util.GetMonitor (), "Debug");
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
+ var res = sol.Build (Util.GetMonitor (), "Debug").Result;
// The solution has a console app that references an unsupported library. The build of the solution should fail.
- Assert.IsTrue (res.ErrorCount == 1);
+ Assert.AreEqual (1, res.ErrorCount);
- var app = (DotNetAssemblyProject) sol.GetAllSolutionItems<SolutionEntityItem> ().FirstOrDefault (it => it.FileName.FileName == "console-with-libs.csproj");
+ var app = sol.GetAllItems<DotNetProject> ().FirstOrDefault (it => it.FileName.FileName == "console-with-libs.csproj");
// The console app references an unsupported library. The build of the project should fail.
- res = app.Build (Util.GetMonitor (), ConfigurationSelector.Default, true);
+ res = app.Build (Util.GetMonitor (), ConfigurationSelector.Default, true).Result;
Assert.IsTrue (res.ErrorCount == 1);
// A solution build should succeed if it has unbuildable projects but those projects are not referenced by buildable projects
app.References.Clear ();
sol.Save (Util.GetMonitor ());
- res = sol.Build (Util.GetMonitor (), "Debug");
+ res = sol.Build (Util.GetMonitor (), "Debug").Result;
Assert.IsTrue (res.ErrorCount == 0);
// Regular project not referencing anything else. Should build.
- res = app.Build (Util.GetMonitor (), ConfigurationSelector.Default, true);
+ res = app.Build (Util.GetMonitor (), ConfigurationSelector.Default, true).Result;
Assert.IsTrue (res.ErrorCount == 0);
}
@@ -738,10 +742,10 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("console-with-libs", "console-with-libs.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- SolutionEntityItem p = sol.FindProjectByName ("console-with-libs");
- SolutionEntityItem lib1 = sol.FindProjectByName ("library1");
- SolutionEntityItem lib2 = sol.FindProjectByName ("library2");
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
+ SolutionItem p = sol.FindProjectByName ("console-with-libs");
+ SolutionItem lib1 = sol.FindProjectByName ("library1");
+ SolutionItem lib2 = sol.FindProjectByName ("library2");
Assert.IsTrue (p.Enabled);
Assert.IsTrue (lib1.Enabled);
@@ -749,16 +753,16 @@ namespace MonoDevelop.Projects
Assert.IsTrue (sol.Configurations [0].BuildEnabledForItem (p));
p.Enabled = false;
- p.ParentFolder.ReloadItem (Util.GetMonitor (), p);
+ p.ParentFolder.ReloadItem (Util.GetMonitor (), p).Wait ();
- p = sol.GetAllSolutionItems<SolutionEntityItem> ().FirstOrDefault (it => it.Name == "console-with-libs");
+ p = sol.GetAllItems<SolutionItem> ().FirstOrDefault (it => it.Name == "console-with-libs");
Assert.IsNotNull (p);
Assert.IsFalse (p.Enabled);
Assert.IsTrue (lib1.Enabled);
Assert.IsTrue (lib2.Enabled);
p.Enabled = true;
- p.ParentFolder.ReloadItem (Util.GetMonitor (), p);
+ p.ParentFolder.ReloadItem (Util.GetMonitor (), p).Wait ();
p = sol.FindProjectByName ("console-with-libs");
Assert.IsNotNull (p);
@@ -771,8 +775,8 @@ namespace MonoDevelop.Projects
sol.Save (Util.GetMonitor ());
sol.Dispose ();
- sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- lib1 = sol.GetAllSolutionItems<SolutionEntityItem> ().FirstOrDefault (it => it.Name == "library1");
+ sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
+ lib1 = sol.GetAllItems<SolutionItem> ().FirstOrDefault (it => it.Name == "library1");
Assert.IsNotNull (lib1);
lib1.Enabled = true;
lib1.ParentFolder.ReloadItem (Util.GetMonitor (), lib1);
@@ -781,5 +785,147 @@ namespace MonoDevelop.Projects
Assert.IsNotNull (lib1);
Assert.IsTrue (sol.Configurations [0].BuildEnabledForItem (lib1));
}
+
+ [Test]
+ public void SolutionBoundUnbound ()
+ {
+ Solution sol = new Solution ();
+
+ var e = new SomeItem ();
+ Assert.AreEqual (0, e.BoundEvents);
+ Assert.AreEqual (0, e.UnboundEvents);
+
+ sol.RootFolder.AddItem (e);
+ Assert.AreEqual (1, e.BoundEvents);
+ Assert.AreEqual (0, e.UnboundEvents);
+ Assert.AreEqual (1, e.InternalItem.BoundEvents);
+ Assert.AreEqual (0, e.InternalItem.UnboundEvents);
+
+ e.Reset ();
+ sol.RootFolder.Items.Remove (e);
+ Assert.AreEqual (0, e.BoundEvents);
+ Assert.AreEqual (1, e.UnboundEvents);
+ Assert.AreEqual (0, e.InternalItem.BoundEvents);
+ Assert.AreEqual (1, e.InternalItem.UnboundEvents);
+
+ e.Reset ();
+ sol.RootFolder.AddItem (e);
+ Assert.AreEqual (1, e.BoundEvents);
+ Assert.AreEqual (0, e.UnboundEvents);
+ Assert.AreEqual (1, e.InternalItem.BoundEvents);
+ Assert.AreEqual (0, e.InternalItem.UnboundEvents);
+
+ e.Reset ();
+ sol.RootFolder.Items.Remove (e);
+ Assert.AreEqual (0, e.BoundEvents);
+ Assert.AreEqual (1, e.UnboundEvents);
+ Assert.AreEqual (0, e.InternalItem.BoundEvents);
+ Assert.AreEqual (1, e.InternalItem.UnboundEvents);
+
+ e.Reset ();
+ var f = new SolutionFolder ();
+ f.AddItem (e);
+ Assert.AreEqual (0, e.BoundEvents);
+ Assert.AreEqual (0, e.UnboundEvents);
+ Assert.AreEqual (0, e.InternalItem.BoundEvents);
+ Assert.AreEqual (0, e.InternalItem.UnboundEvents);
+
+ sol.RootFolder.AddItem (f);
+ Assert.AreEqual (1, e.BoundEvents);
+ Assert.AreEqual (0, e.UnboundEvents);
+ Assert.AreEqual (1, e.InternalItem.BoundEvents);
+ Assert.AreEqual (0, e.InternalItem.UnboundEvents);
+
+ e.Reset ();
+ sol.RootFolder.Items.Remove (f);
+ Assert.AreEqual (0, e.BoundEvents);
+ Assert.AreEqual (1, e.UnboundEvents);
+ Assert.AreEqual (0, e.InternalItem.BoundEvents);
+ Assert.AreEqual (1, e.InternalItem.UnboundEvents);
+
+ f.Dispose ();
+ sol.Dispose ();
+ }
+
+ [Test]
+ public void SolutionBuildOrder ()
+ {
+ string solFile = Util.GetSampleProject ("solution-build-order", "ConsoleApplication3.sln");
+
+ Solution sol = Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result as Solution;
+ var p = sol.FindProjectByName ("ConsoleApplication3");
+ var lib1 = sol.FindProjectByName ("ClassLibrary1");
+ var lib2 = sol.FindProjectByName ("ClassLibrary2");
+
+ Assert.IsTrue (p.ItemDependencies.Contains (lib1));
+ Assert.IsTrue (p.ItemDependencies.Contains (lib2));
+ Assert.AreEqual (2, p.ItemDependencies.Count);
+
+ Assert.IsTrue (lib2.ItemDependencies.Contains (lib1));
+ Assert.AreEqual (1, lib2.ItemDependencies.Count);
+ Assert.AreEqual (0, lib1.ItemDependencies.Count);
+
+ // Check that dependencies are saved
+
+ var solContent1 = File.ReadAllLines (solFile);
+
+ sol.Save (new ProgressMonitor ());
+
+ var solContent2 = File.ReadAllLines (solFile);
+ Assert.AreEqual (solContent1, solContent2);
+
+ // Check that when an item is removed, it is removed from the dependencies list
+
+ lib1.ParentFolder.Items.Remove (lib1);
+ lib1.Dispose ();
+
+ Assert.IsTrue (p.ItemDependencies.Contains (lib2));
+ Assert.AreEqual (1, p.ItemDependencies.Count);
+ Assert.AreEqual (0, lib2.ItemDependencies.Count);
+
+ // Check that when an item is reloaded, it is kept from the dependencies list
+
+ var lib2Reloaded = lib2.ParentFolder.ReloadItem (Util.GetMonitor (), lib2).Result;
+
+ Assert.AreNotEqual (lib2, lib2Reloaded);
+ Assert.IsTrue (p.ItemDependencies.Contains (lib2Reloaded));
+ Assert.AreEqual (1, p.ItemDependencies.Count);
+ }
+ }
+
+ class SomeItem: SolutionItem
+ {
+ public int BoundEvents;
+ public int UnboundEvents;
+
+ public SomeItem InternalItem;
+
+ public SomeItem (bool createInternal = true)
+ {
+ Initialize (this);
+ if (createInternal) {
+ InternalItem = new SomeItem (false);
+ RegisterInternalChild (InternalItem);
+ }
+ }
+
+ public void Reset ()
+ {
+ BoundEvents = UnboundEvents = 0;
+ if (InternalItem != null)
+ InternalItem.Reset ();
+ }
+
+ protected override void OnBoundToSolution ()
+ {
+ base.OnBoundToSolution ();
+ BoundEvents++;
+ }
+
+ protected override void OnUnboundFromSolution ()
+ {
+ base.OnUnboundFromSolution ();
+ UnboundEvents++;
+ }
}
}
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/TestProjectsChecks.cs b/main/tests/UnitTests/MonoDevelop.Projects/TestProjectsChecks.cs
index f19a1bf769..8bb9fe854a 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/TestProjectsChecks.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/TestProjectsChecks.cs
@@ -33,6 +33,7 @@ using UnitTests;
using MonoDevelop.Core.Serialization;
using MonoDevelop.Core;
using MonoDevelop.CSharp.Project;
+using MonoDevelop.Projects.Formats.MSBuild;
namespace MonoDevelop.Projects
{
@@ -146,7 +147,7 @@ namespace MonoDevelop.Projects
Solution sol = new Solution ();
SolutionConfiguration scDebug = sol.AddConfiguration ("Debug", true);
- DotNetAssemblyProject project = new DotNetAssemblyProject ("C#");
+ DotNetProject project = new CSharpProject ();
sol.RootFolder.Items.Add (project);
Assert.AreEqual (0, project.Configurations.Count);
@@ -214,7 +215,7 @@ namespace Foo {
public static DotNetProject CreateProject (string dir, string lang, string name)
{
- DotNetAssemblyProject project = new DotNetAssemblyProject (lang);
+ DotNetProject project = Services.ProjectService.CreateDotNetProject (lang);
InitializeProject (dir, project, name);
return project;
}
@@ -251,6 +252,8 @@ namespace Foo {
string dir = Util.CreateTmpDir ("generic-item-" + fileFormat);
sol.FileName = Path.Combine (dir, "TestGenericItem");
sol.Name = "TheItem";
+
+ MonoDevelop.Projects.Formats.MSBuild.MSBuildProjectService.RegisterGenericProjectType ("GenericItem", typeof(GenericItem));
GenericItem it = new GenericItem ();
it.SomeValue = "hi";
@@ -261,9 +264,9 @@ namespace Foo {
sol.Save (Util.GetMonitor ());
- Solution sol2 = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), sol.FileName);
+ Solution sol2 = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), sol.FileName).Result;
Assert.AreEqual (1, sol2.Items.Count);
- Assert.IsTrue (sol2.Items [0] is GenericItem);
+ Assert.IsInstanceOf<GenericItem> (sol2.Items [0]);
it = (GenericItem) sol2.Items [0];
Assert.AreEqual ("hi", it.SomeValue);
@@ -279,7 +282,7 @@ namespace Foo {
sol.FileName = Path.Combine (dir, "TestSolutionFolders");
sol.Name = "TheSolution";
- DotNetAssemblyProject p1 = new DotNetAssemblyProject ("C#");
+ var p1 = Services.ProjectService.CreateDotNetProject ("C#");
p1.FileName = Path.Combine (dir, "p1");
sol.RootFolder.Items.Add (p1);
string idp1 = p1.ItemId;
@@ -295,7 +298,7 @@ namespace Foo {
Assert.IsFalse (ids.Contains (idf1));
ids.Add (idf1);
- DotNetAssemblyProject p2 = new DotNetAssemblyProject ("C#");
+ var p2 = Services.ProjectService.CreateDotNetProject ("C#");
p2.FileName = Path.Combine (dir, "p2");
f1.Items.Add (p2);
string idp2 = p2.ItemId;
@@ -311,7 +314,7 @@ namespace Foo {
Assert.IsFalse (ids.Contains (idf2));
ids.Add (idf2);
- DotNetAssemblyProject p3 = new DotNetAssemblyProject ("C#");
+ var p3 = Services.ProjectService.CreateDotNetProject ("C#");
p3.FileName = Path.Combine (dir, "p3");
f2.Items.Add (p3);
string idp3 = p3.ItemId;
@@ -319,7 +322,7 @@ namespace Foo {
Assert.IsFalse (ids.Contains (idp3));
ids.Add (idp3);
- DotNetAssemblyProject p4 = new DotNetAssemblyProject ("C#");
+ var p4 = Services.ProjectService.CreateDotNetProject ("C#");
p4.FileName = Path.Combine (dir, "p4");
f2.Items.Add (p4);
string idp4 = p4.ItemId;
@@ -329,10 +332,10 @@ namespace Foo {
sol.Save (Util.GetMonitor ());
- Solution sol2 = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), sol.FileName);
+ Solution sol2 = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), sol.FileName).Result;
Assert.AreEqual (4, sol2.Items.Count);
Assert.AreEqual (2, sol2.RootFolder.Items.Count);
- Assert.AreEqual (typeof(DotNetAssemblyProject), sol2.RootFolder.Items [0].GetType ());
+ Assert.AreEqual (typeof(CSharpProject), sol2.RootFolder.Items [0].GetType ());
Assert.AreEqual (typeof(SolutionFolder), sol2.RootFolder.Items [1].GetType ());
Assert.AreEqual ("p1", sol2.RootFolder.Items [0].Name);
Assert.AreEqual ("f1", sol2.RootFolder.Items [1].Name);
@@ -341,7 +344,7 @@ namespace Foo {
f1 = (SolutionFolder) sol2.RootFolder.Items [1];
Assert.AreEqual (2, f1.Items.Count);
- Assert.AreEqual (typeof(DotNetAssemblyProject), f1.Items [0].GetType ());
+ Assert.AreEqual (typeof(CSharpProject), f1.Items [0].GetType ());
Assert.AreEqual (typeof(SolutionFolder), f1.Items [1].GetType ());
Assert.AreEqual ("p2", f1.Items [0].Name);
Assert.AreEqual ("f2", f1.Items [1].Name);
@@ -350,8 +353,8 @@ namespace Foo {
f2 = (SolutionFolder) f1.Items [1];
Assert.AreEqual (2, f2.Items.Count);
- Assert.AreEqual (typeof(DotNetAssemblyProject), f2.Items [0].GetType ());
- Assert.AreEqual (typeof(DotNetAssemblyProject), f2.Items [1].GetType ());
+ Assert.AreEqual (typeof(CSharpProject), f2.Items [0].GetType ());
+ Assert.AreEqual (typeof(CSharpProject), f2.Items [1].GetType ());
Assert.AreEqual ("p3", f2.Items [0].Name);
Assert.AreEqual ("p4", f2.Items [1].Name);
Assert.AreEqual (idp3, f2.Items [0].ItemId, "idp4");
@@ -366,26 +369,26 @@ namespace Foo {
sol.Save (Util.GetMonitor ());
string solFile = sol.FileName;
- sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
CheckConsoleProject (sol);
// Save over existing file
sol.Save (Util.GetMonitor ());
- sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
CheckConsoleProject (sol);
}
public static void TestLoadSaveResources (string fileFormat)
{
string solFile = Util.GetSampleProject ("resources-tester", "ResourcesTester.sln");
- Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
sol.ConvertToFormat (Services.ProjectService.FileFormats.GetFileFormat (fileFormat), true);
ProjectTests.CheckResourcesSolution (sol);
sol.Save (Util.GetMonitor ());
solFile = sol.FileName;
- sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
ProjectTests.CheckResourcesSolution (sol);
DotNetProject p = (DotNetProject) sol.Items [0];
@@ -394,7 +397,7 @@ namespace Foo {
pf.ResourceId = "SomeBitmap.bmp";
sol.Save (Util.GetMonitor ());
- sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile).Result;
p = (DotNetProject) sol.Items [0];
f = Path.Combine (p.BaseDirectory, "Bitmap1.bmp");
pf = p.Files.GetFile (f);
@@ -402,37 +405,26 @@ namespace Foo {
}
}
- public class GenericItem: SolutionEntityItem
+ public class GenericItem: Project
{
[ItemProperty]
public string SomeValue;
-
- protected override void OnClean (IProgressMonitor monitor, ConfigurationSelector configuration)
- {
- }
-
- protected override BuildResult OnBuild (IProgressMonitor monitor, ConfigurationSelector configuration)
- {
- return null;
- }
-
- protected override BuildResult OnRunTarget (IProgressMonitor monitor, string target, ConfigurationSelector configuration)
- {
- return null;
- }
-
- protected override void OnExecute (IProgressMonitor monitor, ExecutionContext context, ConfigurationSelector configuration)
+
+ public GenericItem ()
{
+ Initialize (this);
}
-
- protected override bool OnGetNeedsBuilding (ConfigurationSelector configuration)
+
+ protected override void OnWriteProject (ProgressMonitor monitor, MSBuildProject msproject)
{
- return false;
+ base.OnWriteProject (monitor, msproject);
+ msproject.GetGlobalPropertyGroup ().WriteObjectProperties (this, typeof(GenericItem));
}
-
- protected override void OnSetNeedsBuilding (bool val, ConfigurationSelector configuration)
+
+ protected override void OnReadProject (ProgressMonitor monitor, MSBuildProject msproject)
{
+ base.OnReadProject (monitor, msproject);
+ msproject.GetGlobalPropertyGroup ().ReadObjectProperties (this, typeof(GenericItem));
}
-
}
}
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/WebProjectTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/WebProjectTests.cs
index d0fb009f93..c2b5141e3f 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/WebProjectTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/WebProjectTests.cs
@@ -43,13 +43,10 @@ namespace MonoDevelop.Projects
public void LoadedWebProjectContainsWebProjectTypeGuid ()
{
string solutionFileName = Util.GetSampleProject ("WebProjectTest", "WebProjectTest.sln");
- var solution = (Solution)Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solutionFileName);
+ var solution = (Solution)Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solutionFileName).Result;
Project project = solution.GetAllProjects ().First ();
- string projectTypeGuids = (string) project.ExtendedProperties ["ProjectTypeGuids"];
- string[] guids = projectTypeGuids.Split (';');
-
- Assert.That (guids, Contains.Item ("{349C5851-65DF-11DA-9384-00065B846F21}"));
+ Assert.That (project.FlavorGuids, Contains.Item ("{349C5851-65DF-11DA-9384-00065B846F21}"));
}
}
}
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/WorkspaceTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/WorkspaceTests.cs
index 7e1d398b32..a3dc1cfcf0 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/WorkspaceTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/WorkspaceTests.cs
@@ -31,6 +31,7 @@ using System.Collections.ObjectModel;
using NUnit.Framework;
using UnitTests;
using MonoDevelop.Core;
+using System.Linq;
namespace MonoDevelop.Projects
{
@@ -204,14 +205,14 @@ namespace MonoDevelop.Projects
Solution sol1 = new Solution ();
cws.Items.Add (sol1);
sol1.RootFolder.Items.Add (it1 = new DummySolutionItem ());
- sol1.RootFolder.Items.Add (it2 = new DotNetAssemblyProject ("C#"));
+ sol1.RootFolder.Items.Add (it2 = Services.ProjectService.CreateDotNetProject ("C#"));
Solution sol2 = new Solution ();
cws.Items.Add (sol2);
SolutionFolder f = new SolutionFolder ();
sol2.RootFolder.Items.Add (f);
- f.Items.Add (it3 = new DotNetAssemblyProject ("C#"));
- f.Items.Add (it4 = new DotNetAssemblyProject ("C#"));
+ f.Items.Add (it3 = Services.ProjectService.CreateDotNetProject ("C#"));
+ f.Items.Add (it4 = Services.ProjectService.CreateDotNetProject ("C#"));
it3.Name = "it3";
it4.FileName = "/test/it4";
@@ -227,7 +228,7 @@ namespace MonoDevelop.Projects
Assert.IsTrue (sol2.Items.Contains (it3));
Assert.IsTrue (sol2.Items.Contains (it4));
- ReadOnlyCollection<SolutionItem> its = ws.GetAllSolutionItems ();
+ var its = ws.GetAllItems<SolutionFolderItem> ().ToList();
Assert.AreEqual (7, its.Count);
Assert.IsTrue (its.Contains (it1));
Assert.IsTrue (its.Contains (it2));
@@ -237,45 +238,39 @@ namespace MonoDevelop.Projects
Assert.IsTrue (its.Contains (sol2.RootFolder));
Assert.IsTrue (its.Contains (f));
- ReadOnlyCollection<DotNetProject> its2 = ws.GetAllSolutionItems<DotNetProject> ();
+ var its2 = ws.GetAllItems<DotNetProject> ().ToList();
Assert.AreEqual (3, its2.Count);
Assert.IsTrue (its2.Contains (it2));
Assert.IsTrue (its2.Contains (it3));
Assert.IsTrue (its2.Contains (it4));
- ReadOnlyCollection<Project> its3 = ws.GetAllProjects ();
+ var its3 = ws.GetAllItems<Project> ().ToList();
Assert.AreEqual (3, its3.Count);
Assert.IsTrue (its3.Contains (it2));
Assert.IsTrue (its3.Contains (it3));
Assert.IsTrue (its3.Contains (it4));
- ReadOnlyCollection<Solution> its4 = ws.GetAllSolutions ();
+ var its4 = ws.GetAllItems<Solution> ().ToList();
Assert.AreEqual (2, its4.Count);
Assert.IsTrue (its4.Contains (sol1));
Assert.IsTrue (its4.Contains (sol2));
- ReadOnlyCollection<WorkspaceItem> its5= ws.GetAllItems ();
+ var its5 = ws.GetAllItems<WorkspaceItem> ().ToList();
Assert.AreEqual (4, its5.Count);
Assert.IsTrue (its5.Contains (ws));
Assert.IsTrue (its5.Contains (cws));
Assert.IsTrue (its5.Contains (sol2));
Assert.IsTrue (its5.Contains (sol2));
- ReadOnlyCollection<Workspace> its6 = ws.GetAllItems<Workspace> ();
+ var its6 = ws.GetAllItems<Workspace> ().ToList();
Assert.AreEqual (2, its6.Count);
Assert.IsTrue (its6.Contains (ws));
Assert.IsTrue (its6.Contains (cws));
- SolutionEntityItem fi = ws.FindSolutionItem (someFile);
- Assert.AreEqual (it4, fi);
-
- fi = ws.FindSolutionItem (someFile + ".wrong");
- Assert.IsNull (fi);
-
- SolutionItem si = sol2.GetSolutionItem (someId);
+ SolutionFolderItem si = sol2.GetSolutionItem (someId);
Assert.AreEqual (it3, si);
- fi = sol2.FindSolutionItem (someFile);
+ SolutionItem fi = sol2.FindSolutionItem (someFile);
Assert.AreEqual (it4, fi);
fi = sol2.FindProjectByName ("it3");
@@ -305,14 +300,14 @@ namespace MonoDevelop.Projects
Solution sol1 = new Solution ();
cws.Items.Add (sol1);
sol1.RootFolder.Items.Add (it1 = new DummySolutionItem ());
- sol1.RootFolder.Items.Add (it2 = new DotNetAssemblyProject ("C#"));
+ sol1.RootFolder.Items.Add (it2 = Services.ProjectService.CreateDotNetProject ("C#"));
Solution sol2 = new Solution ();
cws.Items.Add (sol2);
SolutionFolder f = new SolutionFolder ();
sol2.RootFolder.Items.Add (f);
- f.Items.Add (it3 = new DotNetAssemblyProject ("C#"));
- f.Items.Add (it4 = new DotNetAssemblyProject ("C#"));
+ f.Items.Add (it3 = Services.ProjectService.CreateDotNetProject ("C#"));
+ f.Items.Add (it4 = Services.ProjectService.CreateDotNetProject ("C#"));
ws.ExtendedProperties ["data"] = d[0];
cws.ExtendedProperties ["data"] = d[1];
@@ -340,33 +335,11 @@ namespace MonoDevelop.Projects
}
- class DummySolutionItem: SolutionEntityItem
+ class DummySolutionItem: SolutionItem
{
- protected override void OnClean (IProgressMonitor monitor, ConfigurationSelector configuration)
- {
- }
-
- protected override BuildResult OnBuild (IProgressMonitor monitor, ConfigurationSelector configuration)
- {
- return null;
- }
-
- protected override BuildResult OnRunTarget (IProgressMonitor monitor, string target, ConfigurationSelector configuration)
- {
- return null;
- }
-
- protected override void OnExecute (IProgressMonitor monitor, ExecutionContext context, ConfigurationSelector configuration)
- {
- }
-
- protected override bool OnGetNeedsBuilding (ConfigurationSelector configuration)
- {
- return false;
- }
-
- protected override void OnSetNeedsBuilding (bool val, ConfigurationSelector configuration)
+ public DummySolutionItem ()
{
+ Initialize (this);
}
}
}