/// <summary> /// Sets the working environment (i.e. WorkingDirectory and Environment) properties of the command line arguments /// based on the provided details /// </summary> /// <param name="args">The arguments which to set</param> /// <param name="source">The base source which will be executed</param> /// <param name="settings">The BoostTestAdapterSettings which are currently applied</param> /// <param name="vs">The current Visual Studio instance (if available)</param> /// <exception cref="COMException"></exception> public static void SetWorkingEnvironment(this BoostTestRunnerCommandLineArgs args, string source, BoostTestAdapterSettings settings, IVisualStudio vs) { Code.Require(args, "args"); Code.Require(source, "source"); Code.Require(settings, "settings"); // Default working directory args.WorkingDirectory = Path.GetDirectoryName(source); // Working directory extracted from test settings if (!string.IsNullOrEmpty(settings.WorkingDirectory) && Directory.Exists(settings.WorkingDirectory)) { args.WorkingDirectory = settings.WorkingDirectory; } if (vs != null) { // Visual Studio configuration has higher priority over settings (if available) IVSDebugConfiguration vsConfiguration = LocateVSDebugConfiguration(source, vs); if (vsConfiguration != null) { args.WorkingDirectory = vsConfiguration.WorkingDirectory; args.SetEnvironment(vsConfiguration.Environment); } } // Enforce windows style backward slashes args.WorkingDirectory = args.WorkingDirectory.Replace('/', '\\'); }
/// <summary> /// Commits any pending changes and builds a fake IProject instance. /// </summary> /// <returns>A fake IProject instance consisting of the previously registered output, definitions and sources</returns> public IProject Build() { IProject fake = A.Fake <IProject>(); A.CallTo(() => fake.Name).Returns(this._name); IProjectConfiguration fakeConfiguration = A.Fake <IProjectConfiguration>(); A.CallTo(() => fakeConfiguration.PrimaryOutput).Returns(this._primaryOutput); IVCppCompilerOptions fakeCompilerOptions = A.Fake <IVCppCompilerOptions>(); A.CallTo(() => fakeCompilerOptions.PreprocessorDefinitions).Returns(this._definitions); A.CallTo(() => fakeConfiguration.CppCompilerOptions).Returns(fakeCompilerOptions); A.CallTo(() => fake.ActiveConfiguration).Returns(fakeConfiguration); A.CallTo(() => fake.SourceFiles).Returns(this._sourcesFullFilePath); IVSDebugConfiguration fakeVSConfiguration = A.Fake <IVSDebugConfiguration>(); A.CallTo(() => fakeVSConfiguration.WorkingDirectory).Returns(this._workingDirectory); A.CallTo(() => fakeVSConfiguration.Environment).Returns(this._environment); A.CallTo(() => fakeConfiguration.VSDebugConfiguration).Returns(fakeVSConfiguration); return(fake); }
/// <summary> /// Commits any pending changes and builds a fake IProject instance. /// </summary> /// <returns>A fake IProject instance consisting of the previously registered output, definitions and sources</returns> public IProject Build() { IProject fake = A.Fake <IProject>(); A.CallTo(() => fake.Name).Returns(this._name); IProjectConfiguration fakeConfiguration = A.Fake <IProjectConfiguration>(); A.CallTo(() => fakeConfiguration.PrimaryOutput).Returns(this._primaryOutput); A.CallTo(() => fake.ActiveConfiguration).Returns(fakeConfiguration); IVSDebugConfiguration fakeVSConfiguration = A.Fake <IVSDebugConfiguration>(); A.CallTo(() => fakeVSConfiguration.WorkingDirectory).Returns(this._workingDirectory); A.CallTo(() => fakeVSConfiguration.Environment).Returns(this._environment); A.CallTo(() => fakeConfiguration.VSDebugConfiguration).Returns(fakeVSConfiguration); return(fake); }