Index: experimental/visual_studio_plugin/src/NaClVsx.Package/NaClVsx.Package_IntegrationTestProject/IntegrationTest Library/Utils.cs |
diff --git a/experimental/visual_studio_plugin/src/NaClVsx.Package/NaClVsx.Package_IntegrationTestProject/IntegrationTest Library/Utils.cs b/experimental/visual_studio_plugin/src/NaClVsx.Package/NaClVsx.Package_IntegrationTestProject/IntegrationTest Library/Utils.cs |
deleted file mode 100644 |
index 8c91c16e6f522a0538081fdf947d478a00263d2a..0000000000000000000000000000000000000000 |
--- a/experimental/visual_studio_plugin/src/NaClVsx.Package/NaClVsx.Package_IntegrationTestProject/IntegrationTest Library/Utils.cs |
+++ /dev/null |
@@ -1,401 +0,0 @@ |
-using System; |
-using System.IO; |
-using System.Text; |
-using System.Reflection; |
-using System.Diagnostics; |
-using System.Collections; |
-using System.Collections.Generic; |
-using System.ComponentModel.Design; |
-using System.Runtime.InteropServices; |
-using Microsoft.VisualStudio.Shell.Interop; |
-using Microsoft.VisualStudio.Shell; |
-using EnvDTE; |
-using EnvDTE80; |
-using Microsoft.Win32; |
-using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider; |
-using Microsoft.VisualStudio.TestTools.UnitTesting; |
-using Microsoft.VSSDK.Tools.VsIdeTesting; |
-using Microsoft.VisualStudio; |
- |
-namespace Microsoft.VsSDK.IntegrationTestLibrary |
-{ |
- /// <summary> |
- /// </summary> |
- public class TestUtils |
- { |
- |
- #region Methods: Handling embedded resources |
- /// <summary> |
- /// Gets the embedded file identified by the resource name, and converts the |
- /// file into a string. |
- /// </summary> |
- /// <param name="resourceName">In VS, is DefaultNamespace.FileName?</param> |
- /// <returns></returns> |
- public static string GetEmbeddedStringResource(Assembly assembly, string resourceName) |
- { |
- string result = null; |
- |
- // Use the .NET procedure for loading a file embedded in the assembly |
- Stream stream = assembly.GetManifestResourceStream(resourceName); |
- if (stream != null) |
- { |
- // Convert bytes to string |
- byte[] fileContentsAsBytes = new byte[stream.Length]; |
- stream.Read(fileContentsAsBytes, 0, (int)stream.Length); |
- result = Encoding.Default.GetString(fileContentsAsBytes); |
- } |
- else |
- { |
- // Embedded resource not found - list available resources |
- Debug.WriteLine("Unable to find the embedded resource file '" + resourceName + "'."); |
- Debug.WriteLine(" Available resources:"); |
- foreach (string aResourceName in assembly.GetManifestResourceNames()) |
- { |
- Debug.WriteLine(" " + aResourceName); |
- } |
- } |
- |
- return result; |
- } |
- /// <summary> |
- /// |
- /// </summary> |
- /// <param name="embeddedResourceName"></param> |
- /// <param name="baseFileName"></param> |
- /// <param name="fileExtension"></param> |
- /// <returns></returns> |
- public static void WriteEmbeddedResourceToFile(Assembly assembly, string embeddedResourceName, string fileName) |
- { |
- // Get file contents |
- string fileContents = GetEmbeddedStringResource(assembly, embeddedResourceName); |
- if (fileContents == null) |
- throw new ApplicationException("Failed to get embedded resource '" + embeddedResourceName + "' from assembly '" + assembly.FullName); |
- |
- // Write to file |
- StreamWriter sw = new StreamWriter(fileName); |
- sw.Write(fileContents); |
- sw.Close(); |
- } |
- |
- /// <summary> |
- /// Writes an embedded resource to a file. |
- /// </summary> |
- /// <param name="assembly">The name of the assembly that the embedded resource is defined.</param> |
- /// <param name="embeddedResourceName">The name of the embedded resource.</param> |
- /// <param name="fileName">The file to write the embedded resource's content.</param> |
- public static void WriteEmbeddedResourceToBinaryFile(Assembly assembly, string embeddedResourceName, string fileName) |
- { |
- // Get file contents |
- Stream stream = assembly.GetManifestResourceStream(embeddedResourceName); |
- if (stream == null) |
- throw new InvalidOperationException("Failed to get embedded resource '" + embeddedResourceName + "' from assembly '" + assembly.FullName); |
- |
- // Write to file |
- BinaryWriter sw = null; |
- FileStream fs = null; |
- try |
- { |
- byte[] fileContentsAsBytes = new byte[stream.Length]; |
- stream.Read(fileContentsAsBytes, 0, (int)stream.Length); |
- |
- FileMode mode = FileMode.CreateNew; |
- if (File.Exists(fileName)) |
- { |
- mode = FileMode.Truncate; |
- } |
- |
- fs = new FileStream(fileName, mode); |
- |
- sw = new BinaryWriter(fs); |
- sw.Write(fileContentsAsBytes); |
- } |
- finally |
- { |
- if (fs != null) |
- { |
- fs.Close(); |
- } |
- if (sw != null) |
- { |
- sw.Close(); |
- } |
- } |
- } |
- |
- #endregion |
- |
- #region Methods: Handling temporary files and directories |
- /// <summary> |
- /// Returns the first available file name on the form |
- /// [baseFileName]i.[extension] |
- /// where [i] starts at 1 and increases until there is an available file name |
- /// in the given directory. Also creates an empty file with that name to mark |
- /// that file as occupied. |
- /// </summary> |
- /// <param name="directory">Directory that the file should live in.</param> |
- /// <param name="baseFileName"></param> |
- /// <param name="extension">may be null, in which case the .[extension] part |
- /// is not added.</param> |
- /// <returns>Full file name.</returns> |
- public static string GetNewFileName(string directory, string baseFileName, string extension) |
- { |
- // Get the new file name |
- string fileName = GetNewFileOrDirectoryNameWithoutCreatingAnything(directory, baseFileName, extension); |
- |
- // Create an empty file to mark it as taken |
- StreamWriter sw = new StreamWriter(fileName); |
- |
- sw.Write(""); |
- sw.Close(); |
- return fileName; |
- } |
- /// <summary> |
- /// Returns the first available directory name on the form |
- /// [baseDirectoryName]i |
- /// where [i] starts at 1 and increases until there is an available directory name |
- /// in the given directory. Also creates the directory to mark it as occupied. |
- /// </summary> |
- /// <param name="directory">Directory that the file should live in.</param> |
- /// <param name="baseDirectoryName"></param> |
- /// <returns>Full directory name.</returns> |
- public static string GetNewDirectoryName(string directory, string baseDirectoryName) |
- { |
- // Get the new file name |
- string directoryName = GetNewFileOrDirectoryNameWithoutCreatingAnything(directory, baseDirectoryName, null); |
- |
- // Create an empty directory to make it as occupied |
- Directory.CreateDirectory(directoryName); |
- |
- return directoryName; |
- } |
- |
- /// <summary> |
- /// |
- /// </summary> |
- /// <param name="directory"></param> |
- /// <param name="baseFileName"></param> |
- /// <param name="extension"></param> |
- /// <returns></returns> |
- private static string GetNewFileOrDirectoryNameWithoutCreatingAnything(string directory, string baseFileName, string extension) |
- { |
- // - get a file name that we can use |
- string fileName; |
- int i = 1; |
- |
- string fullFileName = null; |
- while (true) |
- { |
- // construct next file name |
- fileName = baseFileName + i; |
- if (extension != null) |
- fileName += '.' + extension; |
- |
- // check if that file exists in the directory |
- fullFileName = Path.Combine(directory, fileName); |
- |
- if (!File.Exists(fullFileName) && !Directory.Exists(fullFileName)) |
- break; |
- else |
- i++; |
- } |
- |
- return fullFileName; |
- } |
- #endregion |
- |
- #region Methods: Handling solutions |
- /// <summary> |
- /// Closes the currently open solution (if any), and creates a new solution with the given name. |
- /// </summary> |
- /// <param name="solutionName">Name of new solution.</param> |
- public void CreateEmptySolution(string directory, string solutionName) |
- { |
- CloseCurrentSolution(__VSSLNSAVEOPTIONS.SLNSAVEOPT_NoSave); |
- |
- string solutionDirectory = GetNewDirectoryName(directory, solutionName); |
- |
- // Create and force save solution |
- IVsSolution solutionService = (IVsSolution)VsIdeTestHostContext.ServiceProvider.GetService(typeof(IVsSolution)); |
- solutionService.CreateSolution(solutionDirectory, solutionName, (uint)__VSCREATESOLUTIONFLAGS.CSF_SILENT); |
- solutionService.SaveSolutionElement((uint)__VSSLNSAVEOPTIONS.SLNSAVEOPT_ForceSave, null, 0); |
- DTE dte = VsIdeTestHostContext.Dte; |
- Assert.AreEqual(solutionName + ".sln", Path.GetFileName(dte.Solution.FileName), "Newly created solution has wrong Filename"); |
- } |
- |
- public void CloseCurrentSolution(__VSSLNSAVEOPTIONS saveoptions) |
- { |
- // Get solution service |
- IVsSolution solutionService = (IVsSolution)VsIdeTestHostContext.ServiceProvider.GetService(typeof(IVsSolution)); |
- |
- // Close already open solution |
- solutionService.CloseSolutionElement((uint)saveoptions, null, 0); |
- } |
- |
- public void ForceSaveSolution() |
- { |
- // Get solution service |
- IVsSolution solutionService = (IVsSolution)VsIdeTestHostContext.ServiceProvider.GetService(typeof(IVsSolution)); |
- |
- // Force-save the solution |
- solutionService.SaveSolutionElement((uint)__VSSLNSAVEOPTIONS.SLNSAVEOPT_ForceSave, null, 0); |
- } |
- |
- /// <summary> |
- /// Get current number of open project in solution |
- /// </summary> |
- /// <returns></returns> |
- public int ProjectCount() |
- { |
- // Get solution service |
- IVsSolution solutionService = (IVsSolution)VsIdeTestHostContext.ServiceProvider.GetService(typeof(IVsSolution)); |
- object projectCount; |
- solutionService.GetProperty((int)__VSPROPID.VSPROPID_ProjectCount, out projectCount); |
- return (int)projectCount; |
- } |
- #endregion |
- |
- #region Methods: Handling projects |
- /// <summary> |
- /// Creates a project. |
- /// </summary> |
- /// <param name="projectName">Name of new project.</param> |
- /// <param name="templateName">Name of project template to use</param> |
- /// <param name="language">language</param> |
- /// <returns>New project.</returns> |
- public void CreateProjectFromTemplate(string projectName, string templateName, string language, bool exclusive) |
- { |
- DTE dte = (DTE)VsIdeTestHostContext.ServiceProvider.GetService(typeof(DTE)); |
- |
- Solution2 sol = dte.Solution as Solution2; |
- string projectTemplate = sol.GetProjectTemplate(templateName, language); |
- |
- // - project name and directory |
- string solutionDirectory = Directory.GetParent(dte.Solution.FullName).FullName; |
- string projectDirectory = GetNewDirectoryName(solutionDirectory, projectName); |
- |
- dte.Solution.AddFromTemplate(projectTemplate, projectDirectory, projectName, false); |
- } |
- #endregion |
- |
- #region Methods: Handling project items |
- /// <summary> |
- /// Create a new item in the project |
- /// </summary> |
- /// <param name="parent">the parent collection for the new item</param> |
- /// <param name="templateName"></param> |
- /// <param name="language"></param> |
- /// <param name="name"></param> |
- /// <returns></returns> |
- public ProjectItem AddNewItemFromVsTemplate(ProjectItems parent, string templateName, string language, string name) |
- { |
- if (parent == null) |
- throw new ArgumentException("project"); |
- if (name == null) |
- throw new ArgumentException("name"); |
- |
- DTE dte = (DTE)VsIdeTestHostContext.ServiceProvider.GetService(typeof(DTE)); |
- |
- Solution2 sol = dte.Solution as Solution2; |
- |
- string filename = sol.GetProjectItemTemplate(templateName, language); |
- |
- parent.AddFromTemplate(filename, name); |
- |
- return parent.Item(name); |
- } |
- |
- /// <summary> |
- /// Save an open document. |
- /// </summary> |
- /// <param name="documentMoniker">for filebased documents this is the full path to the document</param> |
- public void SaveDocument(string documentMoniker) |
- { |
- // Get document cookie and hierarchy for the file |
- IVsRunningDocumentTable runningDocumentTableService = (IVsRunningDocumentTable)VsIdeTestHostContext.ServiceProvider.GetService(typeof(IVsRunningDocumentTable)); |
- uint docCookie; |
- IntPtr docData; |
- IVsHierarchy hierarchy; |
- uint itemId; |
- runningDocumentTableService.FindAndLockDocument( |
- (uint)Microsoft.VisualStudio.Shell.Interop._VSRDTFLAGS.RDT_NoLock, |
- documentMoniker, |
- out hierarchy, |
- out itemId, |
- out docData, |
- out docCookie); |
- |
- // Save the document |
- IVsSolution solutionService = (IVsSolution)VsIdeTestHostContext.ServiceProvider.GetService(typeof(IVsSolution)); |
- solutionService.SaveSolutionElement((uint)__VSSLNSAVEOPTIONS.SLNSAVEOPT_ForceSave, hierarchy, docCookie); |
- } |
- |
- public void CloseInEditorWithoutSaving(string fullFileName) |
- { |
- // Get the RDT service |
- IVsRunningDocumentTable runningDocumentTableService = (IVsRunningDocumentTable)VsIdeTestHostContext.ServiceProvider.GetService(typeof(IVsRunningDocumentTable)); |
- Assert.IsNotNull(runningDocumentTableService, "Failed to get the Running Document Table Service"); |
- |
- // Get our document cookie and hierarchy for the file |
- uint docCookie; |
- IntPtr docData; |
- IVsHierarchy hierarchy; |
- uint itemId; |
- runningDocumentTableService.FindAndLockDocument( |
- (uint)Microsoft.VisualStudio.Shell.Interop._VSRDTFLAGS.RDT_NoLock, |
- fullFileName, |
- out hierarchy, |
- out itemId, |
- out docData, |
- out docCookie); |
- |
- // Get the SolutionService |
- IVsSolution solutionService = VsIdeTestHostContext.ServiceProvider.GetService(typeof(IVsSolution)) as IVsSolution; |
- Assert.IsNotNull(solutionService, "Failed to get IVsSolution service"); |
- |
- // Close the document |
- solutionService.CloseSolutionElement( |
- (uint)__VSSLNSAVEOPTIONS.SLNSAVEOPT_NoSave, |
- hierarchy, |
- docCookie); |
- } |
- #endregion |
- |
- #region Methods: Handling Toolwindows |
- public bool CanFindToolwindow(Guid persistenceGuid) |
- { |
- IVsUIShell uiShellService = VsIdeTestHostContext.ServiceProvider.GetService(typeof(SVsUIShell)) as IVsUIShell; |
- Assert.IsNotNull(uiShellService); |
- IVsWindowFrame windowFrame; |
- int hr = uiShellService.FindToolWindow((uint)__VSFINDTOOLWIN.FTW_fFindFirst, ref persistenceGuid, out windowFrame); |
- Assert.IsTrue(hr == VSConstants.S_OK); |
- |
- return (windowFrame != null); |
- } |
- #endregion |
- |
- #region Methods: Loading packages |
- public IVsPackage LoadPackage(Guid packageGuid) |
- { |
- IVsShell shellService = (IVsShell)VsIdeTestHostContext.ServiceProvider.GetService(typeof(SVsShell)); |
- IVsPackage package; |
- shellService.LoadPackage(ref packageGuid, out package); |
- Assert.IsNotNull(package, "Failed to load package"); |
- return package; |
- } |
- #endregion |
- |
- /// <summary> |
- /// Executes a Command (menu item) in the given context |
- /// </summary> |
- public void ExecuteCommand(CommandID cmd) |
- { |
- object Customin = null; |
- object Customout = null; |
- string guidString = cmd.Guid.ToString("B").ToUpper(); |
- int cmdId = cmd.ID; |
- DTE dte = VsIdeTestHostContext.Dte; |
- dte.Commands.Raise(guidString, cmdId, ref Customin, ref Customout); |
- } |
- |
- } |
-} |