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

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

Issue 11360111: [NaCl Addin] Fix building of libraries in MSVS (Closed) Base URL: http://nativeclient-sdk.googlecode.com/svn/trunk/src
Patch Set: Created 8 years, 1 month 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
(Empty)
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
3 // found in the LICENSE file.
4 using System;
5 using System.Text;
6 using System.Collections.Generic;
7 using EnvDTE;
8 using EnvDTE80;
9 using Microsoft.VisualStudio.TestTools.UnitTesting;
10 using Microsoft.VisualStudio.VCProjectEngine;
11 using NaCl.Build.CPPTasks;
12
13 namespace UnitTests
14 {
15 [TestClass]
16 public class CompileTest
17 {
18 /// <summary>
19 /// The main visual studio object.
20 /// </summary>
21 private DTE2 dte_;
22
23 /// <summary>
24 /// The path to a NaCl solution used in compile tests.
25 /// </summary>
26 private static string SolutionName_;
27
28 /// <summary>
29 /// This is run one time before any test methods are called. Here we set -up test-copies of
30 /// new NaCl solutions for use in the tests.
31 /// </summary>
32 /// <param name="testContext">Holds information about the current test r un</param>
33 [ClassInitialize]
34 public static void ClassSetUp(TestContext testContext)
35 {
36 DTE2 dte = TestUtilities.StartVisualStudioInstance();
37 try
38 {
39 SolutionName_ = TestUtilities.CreateBlankValidNaClSolution(
40 dte,
41 "CompileTest",
42 NativeClientVSAddIn.Strings.PepperPlatformName,
43 NativeClientVSAddIn.Strings.NaCl64PlatformName,
44 testContext);
45 }
46 finally
47 {
48 TestUtilities.CleanUpVisualStudioInstance(dte);
49 }
50 }
51
52 /// <summary>
53 /// This is run after each test to clean up things created in TestSetup( ).
54 /// </summary>
55 [TestCleanup]
56 public void ClassTearDown()
57 {
58 TestUtilities.CleanUpVisualStudioInstance(dte_);
59 }
60
61 /// <summary>
62 /// This is run before each test to create test resources.
63 /// </summary>
64 [TestInitialize]
65 public void TestSetup()
66 {
67 dte_ = TestUtilities.StartVisualStudioInstance();
68 try
69 {
70 TestUtilities.AssertAddinLoaded(dte_, NativeClientVSAddIn.String s.AddInName);
71 }
72 catch
73 {
74 TestUtilities.CleanUpVisualStudioInstance(dte_);
binji 2012/11/08 19:13:06 seems strange to have this here. Doesn't this get
75 throw;
76 }
77 }
78
79 /// <summary>
80 /// Helper function which opens the given solution, sets the configurati on and platform and
81 /// tries to compile, failing the test if the build does not succeed.
82 /// </summary>
83 /// <param name="solutionPath">Path to the solution to open.</param>
84 /// <param name="configName">Solution Configuration name (Debug or Relea se).</param>
85 /// <param name="platformName">Platform name.</param>
86 private void TryCompile(string configName, string platformName)
87 {
88 string failFormat = "Project compile failed for {0} platform {1} con fig."
89 + "Build output: {2}";
90 string cygwinWarningFormat = "Did not pass cygwin nodosfilewarning e nvironment var to"
91 + " tools Platform: {0}, configuration: { 1}";
92 StringComparison ignoreCase = StringComparison.InvariantCultureIgnor eCase;
93
94 // Open Debug configuration and build.
95 dte_.Solution.Open(SolutionName_);
96 TestUtilities.SetSolutionConfiguration(
97 dte_, TestUtilities.BlankNaClProjectUniqueName, configName, plat formName);
98 dte_.Solution.SolutionBuild.Build(true);
99
100 string compileOutput = TestUtilities.GetPaneText(
101 dte_.ToolWindows.OutputWindow.OutputWindowPanes.Item("Build"));
102 Assert.IsTrue(
103 compileOutput.Contains("Build succeeded.", ignoreCase),
104 string.Format(failFormat, platformName, configName, compileOutpu t));
105 Assert.IsFalse(
106 compileOutput.Contains("MS-DOS style path detected", ignoreCase) ,
107 string.Format(cygwinWarningFormat, platformName, configName));
108
109 dte_.Solution.Close(true);
110 }
111
112 /// <summary>
113 /// Set the type of the project: Executable, DynamicLibrary, StaticLibra ry
114 /// </summary>
115 private void SetProjectType(string projectType, string platformName)
116 {
117 dte_.Solution.Open(SolutionName_);
118 Project project = dte_.Solution.Projects.Item(TestUtilities.BlankNaC lProjectUniqueName);
119 VCConfiguration config;
120 IVCRulePropertyStorage rule;
121
122 config = TestUtilities.GetVCConfiguration(project, "Debug", platform Name);
123 rule = config.Rules.Item("ConfigurationGeneral");
124 rule.SetPropertyValue("ConfigurationType", projectType);
125
126 config = TestUtilities.GetVCConfiguration(project, "Release", platfo rmName);
127 rule = config.Rules.Item("ConfigurationGeneral");
128 rule.SetPropertyValue("ConfigurationType", projectType);
129 dte_.Solution.Close(true);
130 }
131
132 /// <summary>
133 /// Test method to check that the NaCl platform compiles a test project.
134 /// </summary>
135 [TestMethod]
136 public void CheckNaClCompile()
137 {
138 CheckCompile(NativeClientVSAddIn.Strings.NaCl64PlatformName, false);
139 }
140
141 /// <summary>
142 /// Test method to check that the Pepper platform compiles a test projec t.
143 /// </summary>
144 [TestMethod]
145 public void CheckPepperCompile()
146 {
147 CheckCompile(NativeClientVSAddIn.Strings.PepperPlatformName, true);
148 }
149
150 /// <summary>
151 /// Test method to check that the NaCl platform compiles a test project.
152 /// </summary>
153 [TestMethod]
154 public void CheckPNaClCompile()
155 {
156 int revision;
157 string root = System.Environment.GetEnvironmentVariable("NACL_SDK_RO OT");
158 SDKUtilities.GetSDKVersion(root, out revision);
159 if (revision < SDKUtilities.MinPNaCLSDKVersion)
160 {
161 Assert.Inconclusive();
162 }
163 CheckCompile(NativeClientVSAddIn.Strings.PNaClPlatformName, false);
164 }
165
166 private void CheckCompile(string platform, bool dll)
167 {
168 SetProjectType("Executable", platform);
binji 2012/11/08 19:13:06 Is a pepper "executable" a shared library? If it i
169 TryCompile("Debug", platform);
170 TryCompile("Release", platform);
171 SetProjectType("StaticLibrary", platform);
172 TryCompile("Debug", platform);
173 TryCompile("Release", platform);
174 if (dll)
175 {
176 SetProjectType("DynamicLibrary", platform);
177 TryCompile("Debug", platform);
178 TryCompile("Release", platform);
179 }
180 }
181 }
182 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698