Index: visual_studio/NativeClientVSAddIn/UnitTests/WebServerTest.cs |
diff --git a/visual_studio/NativeClientVSAddIn/UnitTests/WebServerTest.cs b/visual_studio/NativeClientVSAddIn/UnitTests/WebServerTest.cs |
new file mode 100644 |
index 0000000000000000000000000000000000000000..08e8ef909c8ef5e6715d0e06ebba2105ddbf16c7 |
--- /dev/null |
+++ b/visual_studio/NativeClientVSAddIn/UnitTests/WebServerTest.cs |
@@ -0,0 +1,132 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+namespace UnitTests |
+{ |
+ using System; |
+ |
+ using EnvDTE; |
+ using EnvDTE80; |
+ using Microsoft.VisualStudio.TestTools.UnitTesting; |
+ |
+ using NativeClientVSAddIn; |
+ |
+ /// <summary> |
+ /// This is a test class for WebServerTest and is intended |
+ /// to contain all WebServer Unit Tests |
+ /// </summary> |
+ [TestClass] |
+ public class WebServerTest |
+ { |
+ /// <summary> |
+ /// The main visual studio object. |
+ /// </summary> |
+ private DTE2 dte_; |
+ |
+ /// <summary> |
+ /// Gets or sets the test context which provides |
+ /// information about and functionality for the current test run. |
+ /// </summary> |
+ public TestContext TestContext { get; set; } |
+ |
+ /// <summary> |
+ /// This is run before each test to create test resources. |
+ /// </summary> |
+ [TestInitialize] |
+ public void TestSetup() |
+ { |
+ dte_ = TestUtilities.StartVisualStudioInstance(); |
+ try |
+ { |
+ TestUtilities.AssertAddinLoaded(dte_, NativeClientVSAddIn.Strings.AddInName); |
+ } |
+ catch |
+ { |
+ TestUtilities.CleanUpVisualStudioInstance(dte_); |
+ throw; |
+ } |
+ } |
+ |
+ /// <summary> |
+ /// This is run after each test to clean up things created in TestSetup(). |
+ /// </summary> |
+ [TestCleanup] |
+ public void TestCleanup() |
+ { |
+ TestUtilities.CleanUpVisualStudioInstance(dte_); |
+ } |
+ |
+ /// <summary> |
+ /// A test for WebServer Constructor. Starts the web server. |
+ /// </summary> |
+ [TestMethod] |
+ public void WebServerConstructorTest() |
+ { |
+ OutputWindowPane outputWindowPane = dte_.ToolWindows.OutputWindow.OutputWindowPanes.Add( |
+ Strings.WebServerOutputWindowTitle); |
+ |
+ // Set up mock property manager to return the desired property values. |
+ MockPropertyManager properties = new MockPropertyManager( |
+ PropertyManager.ProjectPlatformType.Pepper, |
+ delegate(string page, string name) |
+ { |
+ switch (page) |
+ { |
+ case "ConfigurationGeneral": |
+ switch (name) |
+ { |
+ case "VSNaClSDKRoot": return System.Environment.GetEnvironmentVariable( |
+ NativeClientVSAddIn.Strings.SDKPathEnvironmentVariable); |
+ case "NaClWebServerPort": return "5105"; |
+ } |
+ |
+ break; |
+ case "Property": |
+ switch (name) |
+ { |
+ case "ProjectDirectory": return TestContext.DeploymentDirectory; |
+ } |
+ |
+ break; |
+ } |
+ |
+ return null; |
+ }, |
+ null); |
+ |
+ WebServer target = null; |
+ try |
+ { |
+ target = new WebServer(outputWindowPane, properties); |
+ |
+ TestUtilities.AssertTrueWithTimeout( |
+ () => !string.IsNullOrEmpty(TestUtilities.GetPaneText(outputWindowPane)), |
+ TimeSpan.FromMilliseconds(500), |
+ 20, |
+ "Pane text never appeared"); |
+ |
+ TestUtilities.AssertTrueWithTimeout( |
+ () => TestUtilities.DoesProcessExist("python.exe", "5105", "httpd.py"), |
+ TimeSpan.FromMilliseconds(500), |
+ 20, |
+ "Web server failed to start."); |
+ |
+ target.Dispose(); |
+ |
+ TestUtilities.AssertTrueWithTimeout( |
+ () => !TestUtilities.DoesProcessExist("python.exe", "5105", "httpd.py"), |
+ TimeSpan.FromMilliseconds(500), |
+ 20, |
+ "Web server failed to shut down."); |
+ } |
+ finally |
+ { |
+ if (target != null) |
+ { |
+ target.Dispose(); |
+ } |
+ } |
+ } |
+ } |
+} |