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 18 matching lines...) Expand all Loading... |
29 /// Uniquename of the NaCl project in BlankValidSolution. | 29 /// Uniquename of the NaCl project in BlankValidSolution. |
30 /// </summary> | 30 /// </summary> |
31 public const string BlankNaClProjectUniqueName = @"NaClProject\NaClProject.v
cxproj"; | 31 public const string BlankNaClProjectUniqueName = @"NaClProject\NaClProject.v
cxproj"; |
32 | 32 |
33 /// <summary> | 33 /// <summary> |
34 /// Uniquename of the non-NaCl project in BlankValidSolution. | 34 /// Uniquename of the non-NaCl project in BlankValidSolution. |
35 /// </summary> | 35 /// </summary> |
36 public const string NotNaClProjectUniqueName = @"NotNaCl\NotNaCl.csproj"; | 36 public const string NotNaClProjectUniqueName = @"NotNaCl\NotNaCl.csproj"; |
37 | 37 |
38 /// <summary> | 38 /// <summary> |
| 39 /// A generic boolean statement to be used with RetryWithTimeout. |
| 40 /// </summary> |
| 41 /// <returns>True if the statement is true, false if false.</returns> |
| 42 public delegate bool RetryStatement(); |
| 43 |
| 44 /// <summary> |
39 /// This starts an instance of Visual Studio and get its DTE object. | 45 /// This starts an instance of Visual Studio and get its DTE object. |
40 /// </summary> | 46 /// </summary> |
41 /// <returns>DTE of the started instance.</returns> | 47 /// <returns>DTE of the started instance.</returns> |
42 public static DTE2 StartVisualStudioInstance() | 48 public static DTE2 StartVisualStudioInstance() |
43 { | 49 { |
44 // Set up filter to handle threading events and automatically retry calls | 50 // Set up filter to handle threading events and automatically retry calls |
45 // to dte which fail because dte is busy. | 51 // to dte which fail because dte is busy. |
46 ComMessageFilter.Register(); | 52 ComMessageFilter.Register(); |
47 | 53 |
48 Type visualStudioType = Type.GetTypeFromProgID("VisualStudio.DTE.10.0"); | 54 Type visualStudioType = Type.GetTypeFromProgID("VisualStudio.DTE.10.0"); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 if (dte.Solution != null) | 133 if (dte.Solution != null) |
128 { | 134 { |
129 dte.Solution.Close(); | 135 dte.Solution.Close(); |
130 } | 136 } |
131 } | 137 } |
132 | 138 |
133 return newSolution; | 139 return newSolution; |
134 } | 140 } |
135 | 141 |
136 /// <summary> | 142 /// <summary> |
137 /// Ensures that the add-in is configured to load on start. If it isn't then
some tests may | |
138 /// unexpectedly fail, this check helps catch that problem early. | |
139 /// </summary> | |
140 /// <param name="dte">The main Visual Studio interface.</param> | |
141 /// <param name="addInName">The name of the add-in to check if loaded.</para
m> | |
142 public static void AssertAddinLoaded(DTE2 dte, string addInName) | |
143 { | |
144 bool found = false; | |
145 foreach (AddIn addin in dte.AddIns) | |
146 { | |
147 if (addin.Connected && addInName.Equals(addin.Name)) | |
148 { | |
149 found = true; | |
150 break; | |
151 } | |
152 } | |
153 | |
154 Assert.IsTrue(found, "Add-in is not configured to load on start."); | |
155 } | |
156 | |
157 /// <summary> | |
158 /// This returns the text contained in the given output window pane. | 143 /// This returns the text contained in the given output window pane. |
159 /// </summary> | 144 /// </summary> |
160 /// <param name="pane">Pane to get text from.</param> | 145 /// <param name="pane">Pane to get text from.</param> |
161 /// <returns>Text in the window.</returns> | 146 /// <returns>Text in the window.</returns> |
162 public static string GetPaneText(OutputWindowPane pane) | 147 public static string GetPaneText(OutputWindowPane pane) |
163 { | 148 { |
164 TextSelection selection = pane.TextDocument.Selection; | 149 TextSelection selection = pane.TextDocument.Selection; |
165 selection.StartOfDocument(false); | 150 selection.StartOfDocument(false); |
166 selection.EndOfDocument(true); | 151 selection.EndOfDocument(true); |
167 return selection.Text; | 152 return selection.Text; |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 string message = string.Format( | 363 string message = string.Format( |
379 "{0} was null or empty. Page: {1}, Configuration: {2}", | 364 "{0} was null or empty. Page: {1}, Configuration: {2}", |
380 propertyName, | 365 propertyName, |
381 pageName, | 366 pageName, |
382 configuration.ConfigurationName); | 367 configuration.ConfigurationName); |
383 | 368 |
384 Assert.IsFalse(string.IsNullOrEmpty(propertyValue), message); | 369 Assert.IsFalse(string.IsNullOrEmpty(propertyValue), message); |
385 } | 370 } |
386 | 371 |
387 /// <summary> | 372 /// <summary> |
| 373 /// Ensures that the add-in is configured to load on start. If it isn't then
some tests may |
| 374 /// unexpectedly fail, this check helps catch that problem early. |
| 375 /// </summary> |
| 376 /// <param name="dte">The main Visual Studio interface.</param> |
| 377 /// <param name="addInName">The name of the add-in to check if loaded.</para
m> |
| 378 public static void AssertAddinLoaded(DTE2 dte, string addInName) |
| 379 { |
| 380 bool found = false; |
| 381 foreach (AddIn addin in dte.AddIns) |
| 382 { |
| 383 if (addin.Connected && addInName.Equals(addin.Name)) |
| 384 { |
| 385 found = true; |
| 386 break; |
| 387 } |
| 388 } |
| 389 |
| 390 Assert.IsTrue(found, "Add-in is not configured to load on start."); |
| 391 } |
| 392 |
| 393 /// <summary> |
| 394 /// Will retry the given statement up to maxRetry times while pausing betwee
n each try for |
| 395 /// the given interval. |
| 396 /// </summary> |
| 397 /// <param name="test">Generic boolean statement.</param> |
| 398 /// <param name="interval">Amount of time to wait between each retry.</param
> |
| 399 /// <param name="maxRetry">Maximum number of retries.</param> |
| 400 /// <param name="message">Message to print on failure.</param> |
| 401 public static void AssertTrueWithTimeout( |
| 402 RetryStatement test, TimeSpan interval, int maxRetry, string message) |
| 403 { |
| 404 for (int tryCount = 0; tryCount <= maxRetry; tryCount++) |
| 405 { |
| 406 if (test.Invoke()) |
| 407 { |
| 408 return; |
| 409 } |
| 410 |
| 411 System.Threading.Thread.Sleep(interval); |
| 412 } |
| 413 |
| 414 throw new Exception(string.Format("Statement timed out. {0}", message)); |
| 415 } |
| 416 |
| 417 /// <summary> |
388 /// Extends the string class to allow checking if a string contains another
string | 418 /// Extends the string class to allow checking if a string contains another
string |
389 /// allowing a comparison type (such as case-insensitivity). | 419 /// allowing a comparison type (such as case-insensitivity). |
390 /// </summary> | 420 /// </summary> |
391 /// <param name="source">Base string to search.</param> | 421 /// <param name="source">Base string to search.</param> |
392 /// <param name="toCheck">String to check if contained within base string.</
param> | 422 /// <param name="toCheck">String to check if contained within base string.</
param> |
393 /// <param name="comparison">Comparison type.</param> | 423 /// <param name="comparison">Comparison type.</param> |
394 /// <returns>True if toCheck is contained in source.</returns> | 424 /// <returns>True if toCheck is contained in source.</returns> |
395 public static bool Contains(this string source, string toCheck, StringCompar
ison comparison) | 425 public static bool Contains(this string source, string toCheck, StringCompar
ison comparison) |
396 { | 426 { |
397 return source.IndexOf(toCheck, comparison) != -1; | 427 return source.IndexOf(toCheck, comparison) != -1; |
(...skipping 26 matching lines...) Expand all Loading... |
424 } | 454 } |
425 | 455 |
426 foreach (DirectoryInfo subdir in dir.GetDirectories()) | 456 foreach (DirectoryInfo subdir in dir.GetDirectories()) |
427 { | 457 { |
428 string path = Path.Combine(dest, subdir.Name); | 458 string path = Path.Combine(dest, subdir.Name); |
429 CopyDirectory(subdir.FullName, path); | 459 CopyDirectory(subdir.FullName, path); |
430 } | 460 } |
431 } | 461 } |
432 } | 462 } |
433 } | 463 } |
OLD | NEW |