Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(221)

Side by Side Diff: visual_studio/NativeClientVSAddIn/UnitTests/TestUtilities.cs

Issue 14122017: [VS Addin] Add visual studio 2012 support (Closed) Base URL: https://nativeclient-sdk.googlecode.com/svn/trunk/src
Patch Set: now with unit tests Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 namespace UnitTests 5 namespace UnitTests
6 { 6 {
7 using System; 7 using System;
8 using System.Collections.Generic; 8 using System.Collections.Generic;
9 using System.IO; 9 using System.IO;
10 using System.Linq; 10 using System.Linq;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 /// <summary> 45 /// <summary>
46 /// This starts an instance of Visual Studio and get its DTE object. 46 /// This starts an instance of Visual Studio and get its DTE object.
47 /// </summary> 47 /// </summary>
48 /// <returns>DTE of the started instance.</returns> 48 /// <returns>DTE of the started instance.</returns>
49 public static DTE2 StartVisualStudioInstance() 49 public static DTE2 StartVisualStudioInstance()
50 { 50 {
51 // Set up filter to handle threading events and automatically retry calls 51 // Set up filter to handle threading events and automatically retry calls
52 // to dte which fail because dte is busy. 52 // to dte which fail because dte is busy.
53 ComMessageFilter.Register(); 53 ComMessageFilter.Register();
54 54
55 Type visualStudioType = Type.GetTypeFromProgID("VisualStudio.DTE.10.0"); 55 Type visualStudioType;
56 if (IsVS2012())
57 visualStudioType = Type.GetTypeFromProgID("VisualStudio.DTE.11.0");
58 else
59 visualStudioType = Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
60
56 DTE2 visualStudio = Activator.CreateInstance(visualStudioType) as DTE2; 61 DTE2 visualStudio = Activator.CreateInstance(visualStudioType) as DTE2;
57 if (visualStudio == null) 62 if (visualStudio == null)
58 { 63 {
59 throw new Exception("Visual Studio failed to start"); 64 throw new Exception("Visual Studio failed to start");
60 } 65 }
61 66
62 visualStudio.MainWindow.Visible = true; 67 visualStudio.MainWindow.Visible = true;
63 return visualStudio; 68 return visualStudio;
64 } 69 }
65 70
(...skipping 11 matching lines...) Expand all
77 } 82 }
78 83
79 dte.Quit(); 84 dte.Quit();
80 } 85 }
81 86
82 // Stop the message filter. 87 // Stop the message filter.
83 ComMessageFilter.Revoke(); 88 ComMessageFilter.Revoke();
84 } 89 }
85 90
86 /// <summary> 91 /// <summary>
92 /// Set the type of the project: Executable, DynamicLibrary, StaticLibrary
93 /// </summary>
94 static void Set2012Tools(Project project, String platformName)
95 {
96 VCConfiguration config;
97 IVCRulePropertyStorage rule;
98
99 config = TestUtilities.GetVCConfiguration(project, "Debug", platformName );
100 rule = config.Rules.Item("ConfigurationGeneral");
101 rule.SetPropertyValue("PlatformToolset", "v110");
102
103 config = TestUtilities.GetVCConfiguration(project, "Release", platformNa me);
104 rule = config.Rules.Item("ConfigurationGeneral");
105 rule.SetPropertyValue("PlatformToolset", "v110");
106 }
107
108 public static void SetProjectType(Project project, string projectType, strin g platformName)
109 {
110 VCConfiguration config;
111 IVCRulePropertyStorage rule;
112
113 config = TestUtilities.GetVCConfiguration(project, "Debug", platformName );
114 rule = config.Rules.Item("ConfigurationGeneral");
115 rule.SetPropertyValue("ConfigurationType", projectType);
116
117 config = TestUtilities.GetVCConfiguration(project, "Release", platformNa me);
118 rule = config.Rules.Item("ConfigurationGeneral");
119 rule.SetPropertyValue("ConfigurationType", projectType);
120 }
121
122 public static bool IsVS2012()
123 {
124 #if VS2012
binji 2013/06/07 18:49:19 can only be determined at compile time?
Sam Clegg 2013/06/10 22:38:12 Yup.. http://stackoverflow.com/questions/8517159/
125 return true;
126 #else
127 return false;
128 #endif
129 }
130
131 static void AddPlatform(Project project, String platform, String copyFrom)
132 {
133 project.ConfigurationManager.AddPlatform(platform, copyFrom, true);
134 //if (IsVS2012())
binji 2013/06/07 18:49:19 unused?
Sam Clegg 2013/06/11 18:53:58 Done.
135 // Set2012Tools(project, platform);
136 }
137
138 /// <summary>
87 /// Creates a blank valid NaCl project with up-to-date settings. The path t o the new solution 139 /// Creates a blank valid NaCl project with up-to-date settings. The path t o the new solution
88 /// is returned. 140 /// is returned.
89 /// </summary> 141 /// </summary>
90 /// <param name="dte">Interface to an open Visual Studio instance to use.</p aram> 142 /// <param name="dte">Interface to an open Visual Studio instance to use.</p aram>
91 /// <param name="name">Name to give newly created solution.</param> 143 /// <param name="name">Name to give newly created solution.</param>
92 /// <param name="pepperCopyFrom">Platform name to copy existing settings fro m to pepper.</param> 144 /// <param name="pepperCopyFrom">Platform name to copy existing settings fro m to pepper.</param>
93 /// <param name="naclCopyFrom">Platform name to copy existing settings from to NaCl.</param> 145 /// <param name="naclCopyFrom">Platform name to copy existing settings from to NaCl.</param>
94 /// <param name="testContext">Test context used for finding deployment direc tory.</param> 146 /// <param name="testContext">Test context used for finding deployment direc tory.</param>
95 /// <returns>Path to the newly created solution.</returns> 147 /// <returns>Path to the newly created solution.</returns>
96 public static string CreateBlankValidNaClSolution( 148 public static string CreateBlankValidNaClSolution(
97 DTE2 dte, string name, string pepperCopyFrom, string naclCopyFrom, TestC ontext testContext) 149 DTE2 dte, string name, string pepperCopyFrom, string naclCopyFrom, TestC ontext testContext)
98 { 150 {
99 const string BlankSolution = "BlankValidSolution"; 151 string blankSolution = "BlankValidSolution";
152 string srcSolution = blankSolution;
153 if (IsVS2012())
154 srcSolution += "2012";
100 string newSolutionDir = Path.Combine(testContext.DeploymentDirectory, name ); 155 string newSolutionDir = Path.Combine(testContext.DeploymentDirectory, name );
101 string newSolution = Path.Combine(newSolutionDir, BlankSolution + ".sln"); 156 string newSolution = Path.Combine(newSolutionDir, blankSolution + ".sln");
102 CopyDirectory(Path.Combine(testContext.DeploymentDirectory, BlankSolution) , newSolutionDir); 157 CopyDirectory(Path.Combine(testContext.DeploymentDirectory, srcSolution), newSolutionDir);
103 158
104 try 159 try
105 { 160 {
106 dte.Solution.Open(newSolution); 161 dte.Solution.Open(newSolution);
107 Project proj = dte.Solution.Projects.Item(NaClProjectUniqueName); 162 Project proj = dte.Solution.Projects.Item(NaClProjectUniqueName);
108 163
109 // Order matters if copying from the other Native Client type. 164 // Order matters if copying from the other Native Client type.
110 if (PropertyManager.IsNaClPlatform(pepperCopyFrom)) 165 if (PropertyManager.IsNaClPlatform(pepperCopyFrom))
111 { 166 {
112 // create nacl platforms first 167 // create nacl platforms first
113 proj.ConfigurationManager.AddPlatform(Strings.NaCl64PlatformName, nacl CopyFrom, true); 168 AddPlatform(proj, Strings.NaCl64PlatformName, naclCopyFrom);
114 proj.ConfigurationManager.AddPlatform(Strings.NaCl32PlatformName, nacl CopyFrom, true); 169 AddPlatform(proj, Strings.NaCl32PlatformName, naclCopyFrom);
115 proj.ConfigurationManager.AddPlatform(Strings.NaClARMPlatformName, nac lCopyFrom, true); 170 AddPlatform(proj, Strings.NaClARMPlatformName, naclCopyFrom);
116 proj.ConfigurationManager.AddPlatform(Strings.PNaClPlatformName, naclC opyFrom, true); 171 AddPlatform(proj, Strings.PNaClPlatformName, naclCopyFrom);
117 proj.ConfigurationManager.AddPlatform(Strings.PepperPlatformName, pepp erCopyFrom, true); 172 AddPlatform(proj, Strings.PepperPlatformName, pepperCopyFrom);
118 } 173 }
119 else 174 else
120 { 175 {
121 // create pepper platform first 176 // create pepper platform first
122 proj.ConfigurationManager.AddPlatform(Strings.PepperPlatformName, pepp erCopyFrom, true); 177 AddPlatform(proj, Strings.PepperPlatformName, pepperCopyFrom);
123 proj.ConfigurationManager.AddPlatform(Strings.NaCl64PlatformName, nacl CopyFrom, true); 178 AddPlatform(proj, Strings.NaCl64PlatformName, naclCopyFrom);
124 proj.ConfigurationManager.AddPlatform(Strings.NaCl32PlatformName, nacl CopyFrom, true); 179 AddPlatform(proj, Strings.NaCl32PlatformName, naclCopyFrom);
125 proj.ConfigurationManager.AddPlatform(Strings.NaClARMPlatformName, nac lCopyFrom, true); 180 AddPlatform(proj, Strings.NaClARMPlatformName, naclCopyFrom);
126 proj.ConfigurationManager.AddPlatform(Strings.PNaClPlatformName, naclC opyFrom, true); 181 AddPlatform(proj, Strings.PNaClPlatformName, naclCopyFrom);
127 } 182 }
128 183
184 proj.Save();
185
129 // Set the active solution configuration to Debug|NaCl64. 186 // Set the active solution configuration to Debug|NaCl64.
130 SetSolutionConfiguration(dte, NaClProjectUniqueName, "Debug", Strings.Na Cl64PlatformName); 187 SetSolutionConfiguration(dte, NaClProjectUniqueName, "Debug", Strings.Na Cl64PlatformName);
131 188
132 proj.Save();
133 dte.Solution.SaveAs(newSolution); 189 dte.Solution.SaveAs(newSolution);
190
191 SetSolutionConfiguration(dte, NaClProjectUniqueName, "Release", Strings. NaCl64PlatformName);
192
193 dte.Solution.SaveAs(newSolution);
194
134 } 195 }
135 finally 196 finally
136 { 197 {
137 if (dte.Solution != null) 198 if (dte.Solution != null)
138 { 199 {
139 dte.Solution.Close(); 200 dte.Solution.Close();
140 } 201 }
141 } 202 }
142 203
143 return newSolution; 204 return newSolution;
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 } 525 }
465 526
466 foreach (DirectoryInfo subdir in dir.GetDirectories()) 527 foreach (DirectoryInfo subdir in dir.GetDirectories())
467 { 528 {
468 string path = Path.Combine(dest, subdir.Name); 529 string path = Path.Combine(dest, subdir.Name);
469 CopyDirectory(subdir.FullName, path); 530 CopyDirectory(subdir.FullName, path);
470 } 531 }
471 } 532 }
472 } 533 }
473 } 534 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698