Browse Source
The T4MVC template uses EnvDTE.ProjectItems.AddFromFile() to add its generated files as dependent files. If the project items belong to a file then the DependentUpon property is set in the MSBuild project.pull/28/head
6 changed files with 164 additions and 3 deletions
@ -0,0 +1,108 @@ |
|||||||
|
// 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 System.Collections; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.Linq; |
||||||
|
|
||||||
|
using ICSharpCode.PackageManagement; |
||||||
|
using ICSharpCode.PackageManagement.EnvDTE; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
using NUnit.Framework; |
||||||
|
using PackageManagement.Tests.Helpers; |
||||||
|
using Rhino.Mocks; |
||||||
|
using DTE = ICSharpCode.PackageManagement.EnvDTE; |
||||||
|
|
||||||
|
namespace PackageManagement.Tests.EnvDTE |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class FileProjectItemsTests |
||||||
|
{ |
||||||
|
TestableDTEProject project; |
||||||
|
FileProjectItems fileProjectItems; |
||||||
|
TestableProject msbuildProject; |
||||||
|
FakeFileService fakeFileService; |
||||||
|
|
||||||
|
void CreateProjectWithOneFileInProjectFolder( |
||||||
|
string include, |
||||||
|
string projectFileName = @"c:\projects\MyProject\MyProject.csproj") |
||||||
|
{ |
||||||
|
project = new TestableDTEProject(); |
||||||
|
msbuildProject = project.TestableProject; |
||||||
|
fakeFileService = project.FakeFileService; |
||||||
|
msbuildProject.FileName = projectFileName; |
||||||
|
msbuildProject.AddFile(include); |
||||||
|
} |
||||||
|
|
||||||
|
void CreateFileProjectItemsFromFileInProjectFolder(string include) |
||||||
|
{ |
||||||
|
DTE.ProjectItem projectItem = project.ProjectItems.Item(include); |
||||||
|
fileProjectItems = new DTE.FileProjectItems(projectItem, fakeFileService); |
||||||
|
} |
||||||
|
|
||||||
|
IProjectBrowserUpdater CreateProjectBrowserUpdater() |
||||||
|
{ |
||||||
|
IProjectBrowserUpdater projectBrowserUpdater = MockRepository.GenerateStub<IProjectBrowserUpdater>(); |
||||||
|
project.FakeProjectService.ProjectBrowserUpdater = projectBrowserUpdater; |
||||||
|
return projectBrowserUpdater; |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddFromFile_AddFromFileFromProjectItemsBelongingToFile_FileIsParsed() |
||||||
|
{ |
||||||
|
string projectFileName = @"d:\projects\myproject\MyProject.csproj"; |
||||||
|
CreateProjectWithOneFileInProjectFolder("MainForm.cs", projectFileName); |
||||||
|
CreateFileProjectItemsFromFileInProjectFolder("MainForm.cs"); |
||||||
|
string fileName = @"d:\projects\myproject\MainForm.Designer.cs"; |
||||||
|
|
||||||
|
fileProjectItems.AddFromFile(fileName); |
||||||
|
|
||||||
|
string parsedFileName = fakeFileService.FileNamePassedToParseFile; |
||||||
|
Assert.AreEqual(fileName, parsedFileName); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddFromFile_AddFromFileFromProjectItemsBelongingToFile_ReturnsProjectItemAdded() |
||||||
|
{ |
||||||
|
string projectFileName = @"d:\projects\myproject\MyProject.csproj"; |
||||||
|
CreateProjectWithOneFileInProjectFolder("MainForm.cs", projectFileName); |
||||||
|
CreateFileProjectItemsFromFileInProjectFolder("MainForm.cs"); |
||||||
|
string fileName = @"d:\projects\myproject\MainForm.Designer.cs"; |
||||||
|
|
||||||
|
DTE.ProjectItem itemAdded = fileProjectItems.AddFromFile(fileName); |
||||||
|
|
||||||
|
string fullPath = (string)itemAdded.Properties.Item("FullPath").Value; |
||||||
|
Assert.AreEqual("MainForm.Designer.cs", itemAdded.Name); |
||||||
|
Assert.AreEqual(fileName, fullPath); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddFromFile_AddFromFileFromProjectItemsBelongingToFile_ProjectIsSaved() |
||||||
|
{ |
||||||
|
string projectFileName = @"d:\projects\myproject\MyProject.csproj"; |
||||||
|
CreateProjectWithOneFileInProjectFolder("MainForm.cs", projectFileName); |
||||||
|
CreateFileProjectItemsFromFileInProjectFolder("MainForm.cs"); |
||||||
|
string fileName = @"d:\projects\myproject\MainForm.Designer.cs"; |
||||||
|
|
||||||
|
fileProjectItems.AddFromFile(fileName); |
||||||
|
|
||||||
|
bool saved = msbuildProject.IsSaved; |
||||||
|
Assert.IsTrue(saved); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddFromFile_AddFromFileFromProjectItemsBelongingToFile_ProjectBrowserUpdaterIsDisposed() |
||||||
|
{ |
||||||
|
string projectFileName = @"d:\projects\myproject\MyProject.csproj"; |
||||||
|
CreateProjectWithOneFileInProjectFolder("MainForm.cs", projectFileName); |
||||||
|
IProjectBrowserUpdater projectBrowserUpdater = CreateProjectBrowserUpdater(); |
||||||
|
CreateFileProjectItemsFromFileInProjectFolder("MainForm.cs"); |
||||||
|
string fileName = @"d:\projects\myproject\MainForm.Designer.cs"; |
||||||
|
|
||||||
|
fileProjectItems.AddFromFile(fileName); |
||||||
|
|
||||||
|
projectBrowserUpdater.AssertWasCalled(updater => updater.Dispose()); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue