public static void SetWorkingEnvironment()

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('/', '\\');
        }