GivenDotnetTestContainsEnvironmentVariables.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. // Licensed to the .NET Foundation under one or more agreements.
  2. // The .NET Foundation licenses this file to you under the MIT license.
  3. using Microsoft.DotNet.Cli.Utils;
  4. using Microsoft.DotNet.Tools.Test.Utilities;
  5. namespace Microsoft.DotNet.Cli.Test.Tests
  6. {
  7. public class GivenDotnetTestContainsEnvironmentVariables : SdkTest
  8. {
  9. private const string TestAppName = "VSTestEnvironmentVariables";
  10. private const string EnvironmentOption = "--environment";
  11. private const string EnvironmentVariable1 = "__DOTNET_TEST_ENVIRONMENT_VARIABLE_EMPTY";
  12. private const string EnvironmentVariable2 = "__DOTNET_TEST_ENVIRONMENT_VARIABLE_1=VALUE1";
  13. private const string EnvironmentVariable3 = "__DOTNET_TEST_ENVIRONMENT_VARIABLE_2=VALUE WITH SPACE";
  14. public GivenDotnetTestContainsEnvironmentVariables(ITestOutputHelper log) : base(log)
  15. {
  16. }
  17. private readonly string[] ConsoleLoggerOutputDetailed = new[] { "--logger", "console;verbosity=detailed" };
  18. private readonly string[] EnvironmentVariables = new[] {
  19. EnvironmentOption, EnvironmentVariable1,
  20. EnvironmentOption, EnvironmentVariable2,
  21. EnvironmentOption, EnvironmentVariable3,
  22. };
  23. [Fact]
  24. public void ItPassesEnvironmentVariablesFromCommandLineParametersWhenRunningViaCsproj()
  25. {
  26. var testAsset = _testAssetsManager.CopyTestAsset(TestAppName)
  27. .WithSource()
  28. .WithVersionVariables();
  29. var testRoot = testAsset.Path;
  30. CommandResult result = new DotnetTestCommand(Log, disableNewOutput: true, EnvironmentVariables)
  31. .WithWorkingDirectory(testRoot)
  32. .Execute(ConsoleLoggerOutputDetailed);
  33. result.StdOut
  34. .Should().Contain(EnvironmentVariable1)
  35. .And.Contain(EnvironmentVariable2)
  36. .And.Contain(EnvironmentVariable3);
  37. if (!TestContext.IsLocalized())
  38. {
  39. result.StdOut
  40. .Should().Contain("Total tests: 1")
  41. .And.Contain("Passed: 1")
  42. .And.Contain("Passed TestEnvironmentVariables");
  43. }
  44. result.ExitCode.Should().Be(0);
  45. }
  46. [Fact]
  47. public void ItPassesEnvironmentVariablesFromCommandLineParametersWhenRunningViaDll()
  48. {
  49. var testAsset = _testAssetsManager.CopyTestAsset(TestAppName)
  50. .WithSource()
  51. .WithVersionVariables();
  52. var testRoot = testAsset.Path;
  53. var configuration = Environment.GetEnvironmentVariable("CONFIGURATION") ?? "Debug";
  54. var buildCommand = new BuildCommand(testAsset);
  55. buildCommand
  56. .Execute()
  57. .Should().Pass();
  58. var outputDll = Path.Combine(buildCommand.GetOutputDirectory(configuration: configuration).FullName, $"{TestAppName}.dll");
  59. var result = new DotnetTestCommand(Log, disableNewOutput: false, EnvironmentVariables)
  60. .Execute(outputDll, $"{ConsoleLoggerOutputDetailed[0]}:{ConsoleLoggerOutputDetailed[1]}");
  61. result.StartInfo.Arguments
  62. .Should().Contain($"{EnvironmentOption} {EnvironmentVariable1}")
  63. .And.Contain($"{EnvironmentOption} {EnvironmentVariable2}")
  64. .And.Contain($"{EnvironmentOption} \"{EnvironmentVariable3}\"");
  65. result.StdOut
  66. .Should().Contain(EnvironmentVariable1)
  67. .And.Contain(EnvironmentVariable2)
  68. .And.Contain(EnvironmentVariable3);
  69. if (!TestContext.IsLocalized())
  70. {
  71. result.StdOut
  72. .Should().Contain("Total tests: 1")
  73. .And.Contain("Passed: 1")
  74. .And.Contain("Passed TestEnvironmentVariables");
  75. }
  76. result.ExitCode.Should().Be(0);
  77. }
  78. }
  79. }