| 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 | 8 |
| 9 using EnvDTE; | 9 using EnvDTE; |
| 10 using EnvDTE80; | 10 using EnvDTE80; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 } | 71 } |
| 72 } | 72 } |
| 73 | 73 |
| 74 /// <summary> | 74 /// <summary> |
| 75 /// This is run before each test to create test resources. | 75 /// This is run before each test to create test resources. |
| 76 /// </summary> | 76 /// </summary> |
| 77 [TestInitialize] | 77 [TestInitialize] |
| 78 public void TestSetup() | 78 public void TestSetup() |
| 79 { | 79 { |
| 80 dte_ = TestUtilities.StartVisualStudioInstance(); | 80 dte_ = TestUtilities.StartVisualStudioInstance(); |
| 81 try |
| 82 { |
| 83 TestUtilities.AssertAddinLoaded(dte_, NativeClientVSAddIn.Strings.AddInN
ame); |
| 84 } |
| 85 catch |
| 86 { |
| 87 TestUtilities.CleanUpVisualStudioInstance(dte_); |
| 88 throw; |
| 89 } |
| 81 } | 90 } |
| 82 | 91 |
| 83 /// <summary> | 92 /// <summary> |
| 84 /// This is run after each test to clean up things created in TestSetup(). | 93 /// This is run after each test to clean up things created in TestSetup(). |
| 85 /// </summary> | 94 /// </summary> |
| 86 [TestCleanup] | 95 [TestCleanup] |
| 87 public void TestCleanup() | 96 public void TestCleanup() |
| 88 { | 97 { |
| 89 TestUtilities.CleanUpVisualStudioInstance(dte_); | 98 TestUtilities.CleanUpVisualStudioInstance(dte_); |
| 90 } | 99 } |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 /// </summary> | 229 /// </summary> |
| 221 /// <param name="naclSolution">Path to the solution file to verify.</param> | 230 /// <param name="naclSolution">Path to the solution file to verify.</param> |
| 222 private void VerifyDefaultPepperSettings(string naclSolution) | 231 private void VerifyDefaultPepperSettings(string naclSolution) |
| 223 { | 232 { |
| 224 OpenSolutionAndGetProperties(naclSolution, NativeClientVSAddIn.Strings.Pep
perPlatformName); | 233 OpenSolutionAndGetProperties(naclSolution, NativeClientVSAddIn.Strings.Pep
perPlatformName); |
| 225 | 234 |
| 226 string page; | 235 string page; |
| 227 | 236 |
| 228 // General | 237 // General |
| 229 page = "ConfigurationGeneral"; | 238 page = "ConfigurationGeneral"; |
| 230 AllConfigsAssertPropertyEquals(page, "OutDir", @"$(ProjectDir)Win\", true)
; | 239 AllConfigsAssertPropertyEquals(page, "OutDir", @"$(ProjectDir)win\", true)
; |
| 231 AllConfigsAssertPropertyEquals(page, "IntDir", @"$(ProjectDir)Intermediate
\Win\", true); | 240 AllConfigsAssertPropertyEquals(page, "IntDir", @"$(ProjectDir)win\$(Config
uration)\", true); |
| 232 AllConfigsAssertPropertyEquals(page, "TargetExt", ".dll", true); | 241 AllConfigsAssertPropertyEquals(page, "TargetExt", ".dll", true); |
| 233 AllConfigsAssertPropertyEquals(page, "ConfigurationType", "DynamicLibrary"
, true); | 242 AllConfigsAssertPropertyEquals(page, "ConfigurationType", "DynamicLibrary"
, true); |
| 234 AllConfigsAssertPropertyEquals(page, "VSNaClSDKRoot", @"$(NACL_SDK_ROOT)\"
, false); | 243 AllConfigsAssertPropertyEquals(page, "VSNaClSDKRoot", @"$(NACL_SDK_ROOT)\"
, false); |
| 244 AllConfigsAssertPropertyEquals(page, "NaClWebServerPort", "5103", false); |
| 235 AllConfigsAssertPropertyEquals(page, "CharacterSet", "Unicode", false); | 245 AllConfigsAssertPropertyEquals(page, "CharacterSet", "Unicode", false); |
| 246 AllConfigsAssertPropertyIsNotNullOrEmpty(page, "NaClAddInVersion"); |
| 236 | 247 |
| 237 // Debugging | 248 // Debugging |
| 238 page = "WindowsLocalDebugger"; | 249 page = "WindowsLocalDebugger"; |
| 250 string chromePath = System.Environment.GetEnvironmentVariable( |
| 251 NativeClientVSAddIn.Strings.ChromePathEnvironmentVariable); |
| 239 AllConfigsAssertPropertyEquals( | 252 AllConfigsAssertPropertyEquals( |
| 240 page, "LocalDebuggerCommand", @"$(CHROME_PATH)", true); | 253 page, "LocalDebuggerCommand", chromePath, true); |
| 241 | 254 |
| 255 string propName = "LocalDebuggerCommandArguments"; |
| 256 string dataDir = "--user-data-dir=\"$(ProjectDir)/chrome_data\""; |
| 257 string address = "localhost:$(NaClWebServerPort)"; |
| 258 string naclFlag = "--enable-nacl"; |
| 242 string targetFlag = "--register-pepper-plugins=\"$(TargetPath)\";applicati
on/x-nacl"; | 259 string targetFlag = "--register-pepper-plugins=\"$(TargetPath)\";applicati
on/x-nacl"; |
| 243 string serverFlag = "localhost:5103"; | 260 string noSandBoxFlag = "--no-sandbox"; |
| 244 string debuggerFlag = "--wait-for-debugger-children"; | 261 string debugChildrenFlag = "--wait-for-debugger-children"; |
| 245 TestUtilities.AssertPropertyEquals( | 262 AllConfigsAssertPropertyContains(page, propName, dataDir, true); |
| 246 debug_, | 263 AllConfigsAssertPropertyContains(page, propName, address, true); |
| 247 page, | 264 AllConfigsAssertPropertyContains(page, propName, naclFlag, true); |
| 248 "LocalDebuggerCommandArguments", | 265 AllConfigsAssertPropertyContains(page, propName, targetFlag, true); |
| 249 string.Format("{0} {1} {2}", targetFlag, serverFlag, debuggerFlag), | 266 TestUtilities.AssertPropertyContains(debug_, page, propName, debugChildren
Flag, true); |
| 250 true); | 267 TestUtilities.AssertPropertyContains(debug_, page, propName, noSandBoxFlag
, true); |
| 251 TestUtilities.AssertPropertyEquals( | |
| 252 release_, | |
| 253 page, | |
| 254 "LocalDebuggerCommandArguments", | |
| 255 string.Format("{0} {1}", targetFlag, serverFlag), | |
| 256 true); | |
| 257 | 268 |
| 258 // VC++ Directories | 269 // VC++ Directories |
| 259 page = "ConfigurationDirectories"; | 270 page = "ConfigurationDirectories"; |
| 260 AllConfigsAssertPropertyContains(page, "IncludePath", @"$(VSNaClSDKRoot)in
clude;", true); | 271 AllConfigsAssertPropertyContains(page, "IncludePath", @"$(VSNaClSDKRoot)in
clude;", true); |
| 261 AllConfigsAssertPropertyContains(page, "IncludePath", @"$(VCInstallDir)inc
lude", true); | 272 AllConfigsAssertPropertyContains(page, "IncludePath", @"$(VCInstallDir)inc
lude", true); |
| 262 AllConfigsAssertPropertyContains( | 273 AllConfigsAssertPropertyContains( |
| 263 page, "LibraryPath", @"$(VSNaClSDKRoot)lib\win_x86_32_host;", true); | 274 page, "LibraryPath", @"$(VSNaClSDKRoot)lib\win_x86_32_host\$(Configura
tion);", true); |
| 264 AllConfigsAssertPropertyContains(page, "LibraryPath", @"$(VCInstallDir)lib
", true); | 275 AllConfigsAssertPropertyContains(page, "LibraryPath", @"$(VCInstallDir)lib
", true); |
| 265 | 276 |
| 266 // C/C++ Code Generation | 277 // C/C++ Code Generation |
| 267 page = "CL"; | 278 page = "CL"; |
| 268 TestUtilities.AssertPropertyEquals(release_, page, "RuntimeLibrary", "Mult
iThreaded", false); | 279 TestUtilities.AssertPropertyEquals(release_, page, "RuntimeLibrary", "Mult
iThreaded", false); |
| 269 TestUtilities.AssertPropertyEquals( | 280 TestUtilities.AssertPropertyEquals( |
| 270 debug_, page, "RuntimeLibrary", "MultiThreadedDebug", false); | 281 debug_, page, "RuntimeLibrary", "MultiThreadedDebug", false); |
| 271 TestUtilities.AssertPropertyEquals(release_, page, "BasicRuntimeChecks", "
Default", false); | 282 TestUtilities.AssertPropertyEquals(release_, page, "BasicRuntimeChecks", "
Default", false); |
| 272 TestUtilities.AssertPropertyEquals( | 283 TestUtilities.AssertPropertyEquals( |
| 273 debug_, page, "BasicRuntimeChecks", "EnableFastChecks", false); | 284 debug_, page, "BasicRuntimeChecks", "EnableFastChecks", false); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 private void VerifyDefaultNaClSettings(string naclSolution) | 318 private void VerifyDefaultNaClSettings(string naclSolution) |
| 308 { | 319 { |
| 309 OpenSolutionAndGetProperties(naclSolution, NativeClientVSAddIn.Strings.NaC
lPlatformName); | 320 OpenSolutionAndGetProperties(naclSolution, NativeClientVSAddIn.Strings.NaC
lPlatformName); |
| 310 | 321 |
| 311 string page; | 322 string page; |
| 312 | 323 |
| 313 // General | 324 // General |
| 314 page = "ConfigurationGeneral"; | 325 page = "ConfigurationGeneral"; |
| 315 AllConfigsAssertPropertyEquals(page, "OutDir", @"$(ProjectDir)$(ToolchainN
ame)\", true); | 326 AllConfigsAssertPropertyEquals(page, "OutDir", @"$(ProjectDir)$(ToolchainN
ame)\", true); |
| 316 AllConfigsAssertPropertyEquals( | 327 AllConfigsAssertPropertyEquals( |
| 317 page, "IntDir", @"$(ProjectDir)Intermediate\$(ToolchainName)\", true); | 328 page, "IntDir", @"$(ProjectDir)$(ToolchainName)\$(Configuration)\", tr
ue); |
| 318 AllConfigsAssertPropertyEquals(page, "ToolchainName", "newlib", true); | 329 AllConfigsAssertPropertyEquals(page, "ToolchainName", "newlib", true); |
| 319 AllConfigsAssertPropertyEquals(page, "PlatformToolset", "win_x86_$(Toolcha
inName)", true); | 330 AllConfigsAssertPropertyEquals(page, "PlatformToolset", "win_x86_$(Toolcha
inName)", true); |
| 320 AllConfigsAssertPropertyEquals(page, "TargetArchitecture", "x86_64", true)
; | 331 AllConfigsAssertPropertyEquals(page, "TargetArchitecture", "x86_64", true)
; |
| 321 AllConfigsAssertPropertyEquals(page, "VSNaClSDKRoot", @"$(NACL_SDK_ROOT)\"
, false); | 332 AllConfigsAssertPropertyEquals(page, "VSNaClSDKRoot", @"$(NACL_SDK_ROOT)\"
, false); |
| 322 AllConfigsAssertPropertyEquals(page, "NaClManifestPath", string.Empty, fal
se); | 333 AllConfigsAssertPropertyEquals(page, "NaClManifestPath", string.Empty, fal
se); |
| 323 AllConfigsAssertPropertyEquals( | 334 AllConfigsAssertPropertyEquals( |
| 324 page, "NaClIrtPath", @"$(VSNaClSDKRoot)\tools\irt_x86_64.nexe", false)
; | 335 page, "NaClIrtPath", @"$(VSNaClSDKRoot)\tools\irt_x86_64.nexe", false)
; |
| 336 AllConfigsAssertPropertyEquals(page, "NaClWebServerPort", "5103", false); |
| 337 AllConfigsAssertPropertyIsNotNullOrEmpty(page, "NaClAddInVersion"); |
| 325 | 338 |
| 326 // Debugging | 339 // Debugging |
| 327 page = "WindowsLocalDebugger"; | 340 page = "WindowsLocalDebugger"; |
| 341 string chromePath = System.Environment.GetEnvironmentVariable( |
| 342 NativeClientVSAddIn.Strings.ChromePathEnvironmentVariable); |
| 328 AllConfigsAssertPropertyEquals( | 343 AllConfigsAssertPropertyEquals( |
| 329 page, "LocalDebuggerCommand", @"$(CHROME_PATH)", true); | 344 page, "LocalDebuggerCommand", chromePath, true); |
| 330 TestUtilities.AssertPropertyEquals( | 345 |
| 331 debug_, | 346 string propName = "LocalDebuggerCommandArguments"; |
| 332 page, | 347 string dataDir = "--user-data-dir=\"$(ProjectDir)/chrome_data\""; |
| 333 "LocalDebuggerCommandArguments", | 348 string address = "localhost:$(NaClWebServerPort)"; |
| 334 "--enable-nacl-debug --no-sandbox localhost:5103", | 349 string naclFlag = "--enable-nacl"; |
| 335 true); | 350 string naclDebugFlag = "--enable-nacl-debug"; |
| 336 TestUtilities.AssertPropertyEquals( | 351 string noSandBoxFlag = "--no-sandbox"; |
| 337 release_, page, "LocalDebuggerCommandArguments", "localhost:5103", tru
e); | 352 TestUtilities.AssertPropertyContains(debug_, page, propName, dataDir, true
); |
| 353 TestUtilities.AssertPropertyContains(debug_, page, propName, address, true
); |
| 354 TestUtilities.AssertPropertyContains(debug_, page, propName, naclFlag, tru
e); |
| 355 TestUtilities.AssertPropertyContains(debug_, page, propName, naclDebugFlag
, true); |
| 356 TestUtilities.AssertPropertyContains(debug_, page, propName, noSandBoxFlag
, true); |
| 357 TestUtilities.AssertPropertyContains(release_, page, propName, dataDir, tr
ue); |
| 358 TestUtilities.AssertPropertyContains(release_, page, propName, address, tr
ue); |
| 359 TestUtilities.AssertPropertyContains(release_, page, propName, naclFlag, t
rue); |
| 338 | 360 |
| 339 // VC++ Directories | 361 // VC++ Directories |
| 340 page = "ConfigurationDirectories"; | 362 page = "ConfigurationDirectories"; |
| 341 AllConfigsAssertPropertyContains(page, "IncludePath", @"$(VSNaClSDKRoot)in
clude;", true); | 363 AllConfigsAssertPropertyContains(page, "IncludePath", @"$(VSNaClSDKRoot)in
clude;", true); |
| 342 AllConfigsAssertPropertyContains(page, "LibraryPath", @"$(VSNaClSDKRoot)li
b;", true); | 364 AllConfigsAssertPropertyContains(page, "LibraryPath", @"$(VSNaClSDKRoot)li
b;", true); |
| 343 | 365 |
| 344 // C/C++ General | 366 // C/C++ General |
| 345 page = "CL"; | 367 page = "CL"; |
| 346 TestUtilities.AssertPropertyEquals( | 368 TestUtilities.AssertPropertyEquals( |
| 347 debug_, page, "GenerateDebuggingInformation", "true", false); | 369 debug_, page, "GenerateDebuggingInformation", "true", false); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 379 /// <summary> | 401 /// <summary> |
| 380 /// Helper function which opens the given solution, sets the configuration a
nd platform and | 402 /// Helper function which opens the given solution, sets the configuration a
nd platform and |
| 381 /// tries to compile, failing the test if the build does not succeed. | 403 /// tries to compile, failing the test if the build does not succeed. |
| 382 /// </summary> | 404 /// </summary> |
| 383 /// <param name="solutionPath">Path to the solution to open.</param> | 405 /// <param name="solutionPath">Path to the solution to open.</param> |
| 384 /// <param name="configName">Solution Configuration name (Debug or Release).
</param> | 406 /// <param name="configName">Solution Configuration name (Debug or Release).
</param> |
| 385 /// <param name="platformName">Platform name.</param> | 407 /// <param name="platformName">Platform name.</param> |
| 386 private void TryCompile(string solutionPath, string configName, string platf
ormName) | 408 private void TryCompile(string solutionPath, string configName, string platf
ormName) |
| 387 { | 409 { |
| 388 string failFormat = "Project compile failed for {0} platform {1} config. B
uild output: {2}"; | 410 string failFormat = "Project compile failed for {0} platform {1} config. B
uild output: {2}"; |
| 389 | 411 string cygwinWarningFormat = "Did not pass cygwin nodosfilewarning environ
ment var to tools" |
| 412 + " Platform: {0}, configuration: {1}"; |
| 413 StringComparison ignoreCase = StringComparison.InvariantCultureIgnoreCase; |
| 414 |
| 390 // Open Debug configuration and build. | 415 // Open Debug configuration and build. |
| 391 dte_.Solution.Open(solutionPath); | 416 dte_.Solution.Open(solutionPath); |
| 392 TestUtilities.SetSolutionConfiguration( | 417 TestUtilities.SetSolutionConfiguration( |
| 393 dte_, TestUtilities.BlankNaClProjectUniqueName, configName, platformNa
me); | 418 dte_, TestUtilities.BlankNaClProjectUniqueName, configName, platformNa
me); |
| 394 dte_.Solution.SolutionBuild.Build(true); | 419 dte_.Solution.SolutionBuild.Build(true); |
| 395 | 420 |
| 396 string compileOutput = TestUtilities.GetPaneText( | 421 string compileOutput = TestUtilities.GetPaneText( |
| 397 dte_.ToolWindows.OutputWindow.OutputWindowPanes.Item("Build")); | 422 dte_.ToolWindows.OutputWindow.OutputWindowPanes.Item("Build")); |
| 398 Assert.IsTrue( | 423 Assert.IsTrue( |
| 399 compileOutput.Contains("Build succeeded.", StringComparison.InvariantC
ultureIgnoreCase), | 424 compileOutput.Contains("Build succeeded.", ignoreCase), |
| 400 string.Format(failFormat, platformName, configName, compileOutput)); | 425 string.Format(failFormat, platformName, configName, compileOutput)); |
| 426 Assert.IsFalse( |
| 427 compileOutput.Contains("MS-DOS style path detected", ignoreCase), |
| 428 string.Format(cygwinWarningFormat, platformName, configName)); |
| 429 |
| 401 dte_.Solution.Close(); | 430 dte_.Solution.Close(); |
| 402 } | 431 } |
| 403 | 432 |
| 404 /// <summary> | 433 /// <summary> |
| 405 /// Helper function to reduce repeated code. Opens the given solution and s
ets the debug_ | 434 /// Helper function to reduce repeated code. Opens the given solution and s
ets the debug_ |
| 406 /// and release_ member variables to point to the given platform type. | 435 /// and release_ member variables to point to the given platform type. |
| 407 /// </summary> | 436 /// </summary> |
| 408 /// <param name="solutionPath">Path to the solution to open.</param> | 437 /// <param name="solutionPath">Path to the solution to open.</param> |
| 409 /// <param name="platformName">Platform type to load.</param> | 438 /// <param name="platformName">Platform type to load.</param> |
| 410 private void OpenSolutionAndGetProperties(string solutionPath, string platfo
rmName) | 439 private void OpenSolutionAndGetProperties(string solutionPath, string platfo
rmName) |
| (...skipping 29 matching lines...) Expand all Loading... |
| 440 TestUtilities.AssertPropertyEquals( | 469 TestUtilities.AssertPropertyEquals( |
| 441 release_, | 470 release_, |
| 442 pageName, | 471 pageName, |
| 443 propertyName, | 472 propertyName, |
| 444 expectedValue, | 473 expectedValue, |
| 445 ignoreCase); | 474 ignoreCase); |
| 446 } | 475 } |
| 447 | 476 |
| 448 /// <summary> | 477 /// <summary> |
| 449 /// Tests that a given property contains a specific string for both Debug an
d Release | 478 /// Tests that a given property contains a specific string for both Debug an
d Release |
| 450 /// configurations under the NaCl platform. | 479 /// configurations under the current test's platform. |
| 451 /// </summary> | 480 /// </summary> |
| 452 /// <param name="pageName">Property page name where property resides.</param
> | 481 /// <param name="pageName">Property page name where property resides.</param
> |
| 453 /// <param name="propertyName">Name of the property to check.</param> | 482 /// <param name="propertyName">Name of the property to check.</param> |
| 454 /// <param name="expectedValue">Expected value of the property.</param> | 483 /// <param name="expectedValue">Expected value of the property.</param> |
| 455 /// <param name="ignoreCase">Ignore case when comparing the expected and act
ual values.</param> | 484 /// <param name="ignoreCase">Ignore case when comparing the expected and act
ual values.</param> |
| 456 private void AllConfigsAssertPropertyContains( | 485 private void AllConfigsAssertPropertyContains( |
| 457 string pageName, | 486 string pageName, |
| 458 string propertyName, | 487 string propertyName, |
| 459 string expectedValue, | 488 string expectedValue, |
| 460 bool ignoreCase) | 489 bool ignoreCase) |
| 461 { | 490 { |
| 462 TestUtilities.AssertPropertyContains( | 491 TestUtilities.AssertPropertyContains( |
| 463 debug_, | 492 debug_, |
| 464 pageName, | 493 pageName, |
| 465 propertyName, | 494 propertyName, |
| 466 expectedValue, | 495 expectedValue, |
| 467 ignoreCase); | 496 ignoreCase); |
| 468 TestUtilities.AssertPropertyContains( | 497 TestUtilities.AssertPropertyContains( |
| 469 release_, | 498 release_, |
| 470 pageName, | 499 pageName, |
| 471 propertyName, | 500 propertyName, |
| 472 expectedValue, | 501 expectedValue, |
| 473 ignoreCase); | 502 ignoreCase); |
| 474 } | 503 } |
| 504 |
| 505 /// <summary> |
| 506 /// Tests that a given property's value is not null or empty for both Debug
and Release |
| 507 /// configurations under the current test's platform. |
| 508 /// </summary> |
| 509 /// <param name="pageName">Property page name where property resides.</param
> |
| 510 /// <param name="propertyName">Name of the property to check.</param> |
| 511 private void AllConfigsAssertPropertyIsNotNullOrEmpty( |
| 512 string pageName, |
| 513 string propertyName) |
| 514 { |
| 515 TestUtilities.AssertPropertyIsNotNullOrEmpty( |
| 516 debug_, |
| 517 pageName, |
| 518 propertyName); |
| 519 TestUtilities.AssertPropertyIsNotNullOrEmpty( |
| 520 release_, |
| 521 pageName, |
| 522 propertyName); |
| 523 } |
| 475 } | 524 } |
| 476 } | 525 } |
| OLD | NEW |