in BoostTestAdapter/Utility/BoostTestRunnerCommandLineArgsEx.cs [48:99]
public static void SetWorkingEnvironment(this BoostTestRunnerCommandLineArgs args, string source, BoostTestAdapterSettings settings, IBoostTestPackageServiceWrapper packageService)
{
Code.Require(args, "args");
Code.Require(source, "source");
Code.Require(settings, "settings");
// Default working directory
args.WorkingDirectory = Path.GetDirectoryName(source);
if (settings.TestProperties != null)
{
var normalizedSource = source.Replace('/', '\\');
foreach (var test in settings.TestProperties)
{
var normalizedCommand = test.Command.Replace('/', '\\');
if (normalizedCommand.Equals(normalizedSource, StringComparison.OrdinalIgnoreCase))
{
var environment = string.Empty;
foreach (var v in test.Environment)
{
environment += $"{v.Name}={v.Value}\n";
}
args.SetEnvironment(environment);
args.WorkingDirectory = test.WorkingDirectory;
break;
}
}
}
// Working directory extracted from test settings
if (!string.IsNullOrEmpty(settings.WorkingDirectory) && Directory.Exists(settings.WorkingDirectory))
{
args.WorkingDirectory = settings.WorkingDirectory;
}
// Visual Studio configuration (if available) has higher priority over settings
var debuggingProperties = packageService?.Service.GetDebuggingPropertiesAsync(source).Result;
if (debuggingProperties != null)
{
args.WorkingDirectory = debuggingProperties.WorkingDirectory ?? args.WorkingDirectory;
args.SetEnvironment(debuggingProperties.Environment);
}
else
{
Logger.Warn(Resources.DebuggingPropertiesNotFound, source);
}
// Enforce Windows style backward slashes
args.WorkingDirectory = args.WorkingDirectory.Replace('/', '\\');
}