/// <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);
        }
Beispiel #3
0
        /// <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);
        }