OLD | NEW |
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 Loading... |
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 10 matching lines...) Expand all Loading... |
76 dte.Solution.Close(); | 81 dte.Solution.Close(); |
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 |
| 91 public static void SetProjectType(Project project, string projectType, strin
g platformName) |
| 92 { |
| 93 VCConfiguration config; |
| 94 IVCRulePropertyStorage rule; |
| 95 |
| 96 config = TestUtilities.GetVCConfiguration(project, "Debug", platformName
); |
| 97 rule = config.Rules.Item("ConfigurationGeneral"); |
| 98 rule.SetPropertyValue("ConfigurationType", projectType); |
| 99 |
| 100 config = TestUtilities.GetVCConfiguration(project, "Release", platformNa
me); |
| 101 rule = config.Rules.Item("ConfigurationGeneral"); |
| 102 rule.SetPropertyValue("ConfigurationType", projectType); |
| 103 } |
| 104 |
| 105 public static bool IsVS2012() |
| 106 { |
| 107 #if VS2012 |
| 108 return true; |
| 109 #else |
| 110 return false; |
| 111 #endif |
| 112 } |
| 113 |
| 114 static void AddPlatform(Project project, String platform, String copyFrom) |
| 115 { |
| 116 project.ConfigurationManager.AddPlatform(platform, copyFrom, true); |
| 117 } |
| 118 |
86 /// <summary> | 119 /// <summary> |
87 /// Creates a blank valid NaCl project with up-to-date settings. The path t
o the new solution | 120 /// Creates a blank valid NaCl project with up-to-date settings. The path t
o the new solution |
88 /// is returned. | 121 /// is returned. |
89 /// </summary> | 122 /// </summary> |
90 /// <param name="dte">Interface to an open Visual Studio instance to use.</p
aram> | 123 /// <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> | 124 /// <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> | 125 /// <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> | 126 /// <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> | 127 /// <param name="testContext">Test context used for finding deployment direc
tory.</param> |
95 /// <returns>Path to the newly created solution.</returns> | 128 /// <returns>Path to the newly created solution.</returns> |
96 public static string CreateBlankValidNaClSolution( | 129 public static string CreateBlankValidNaClSolution( |
97 DTE2 dte, string name, string pepperCopyFrom, string naclCopyFrom, TestC
ontext testContext) | 130 DTE2 dte, string name, string pepperCopyFrom, string naclCopyFrom, TestC
ontext testContext) |
98 { | 131 { |
99 const string BlankSolution = "BlankValidSolution"; | 132 string blankSolution = "BlankValidSolution"; |
| 133 string srcSolution = blankSolution; |
| 134 if (IsVS2012()) |
| 135 srcSolution += "2012"; |
100 string newSolutionDir = Path.Combine(testContext.DeploymentDirectory, name
); | 136 string newSolutionDir = Path.Combine(testContext.DeploymentDirectory, name
); |
101 string newSolution = Path.Combine(newSolutionDir, BlankSolution + ".sln"); | 137 string newSolution = Path.Combine(newSolutionDir, blankSolution + ".sln"); |
102 CopyDirectory(Path.Combine(testContext.DeploymentDirectory, BlankSolution)
, newSolutionDir); | 138 CopyDirectory(Path.Combine(testContext.DeploymentDirectory, srcSolution),
newSolutionDir); |
103 | 139 |
104 try | 140 try |
105 { | 141 { |
106 dte.Solution.Open(newSolution); | 142 dte.Solution.Open(newSolution); |
107 Project proj = dte.Solution.Projects.Item(NaClProjectUniqueName); | 143 Project proj = dte.Solution.Projects.Item(NaClProjectUniqueName); |
108 | 144 |
109 // Order matters if copying from the other Native Client type. | 145 // Order matters if copying from the other Native Client type. |
110 if (PropertyManager.IsNaClPlatform(pepperCopyFrom)) | 146 if (PropertyManager.IsNaClPlatform(pepperCopyFrom)) |
111 { | 147 { |
112 // create nacl platforms first | 148 // create nacl platforms first |
113 proj.ConfigurationManager.AddPlatform(Strings.NaCl64PlatformName, nacl
CopyFrom, true); | 149 AddPlatform(proj, Strings.NaCl64PlatformName, naclCopyFrom); |
114 proj.ConfigurationManager.AddPlatform(Strings.NaCl32PlatformName, nacl
CopyFrom, true); | 150 AddPlatform(proj, Strings.NaCl32PlatformName, naclCopyFrom); |
115 proj.ConfigurationManager.AddPlatform(Strings.NaClARMPlatformName, nac
lCopyFrom, true); | 151 AddPlatform(proj, Strings.NaClARMPlatformName, naclCopyFrom); |
116 proj.ConfigurationManager.AddPlatform(Strings.PNaClPlatformName, naclC
opyFrom, true); | 152 AddPlatform(proj, Strings.PNaClPlatformName, naclCopyFrom); |
117 proj.ConfigurationManager.AddPlatform(Strings.PepperPlatformName, pepp
erCopyFrom, true); | 153 AddPlatform(proj, Strings.PepperPlatformName, pepperCopyFrom); |
118 } | 154 } |
119 else | 155 else |
120 { | 156 { |
121 // create pepper platform first | 157 // create pepper platform first |
122 proj.ConfigurationManager.AddPlatform(Strings.PepperPlatformName, pepp
erCopyFrom, true); | 158 AddPlatform(proj, Strings.PepperPlatformName, pepperCopyFrom); |
123 proj.ConfigurationManager.AddPlatform(Strings.NaCl64PlatformName, nacl
CopyFrom, true); | 159 AddPlatform(proj, Strings.NaCl64PlatformName, naclCopyFrom); |
124 proj.ConfigurationManager.AddPlatform(Strings.NaCl32PlatformName, nacl
CopyFrom, true); | 160 AddPlatform(proj, Strings.NaCl32PlatformName, naclCopyFrom); |
125 proj.ConfigurationManager.AddPlatform(Strings.NaClARMPlatformName, nac
lCopyFrom, true); | 161 AddPlatform(proj, Strings.NaClARMPlatformName, naclCopyFrom); |
126 proj.ConfigurationManager.AddPlatform(Strings.PNaClPlatformName, naclC
opyFrom, true); | 162 AddPlatform(proj, Strings.PNaClPlatformName, naclCopyFrom); |
127 } | 163 } |
128 | 164 |
| 165 proj.Save(); |
| 166 |
129 // Set the active solution configuration to Debug|NaCl64. | 167 // Set the active solution configuration to Debug|NaCl64. |
130 SetSolutionConfiguration(dte, NaClProjectUniqueName, "Debug", Strings.Na
Cl64PlatformName); | 168 SetSolutionConfiguration(dte, NaClProjectUniqueName, "Debug", Strings.Na
Cl64PlatformName); |
131 | 169 |
132 proj.Save(); | |
133 dte.Solution.SaveAs(newSolution); | 170 dte.Solution.SaveAs(newSolution); |
| 171 |
| 172 SetSolutionConfiguration(dte, NaClProjectUniqueName, "Release", Strings.
NaCl64PlatformName); |
| 173 |
| 174 dte.Solution.SaveAs(newSolution); |
| 175 |
134 } | 176 } |
135 finally | 177 finally |
136 { | 178 { |
137 if (dte.Solution != null) | 179 if (dte.Solution != null) |
138 { | 180 { |
139 dte.Solution.Close(); | 181 dte.Solution.Close(); |
140 } | 182 } |
141 } | 183 } |
142 | 184 |
143 return newSolution; | 185 return newSolution; |
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
464 } | 506 } |
465 | 507 |
466 foreach (DirectoryInfo subdir in dir.GetDirectories()) | 508 foreach (DirectoryInfo subdir in dir.GetDirectories()) |
467 { | 509 { |
468 string path = Path.Combine(dest, subdir.Name); | 510 string path = Path.Combine(dest, subdir.Name); |
469 CopyDirectory(subdir.FullName, path); | 511 CopyDirectory(subdir.FullName, path); |
470 } | 512 } |
471 } | 513 } |
472 } | 514 } |
473 } | 515 } |
OLD | NEW |