diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
index 88fcfe5ccd..e9d828679c 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/SharpDevelopProjectSystem.cs
@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Versioning;
+using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Project;
using NuGet;
@@ -60,6 +61,7 @@ namespace ICSharpCode.PackageManagement
ReferenceProjectItem assemblyReference = CreateReference(referencePath);
ProjectService.AddProjectItem(project, assemblyReference);
project.Save();
+ LogAddedReferenceToProject(assemblyReference);
}
ReferenceProjectItem CreateReference(string referencePath)
@@ -70,6 +72,21 @@ namespace ICSharpCode.PackageManagement
return assemblyReference;
}
+ void LogAddedReferenceToProject(ReferenceProjectItem referenceProjectItem)
+ {
+ LogAddedReferenceToProject(referenceProjectItem.Include, ProjectName);
+ }
+
+ protected virtual void LogAddedReferenceToProject(string referenceName, string projectName)
+ {
+ DebugLogFormat("Added reference '{0}' to project '{1}'.", referenceName, projectName);
+ }
+
+ void DebugLogFormat(string format, params object[] args)
+ {
+ Logger.Log(MessageLevel.Debug, format, args);
+ }
+
public bool ReferenceExists(string name)
{
ReferenceProjectItem referenceProjectItem = FindReference(name);
@@ -101,9 +118,20 @@ namespace ICSharpCode.PackageManagement
if (referenceProjectItem != null) {
ProjectService.RemoveProjectItem(project, referenceProjectItem);
project.Save();
+ LogRemovedReferenceFromProject(referenceProjectItem);
}
}
+ void LogRemovedReferenceFromProject(ReferenceProjectItem referenceProjectItem)
+ {
+ LogRemovedReferenceFromProject(referenceProjectItem.Include, ProjectName);
+ }
+
+ protected virtual void LogRemovedReferenceFromProject(string referenceName, string projectName)
+ {
+ DebugLogFormat("Removed reference '{0}' from project '{1}'.", referenceName, projectName);
+ }
+
public bool IsSupportedFile(string path)
{
return !IsAppConfigFile(path);
@@ -121,6 +149,7 @@ namespace ICSharpCode.PackageManagement
if (ShouldAddFileToProject(path)) {
AddFileToProject(path);
}
+ LogAddedFileToProject(path);
}
protected virtual void PhysicalFileSystemAddFile(string path, Stream stream)
@@ -128,6 +157,23 @@ namespace ICSharpCode.PackageManagement
base.AddFile(path, stream);
}
+ bool ShouldAddFileToProject(string path)
+ {
+ return !IsBinDirectory(path) && !FileExistsInProject(path);
+ }
+
+ bool IsBinDirectory(string path)
+ {
+ string directoryName = Path.GetDirectoryName(path);
+ return IsMatchIgnoringCase(directoryName, "bin");
+ }
+
+ bool FileExistsInProject(string path)
+ {
+ string fullPath = GetFullPath(path);
+ return project.IsFileInProject(fullPath);
+ }
+
void AddFileToProject(string path)
{
FileProjectItem fileItem = CreateFileProjectItem(path);
@@ -143,21 +189,14 @@ namespace ICSharpCode.PackageManagement
return fileItem;
}
- bool ShouldAddFileToProject(string path)
- {
- return !IsBinDirectory(path) && !FileExistsInProject(path);
- }
-
- bool IsBinDirectory(string path)
+ void LogAddedFileToProject(string fileName)
{
- string directoryName = Path.GetDirectoryName(path);
- return IsMatchIgnoringCase(directoryName, "bin");
+ LogAddedFileToProject(fileName, ProjectName);
}
- bool FileExistsInProject(string path)
+ protected virtual void LogAddedFileToProject(string fileName, string projectName)
{
- string fullPath = GetFullPath(path);
- return project.IsFileInProject(fullPath);
+ DebugLogFormat("Added file '{0}' to project '{1}'.", fileName, projectName);
}
public override void DeleteDirectory(string path, bool recursive)
@@ -165,6 +204,7 @@ namespace ICSharpCode.PackageManagement
string directory = GetFullPath(path);
fileService.RemoveDirectory(directory);
project.Save();
+ LogDeletedDirectory(path);
}
public override void DeleteFile(string path)
@@ -172,6 +212,33 @@ namespace ICSharpCode.PackageManagement
string fileName = GetFullPath(path);
fileService.RemoveFile(fileName);
project.Save();
+ LogDeletedFileInfo(path);
+ }
+
+ protected virtual void LogDeletedDirectory(string folder)
+ {
+ DebugLogFormat("Removed folder '{0}'.", folder);
+ }
+
+ void LogDeletedFileInfo(string path)
+ {
+ string fileName = Path.GetFileName(path);
+ string directory = Path.GetDirectoryName(path);
+ if (String.IsNullOrEmpty(directory)) {
+ LogDeletedFile(fileName);
+ } else {
+ LogDeletedFileFromDirectory(fileName, directory);
+ }
+ }
+
+ protected virtual void LogDeletedFile(string fileName)
+ {
+ DebugLogFormat("Removed file '{0}'.", fileName);
+ }
+
+ protected virtual void LogDeletedFileFromDirectory(string fileName, string directory)
+ {
+ DebugLogFormat("Removed file '{0}' from folder '{1}'.", fileName, directory);
}
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
index 74cea6cada..9581602815 100644
--- a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
+++ b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
@@ -81,10 +81,13 @@
+
+
+
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FileNameAndDirectory.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FileNameAndDirectory.cs
new file mode 100644
index 0000000000..3060e39a6b
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FileNameAndDirectory.cs
@@ -0,0 +1,43 @@
+// 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;
+
+namespace PackageManagement.Tests.Helpers
+{
+ public class FileNameAndDirectory
+ {
+ public FileNameAndDirectory()
+ {
+ }
+
+ public FileNameAndDirectory(string fileName, string folder)
+ {
+ this.FileName = fileName;
+ this.Folder = folder;
+ }
+
+ public string FileName;
+ public string Folder;
+
+ public override bool Equals(object obj)
+ {
+ FileNameAndDirectory rhs = obj as FileNameAndDirectory;
+ if (rhs != null) {
+ return (FileName == rhs.FileName) &&
+ (Folder == rhs.Folder);
+ }
+ return false;
+ }
+
+ public override int GetHashCode()
+ {
+ return base.GetHashCode();
+ }
+
+ public override string ToString()
+ {
+ return String.Format("[FileNameAndDirectory FileName={0}, Folder={1}]", FileName, Folder);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FileNameAndProjectName.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FileNameAndProjectName.cs
new file mode 100644
index 0000000000..9d2562392e
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/FileNameAndProjectName.cs
@@ -0,0 +1,43 @@
+// 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;
+
+namespace PackageManagement.Tests.Helpers
+{
+ public class FileNameAndProjectName
+ {
+ public FileNameAndProjectName()
+ {
+ }
+
+ public FileNameAndProjectName(string fileName, string projectName)
+ {
+ this.FileName = fileName;
+ this.ProjectName = projectName;
+ }
+
+ public string FileName;
+ public string ProjectName;
+
+ public override bool Equals(object obj)
+ {
+ FileNameAndProjectName rhs = obj as FileNameAndProjectName;
+ if (rhs != null) {
+ return (rhs.FileName == FileName) &&
+ (rhs.ProjectName == ProjectName);
+ }
+ return false;
+ }
+
+ public override int GetHashCode()
+ {
+ return base.GetHashCode();
+ }
+
+ public override string ToString()
+ {
+ return String.Format("[FileNameAndProjectName FileName={0}, ProjectName={1}]", FileName, ProjectName);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ReferenceAndProjectName.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ReferenceAndProjectName.cs
new file mode 100644
index 0000000000..28fcc524f1
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ReferenceAndProjectName.cs
@@ -0,0 +1,43 @@
+// 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;
+
+namespace PackageManagement.Tests.Helpers
+{
+ public class ReferenceAndProjectName
+ {
+ public ReferenceAndProjectName()
+ {
+ }
+
+ public ReferenceAndProjectName(string reference, string project)
+ {
+ this.Reference = reference;
+ this.Project = project;
+ }
+
+ public string Reference;
+ public string Project;
+
+ public override bool Equals(object obj)
+ {
+ ReferenceAndProjectName rhs = obj as ReferenceAndProjectName;
+ if (rhs != null) {
+ return (rhs.Project == Project) &&
+ (rhs.Reference == Reference);
+ }
+ return false;
+ }
+
+ public override int GetHashCode()
+ {
+ return base.GetHashCode();
+ }
+
+ public override string ToString()
+ {
+ return String.Format("[ReferenceAndProjectName Reference={0}, Project={1}]", Reference, Project);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableSharpDevelopProjectSystem.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableSharpDevelopProjectSystem.cs
index 2b61b069dd..3eb65414bb 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableSharpDevelopProjectSystem.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableSharpDevelopProjectSystem.cs
@@ -4,6 +4,7 @@
using System;
using System.IO;
using ICSharpCode.PackageManagement;
+using ICSharpCode.PackageManagement.Design;
using ICSharpCode.SharpDevelop.Project;
namespace PackageManagement.Tests.Helpers
@@ -13,6 +14,13 @@ namespace PackageManagement.Tests.Helpers
public string PathPassedToPhysicalFileSystemAddFile;
public Stream StreamPassedToPhysicalFileSystemAddFile;
public FakeFileService FakeFileService;
+ public FakePackageManagementOutputMessagesView FakeOutputMessagesView;
+ public string FileNamePassedToLogDeletedFile;
+ public FileNameAndDirectory FileNameAndDirectoryPassedToLogDeletedFileFromDirectory;
+ public string DirectoryPassedToLogDeletedDirectory;
+ public ReferenceAndProjectName ReferenceAndProjectNamePassedToLogAddedReferenceToProject;
+ public ReferenceAndProjectName ReferenceAndProjectNamePassedToLogRemovedReferenceFromProject;
+ public FileNameAndProjectName FileNameAndProjectNamePassedToLogAddedFileToProject;
public TestableSharpDevelopProjectSystem(MSBuildBasedProject project)
: this(project, new FakeFileService(project))
@@ -23,6 +31,7 @@ namespace PackageManagement.Tests.Helpers
: base(project, fileService)
{
FakeFileService = (FakeFileService)fileService;
+ Logger = FakeOutputMessagesView;
}
protected override void PhysicalFileSystemAddFile(string path, Stream stream)
@@ -30,5 +39,38 @@ namespace PackageManagement.Tests.Helpers
PathPassedToPhysicalFileSystemAddFile = path;
StreamPassedToPhysicalFileSystemAddFile = stream;
}
+
+ protected override void LogDeletedFile(string fileName)
+ {
+ FileNamePassedToLogDeletedFile = fileName;
+ }
+
+ protected override void LogDeletedFileFromDirectory(string fileName, string directory)
+ {
+ FileNameAndDirectoryPassedToLogDeletedFileFromDirectory = new FileNameAndDirectory(fileName, directory);
+ }
+
+ protected override void LogDeletedDirectory(string directory)
+ {
+ DirectoryPassedToLogDeletedDirectory = directory;
+ }
+
+ protected override void LogAddedReferenceToProject(string referenceName, string projectName)
+ {
+ ReferenceAndProjectNamePassedToLogAddedReferenceToProject =
+ new ReferenceAndProjectName(referenceName, projectName);
+ }
+
+ protected override void LogRemovedReferenceFromProject(string referenceName, string projectName)
+ {
+ ReferenceAndProjectNamePassedToLogRemovedReferenceFromProject =
+ new ReferenceAndProjectName(referenceName, projectName);
+ }
+
+ protected override void LogAddedFileToProject(string fileName, string projectName)
+ {
+ FileNameAndProjectNamePassedToLogAddedFileToProject =
+ new FileNameAndProjectName(fileName, projectName);
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs
index e7abd75b5e..adb654f167 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/SharpDevelopProjectSystemTests.cs
@@ -28,11 +28,21 @@ namespace PackageManagement.Tests
project = ProjectHelper.CreateTestProject();
}
+ void CreateTestProject(string fileName)
+ {
+ CreateTestProject();
+ project.FileName = fileName;
+ }
+
+ void AddFileToProject(string fileName)
+ {
+ ProjectHelper.AddFile(project, fileName);
+ }
+
[Test]
public void Root_NewInstanceCreated_ReturnsProjectDirectory()
{
- CreateTestProject();
- project.FileName = @"d:\projects\MyProject\MyProject.csproj";
+ CreateTestProject(@"d:\projects\MyProject\MyProject.csproj");
CreateProjectSystem(project);
string expectedRoot = @"d:\projects\MyProject\";
@@ -231,6 +241,24 @@ namespace PackageManagement.Tests
ReferenceProjectItemAssert.AreEqual(expectedReferenceItem, referenceItem);
}
+ [Test]
+ public void AddReference_AddReferenceToNUnitFramework_AddingReferenceIsLogged()
+ {
+ CreateTestProject();
+ CreateProjectSystem(project);
+ project.Name = "MyTestProject";
+
+ string fileName = @"d:\projects\packages\nunit\nunit.framework.dll";
+ projectSystem.AddReference(fileName, null);
+
+ var expectedReferenceAndProjectName = new ReferenceAndProjectName() {
+ Reference = "nunit.framework",
+ Project = "MyTestProject"
+ };
+
+ Assert.AreEqual(expectedReferenceAndProjectName, projectSystem.ReferenceAndProjectNamePassedToLogAddedReferenceToProject);
+ }
+
[Test]
public void RemoveReference_ReferenceBeingRemovedHasFileExtension_ReferenceRemovedFromProject()
{
@@ -284,6 +312,25 @@ namespace PackageManagement.Tests
Assert.AreEqual(0, project.ItemsWhenSaved.Count);
}
+ [Test]
+ public void RemoveReference_ReferenceBeingRemovedHasFileExtension_ReferenceRemovalIsLogged()
+ {
+ CreateTestProject();
+ project.Name = "MyTestProject";
+ ProjectHelper.AddReference(project, "nunit.framework");
+ CreateProjectSystem(project);
+
+ string fileName = @"d:\projects\packages\nunit\nunit.framework.dll";
+ projectSystem.RemoveReference(fileName);
+
+ var expectedReferenceAndProjectName = new ReferenceAndProjectName {
+ Reference = "nunit.framework",
+ Project = "MyTestProject"
+ };
+
+ Assert.AreEqual(expectedReferenceAndProjectName, projectSystem.ReferenceAndProjectNamePassedToLogRemovedReferenceFromProject);
+ }
+
[Test]
public void AddFile_NewFile_AddsFileToFileSystem()
{
@@ -301,8 +348,7 @@ namespace PackageManagement.Tests
[Test]
public void AddFile_NewFile_AddsFileToProject()
{
- CreateTestProject();
- project.FileName = @"d:\projects\MyProject\MyProject.csproj";
+ CreateTestProject(@"d:\projects\MyProject\MyProject.csproj");
project.ItemTypeToReturnFromGetDefaultItemType = ItemType.Compile;
CreateProjectSystem(project);
@@ -319,8 +365,7 @@ namespace PackageManagement.Tests
[Test]
public void AddFile_NewResxFile_AddsFileToProjectWithCorrectItemType()
{
- CreateTestProject();
- project.FileName = @"d:\projects\MyProject\MyProject.csproj";
+ CreateTestProject(@"d:\projects\MyProject\MyProject.csproj");
project.ItemTypeToReturnFromGetDefaultItemType = ItemType.EmbeddedResource;
CreateProjectSystem(project);
@@ -337,8 +382,7 @@ namespace PackageManagement.Tests
[Test]
public void AddFile_RelativeFileNameUsed_AddsFileToProject()
{
- CreateTestProject();
- project.FileName = @"d:\projects\MyProject\MyProject.csproj";
+ CreateTestProject(@"d:\projects\MyProject\MyProject.csproj");
project.ItemTypeToReturnFromGetDefaultItemType = ItemType.Compile;
CreateProjectSystem(project);
@@ -356,8 +400,7 @@ namespace PackageManagement.Tests
[Test]
public void AddFile_RelativeFileNameWithNoPathUsed_AddsFileToProject()
{
- CreateTestProject();
- project.FileName = @"d:\projects\MyProject\MyProject.csproj";
+ CreateTestProject(@"d:\projects\MyProject\MyProject.csproj");
project.ItemTypeToReturnFromGetDefaultItemType = ItemType.Compile;
CreateProjectSystem(project);
@@ -375,9 +418,8 @@ namespace PackageManagement.Tests
[Test]
public void AddFile_NewFile_ProjectIsSavedAfterFileAddedToProject()
{
- CreateTestProject();
+ CreateTestProject(@"d:\projects\MyProject\MyProject.csproj");
project.IsSaved = false;
- project.FileName = @"d:\projects\MyProject\MyProject.csproj";
CreateProjectSystem(project);
string fileName = @"d:\projects\MyProject\src\NewFile.cs";
@@ -389,8 +431,7 @@ namespace PackageManagement.Tests
[Test]
public void AddFile_NewFileToBeAddedInBinFolder_FileIsNotAddedToProject()
{
- CreateTestProject();
- project.FileName = @"d:\projects\MyProject\MyProject.csproj";
+ CreateTestProject(@"d:\projects\MyProject\MyProject.csproj");
CreateProjectSystem(project);
string fileName = @"bin\NewFile.dll";
@@ -404,8 +445,7 @@ namespace PackageManagement.Tests
[Test]
public void AddFile_NewFileToBeAddedInBinFolderWithBinFolderNameInUpperCase_FileIsNotAddedToProject()
{
- CreateTestProject();
- project.FileName = @"d:\projects\MyProject\MyProject.csproj";
+ CreateTestProject(@"d:\projects\MyProject\MyProject.csproj");
CreateProjectSystem(project);
string fileName = @"BIN\NewFile.dll";
@@ -419,43 +459,70 @@ namespace PackageManagement.Tests
[Test]
public void AddFile_FileAlreadyExistsInProject_FileIsNotAddedToProject()
{
- CreateTestProject();
- project.FileName = @"d:\projects\MyProject\MyProject.csproj";
+ CreateTestProject(@"d:\projects\MyProject\MyProject.csproj");
project.ItemTypeToReturnFromGetDefaultItemType = ItemType.Compile;
- CreateProjectSystem(project);
+ CreateProjectSystem(project);
+ AddFileToProject(@"d:\projects\MyProject\src\NewFile.cs");
- string relativeFileName = @"src\NewFile.cs";
- string fileName = @"d:\projects\MyProject\src\NewFile.cs";
- ProjectHelper.AddFile(project, fileName);
-
- projectSystem.AddFile(relativeFileName, null);
+ projectSystem.AddFile(@"src\NewFile.cs", null);
int projectItemsCount = project.Items.Count;
Assert.AreEqual(1, projectItemsCount);
}
+ [Test]
+ public void AddFile_NewFile_FileAddedToProjectIsLogged()
+ {
+ CreateTestProject(@"d:\temp\MyProject.csproj");
+ project.Name = "MyTestProject";
+ CreateProjectSystem(project);
+
+ projectSystem.AddFile(@"src\files\abc.cs", null);
+
+ var expectedFileNameAndProjectName = new FileNameAndProjectName {
+ FileName = @"src\files\abc.cs",
+ ProjectName = "MyTestProject"
+ };
+
+ Assert.AreEqual(expectedFileNameAndProjectName, projectSystem.FileNameAndProjectNamePassedToLogAddedFileToProject);
+ }
+
+ [Test]
+ public void AddFile_NewFileAlreadyExistsInProject_FileIsStillLogged()
+ {
+ CreateTestProject(@"d:\temp\MyProject.csproj");
+ project.Name = "MyTestProject";
+ AddFileToProject(@"src\files\abc.cs");
+ CreateProjectSystem(project);
+
+ projectSystem.AddFile(@"src\files\abc.cs", null);
+
+ var expectedFileNameAndProjectName = new FileNameAndProjectName {
+ FileName = @"src\files\abc.cs",
+ ProjectName = "MyTestProject"
+ };
+
+ Assert.AreEqual(expectedFileNameAndProjectName, projectSystem.FileNameAndProjectNamePassedToLogAddedFileToProject);
+ }
+
[Test]
public void DeleteFile_DeletesFileFromFileSystem_CallsFileServiceRemoveFile()
{
- CreateTestProject();
- project.FileName = @"d:\temp\MyProject.csproj";
- string fileName = @"d:\temp\test.cs";
- ProjectHelper.AddFile(project, fileName);
+ CreateTestProject(@"d:\temp\MyProject.csproj");
+ AddFileToProject(@"d:\temp\test.cs");
CreateProjectSystem(project);
projectSystem.DeleteFile("test.cs");
- Assert.AreEqual(fileName, projectSystem.FakeFileService.PathPassedToRemoveFile);
+ Assert.AreEqual(@"d:\temp\test.cs", projectSystem.FakeFileService.PathPassedToRemoveFile);
}
[Test]
public void DeleteFile_DeletesFileFromFileSystem_ProjectIsSavedAfterFileRemoved()
{
- CreateTestProject();
- project.FileName = @"d:\temp\MyProject.csproj";
+ CreateTestProject(@"d:\temp\MyProject.csproj");
project.IsSaved = false;
- string fileName = @"d:\temp\test.cs";
- ProjectHelper.AddFile(project, fileName);
+ AddFileToProject(@"d:\temp\test.cs");
CreateProjectSystem(project);
projectSystem.DeleteFile("test.cs");
@@ -463,34 +530,98 @@ namespace PackageManagement.Tests
Assert.AreEqual(0, project.ItemsWhenSaved.Count);
}
+ [Test]
+ public void DeleteFile_DeletesFileFromFileSystem_FileDeletionLogged()
+ {
+ CreateTestProject(@"d:\temp\MyProject.csproj");
+ AddFileToProject(@"d:\temp\test.cs");
+ CreateProjectSystem(project);
+
+ projectSystem.DeleteFile("test.cs");
+
+ Assert.AreEqual("test.cs", projectSystem.FileNamePassedToLogDeletedFile);
+ }
+
+ [Test]
+ public void DeleteFile_DeletesFileFromFileSystem_FolderInformationNotLogged()
+ {
+ CreateTestProject(@"d:\temp\MyProject.csproj");
+ AddFileToProject(@"d:\temp\test.cs");
+ CreateProjectSystem(project);
+
+ projectSystem.DeleteFile("test.cs");
+
+ Assert.IsNull(projectSystem.FileNameAndDirectoryPassedToLogDeletedFileFromDirectory);
+ }
+
+ [Test]
+ public void DeleteFile_DeletesFileFromSubFolder_FileDeletionLogged()
+ {
+ CreateTestProject(@"d:\temp\MyProject.csproj");
+ AddFileToProject(@"d:\temp\src\Files\test.cs");
+ CreateProjectSystem(project);
+
+ projectSystem.DeleteFile(@"src\Files\test.cs");
+
+ var expectedFileNameAndFolder = new FileNameAndDirectory() {
+ FileName = "test.cs",
+ Folder = @"src\Files"
+ };
+
+ var actualFileNameAndFolder = projectSystem.FileNameAndDirectoryPassedToLogDeletedFileFromDirectory;
+
+ Assert.AreEqual(expectedFileNameAndFolder, actualFileNameAndFolder);
+ }
+
+ [Test]
+ public void DeleteFile_DeletesFileFromSubFolder_FileDeletionWithoutFolderInformationIsNotLogged()
+ {
+ CreateTestProject(@"d:\temp\MyProject.csproj");
+ AddFileToProject(@"d:\temp\src\Files\test.cs");
+ CreateProjectSystem(project);
+
+ projectSystem.DeleteFile(@"src\Files\test.cs");
+
+ Assert.IsNull(projectSystem.FileNamePassedToLogDeletedFile);
+ }
+
[Test]
public void DeleteDirectory_DeletesDirectoryFromFileSystem_CallsFileServiceRemoveDirectory()
{
- CreateTestProject();
- project.FileName = @"d:\temp\MyProject.csproj";
- string fileName = @"d:\temp\test\test.cs";
- ProjectHelper.AddFile(project, fileName);
+ CreateTestProject(@"d:\temp\MyProject.csproj");
+ AddFileToProject(@"d:\temp\test\test.cs");
CreateProjectSystem(project);
- string path = @"d:\temp\test";
projectSystem.DeleteDirectory("test");
+ string path = @"d:\temp\test";
Assert.AreEqual(path, projectSystem.FakeFileService.PathPassedToRemoveDirectory);
}
[Test]
public void DeleteDirectory_DeletesDirectoryFromFileSystem_ProjectIsSavedAfterDirectoryDeleted()
{
- CreateTestProject();
- project.FileName = @"d:\temp\MyProject.csproj";
- string fileName = @"d:\temp\test\test.cs";
- ProjectHelper.AddFile(project, fileName);
+ CreateTestProject(@"d:\temp\MyProject.csproj");
project.IsSaved = false;
+ AddFileToProject(@"d:\temp\test\test.cs");
CreateProjectSystem(project);
projectSystem.DeleteDirectory("test");
Assert.AreEqual(0, project.ItemsWhenSaved.Count);
}
+
+ [Test]
+ public void DeleteDirectory_DeletesDirectoryFromFileSystem_DirectoryIsLogged()
+ {
+ CreateTestProject(@"d:\temp\MyProject.csproj");
+ project.IsSaved = false;
+ AddFileToProject(@"d:\temp\test\test.cs");
+ CreateProjectSystem(project);
+
+ projectSystem.DeleteDirectory("test");
+
+ Assert.AreEqual("test", projectSystem.DirectoryPassedToLogDeletedDirectory);
+ }
}
}