Пример #1
0
            public void Should_Omit_Platform_Property_In_Process_Arguments_If_It_Is_Null()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                // When
                fixture.Run();

                // Then
                fixture.AssertReceivedArguments("/m /v:normal /target:Build \"/Working/src/Solution.sln\"");
            }
Пример #2
0
            public void Should_Use_Correct_Default_Target_In_Process_Arguments()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                // When
                fixture.Run();

                // Then
                fixture.AssertReceivedArguments(
                    "/m /v:normal /target:Build \"/Working/src/Solution.sln\"");
            }
Пример #3
0
            public void Should_Append_Platform_As_Property_To_Process_Arguments(PlatformTarget?platform, string argumentsString)
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                fixture.Settings.SetPlatformTarget(platform.Value);

                // When
                fixture.Run();

                // Then
                fixture.AssertReceivedArguments(argumentsString);
            }
Пример #4
0
            public void Should_Use_Correct_Default_Target_In_Process_Arguments()
            {
                // Given
                var fixture = new MSBuildRunnerFixture();
                var runner  = fixture.CreateRunner();

                // When
                runner.Run(new MSBuildSettings("./src/Solution.sln"));

                // Then
                fixture.ProcessRunner.Received(1).Start(Arg.Is <ProcessStartInfo>(
                                                            p => p.Arguments == "/m /target:Build \"src/Solution.sln\""));
            }
Пример #5
0
            public void Should_Throw_If_Process_Has_A_Non_Zero_Exit_Code()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                fixture.Process.GetExitCode().Returns(1);

                // When
                var result = Record.Exception(() => fixture.Run());

                // Then
                Assert.IsCakeException(result, "MSBuild: Process returned an error.");
            }
Пример #6
0
            public void Should_Throw_If_Verbosity_Is_Unknown()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                fixture.Settings.Verbosity = (Verbosity)int.MaxValue;

                // When
                var result = Record.Exception(() => fixture.Run());

                // Then
                Assert.IsCakeException(result, "Encountered unknown MSBuild build log verbosity.");
            }
Пример #7
0
            public void Should_Set_Working_Directory()
            {
                // Given
                var fixture  = new MSBuildRunnerFixture();
                var runner   = fixture.CreateRunner();
                var settings = new MSBuildSettings("./src/Solution.sln");

                // When
                runner.Run(settings);

                // Then
                fixture.ProcessRunner.Received(1).Start(Arg.Is <ProcessStartInfo>(
                                                            p => p.WorkingDirectory == "/Working"));
            }
Пример #8
0
            public void Should_Use_Node_Reuse_If_Specified()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                fixture.Settings.NodeReuse = true;

                // When
                fixture.Run();

                // Then
                fixture.AssertReceivedArguments(
                    "/m /v:normal /nr:true /target:Build \"/Working/src/Solution.sln\"");
            }
Пример #9
0
            public void Should_Use_Specified_Number_Of_Max_Processors()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                fixture.Settings.MaxCpuCount = 4;

                // When
                fixture.Run();

                // Then
                fixture.AssertReceivedArguments(
                    "/m:4 /v:normal /target:Build \"/Working/src/Solution.sln\"");
            }
Пример #10
0
            public void Should_Set_Working_Directory()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                // When
                fixture.Run();

                // Then
                fixture.ProcessRunner.Received(1).Start(
                    Arg.Any <FilePath>(),
                    Arg.Is <ProcessSettings>(p =>
                                             p.WorkingDirectory.FullPath == "/Working"));
            }
Пример #11
0
            public void Should_Append_Correct_Verbosity(Verbosity verbosity, string expected)
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                fixture.Settings.Verbosity = verbosity;

                // When
                fixture.Run();

                // Then
                fixture.AssertReceivedArguments(
                    "/m /v:{0} /target:Build \"/Working/src/Solution.sln\"", expected);
            }
Пример #12
0
            public void Should_Append_Configuration_As_Property_To_Process_Arguments()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                fixture.Settings.SetConfiguration("Release");

                // When
                fixture.Run();

                // Then
                fixture.AssertReceivedArguments(
                    "/m /v:normal /p:\"Configuration\"=\"Release\" /target:Build \"/Working/src/Solution.sln\"");
            }
Пример #13
0
            public void Should_Use_As_Many_Processors_As_Possible_If_MaxCpuCount_Is_Zero()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                fixture.Settings.MaxCpuCount = 0;

                // When
                fixture.Run();

                // Then
                fixture.AssertReceivedArguments(
                    "/m /v:normal /target:Build \"/Working/src/Solution.sln\"");
            }
Пример #14
0
            public void Should_Get_Correct_Path_To_MSBuild_Version_35(MSBuildToolVersion version, PlatformTarget target, bool is64BitOperativeSystem, string expected)
            {
                // Given
                var fixture = new MSBuildRunnerFixture(is64BitOperativeSystem, true);

                fixture.Settings.ToolVersion    = version;
                fixture.Settings.PlatformTarget = target;

                // When
                fixture.Run();

                // Then
                fixture.AssertReceivedFilePath(expected);
            }
Пример #15
0
            public void Should_Throw_If_MSBuild_Executable_Did_Not_Exist()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, false);

                fixture.Settings.PlatformTarget = PlatformTarget.x86;
                fixture.Settings.ToolVersion    = MSBuildToolVersion.NET20;

                // When
                var result = Record.Exception(() => fixture.Run());

                // Then
                Assert.IsCakeException(result, "MSBuild: Could not locate executable.");
            }
Пример #16
0
            public void Should_Throw_If_Process_Was_Not_Started()
            {
                // Given
                var fixture = new MSBuildRunnerFixture();

                fixture.ProcessRunner.Start(Arg.Any <ProcessStartInfo>()).Returns((IProcess)null);
                var runner = fixture.CreateRunner();

                // When
                var result = Record.Exception(() => runner.Run(new MSBuildSettings("./src/Solution.sln")));

                // Then
                Assert.IsType <CakeException>(result);
                Assert.Equal("MSBuild: Process was not started.", result.Message);
            }
Пример #17
0
            public void Should_Throw_If_Process_Has_A_Non_Zero_Exit_Code()
            {
                // Given
                var fixture = new MSBuildRunnerFixture();

                fixture.Process.GetExitCode().Returns(1);
                var runner = fixture.CreateRunner();

                // When
                var result = Record.Exception(() => runner.Run(new MSBuildSettings("./src/Solution.sln")));

                // Then
                Assert.IsType <CakeException>(result);
                Assert.Equal("MSBuild: Process returned an error.", result.Message);
            }
Пример #18
0
            public void Should_Append_Property_To_Process_Arguments()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                fixture.Settings.WithProperty("A", "B");
                fixture.Settings.WithProperty("C", "D");

                // When
                fixture.Run();

                // Then
                fixture.AssertReceivedArguments(
                    "/m /v:normal /p:A=B /p:C=D /target:Build \"/Working/src/Solution.sln\"");
            }
Пример #19
0
            public void Should_Append_Property_With_Multiple_Values_To_Process_Arguments()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                fixture.Settings.WithProperty("A", "B", "E");
                fixture.Settings.WithProperty("C", "D");

                // When
                fixture.Run();

                // Then
                fixture.AssertReceivedArguments(
                    "/m /v:normal /p:\"A\"=\"B\" /p:\"A\"=\"E\" /p:\"C\"=\"D\" /target:Build \"/Working/src/Solution.sln\"");
            }
Пример #20
0
            public void Should_Throw_If_Process_Was_Not_Started()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                fixture.ProcessRunner
                .Start(Arg.Any <FilePath>(), Arg.Any <ProcessSettings>())
                .Returns((IProcess)null);

                // When
                var result = Record.Exception(() => fixture.Run());

                // Then
                Assert.IsCakeException(result, "MSBuild: Process was not started.");
            }
Пример #21
0
            public void Should_Append_Targets_To_Process_Arguments()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(false, true);

                fixture.Settings.WithTarget("A");
                fixture.Settings.WithTarget("B");

                // When
                fixture.Run();

                // Then
                fixture.AssertReceivedArguments(
                    "/m /v:normal /target:A;B \"/Working/src/Solution.sln\"");
            }
Пример #22
0
            public void Should_Use_As_Many_Processors_As_Possible_If_MaxCpuCount_Is_Zero()
            {
                // Given
                var fixture = new MSBuildRunnerFixture();
                var runner  = fixture.CreateRunner();

                var settings = new MSBuildSettings("./src/Solution.sln");

                settings.MaxCpuCount = 0;

                // When
                runner.Run(settings);

                // Then
                fixture.ProcessRunner.Received(1).Start(Arg.Is <ProcessStartInfo>(
                                                            p => p.Arguments == "/m /target:Build \"src/Solution.sln\""));
            }
Пример #23
0
            public void Should_Use_Specified_Number_Of_Max_Processors()
            {
                // Given
                var fixture = new MSBuildRunnerFixture();
                var runner  = fixture.CreateRunner();

                var settings = new MSBuildSettings("./src/Solution.sln");

                settings.MaxCpuCount = 4;

                // When
                runner.Run(settings);

                // Then
                fixture.ProcessRunner.Received(1).Start(Arg.Is <ProcessStartInfo>(
                                                            p => p.Arguments == "/m:4 /target:Build \"src/Solution.sln\""));
            }
Пример #24
0
            public void Should_Append_Configuration_As_Property_To_Process_Arguments()
            {
                // Given
                var fixture = new MSBuildRunnerFixture();
                var runner  = fixture.CreateRunner();

                var settings = new MSBuildSettings("./src/Solution.sln");

                settings.SetConfiguration("Release");

                // When
                runner.Run(settings);

                // Then
                fixture.ProcessRunner.Received(1).Start(Arg.Is <ProcessStartInfo>(
                                                            p => p.Arguments == "/m /p:\"Configuration\"=\"Release\" /target:Build \"src/Solution.sln\""));
            }
Пример #25
0
            public void Should_Get_Correct_Path_To_MSBuild_Version_35(MSBuildToolVersion version, PlatformTarget target, bool is64BitOperativeSystem, string expected)
            {
                // Given
                var fixture = new MSBuildRunnerFixture(is64BitOperativeSystem);
                var runner  = fixture.CreateRunner();

                // When
                runner.Run(new MSBuildSettings("./src/Solution.sln")
                {
                    ToolVersion    = version,
                    PlatformTarget = target
                });

                // Then
                fixture.ProcessRunner.Received(1).Start(Arg.Is <ProcessStartInfo>(
                                                            p => p.FileName == expected));
            }
Пример #26
0
            public void Should_Throw_If_MSBuild_Executable_Did_Not_Exist()
            {
                // Given
                var fixture = new MSBuildRunnerFixture(msBuildFileExist: false);
                var runner  = fixture.CreateRunner();

                // When
                var result = Record.Exception(() => runner.Run(
                                                  new MSBuildSettings("./src/Solution.sln")
                {
                    PlatformTarget = PlatformTarget.x86,
                    ToolVersion    = MSBuildToolVersion.NET20
                }));

                // Then
                Assert.IsType <CakeException>(result);
                Assert.Equal("MSBuild: Could not locate executable.", result.Message);
            }
Пример #27
0
            public void Should_Append_Targets_To_Process_Arguments()
            {
                // Given
                var fixture = new MSBuildRunnerFixture();
                var runner  = fixture.CreateRunner();

                var settings = new MSBuildSettings("./src/Solution.sln");

                settings.WithTarget("A");
                settings.WithTarget("B");

                // When
                runner.Run(settings);

                // Then
                fixture.ProcessRunner.Received(1).Start(Arg.Is <ProcessStartInfo>(
                                                            p => p.Arguments == "/m /target:A;B \"src/Solution.sln\""));
            }
Пример #28
0
            public void Should_Append_Property_With_Multiple_Values_To_Process_Arguments()
            {
                // Given
                var fixture = new MSBuildRunnerFixture();
                var runner  = fixture.CreateRunner();

                var settings = new MSBuildSettings("./src/Solution.sln");

                settings.WithProperty("A", new[] { "B", "E" });
                settings.WithProperty("C", "D");

                // When
                runner.Run(settings);

                // Then
                fixture.ProcessRunner.Received(1).Start(Arg.Is <ProcessStartInfo>(
                                                            p => p.Arguments == "/m /p:\"A\"=\"B\" /p:\"A\"=\"E\" /p:\"C\"=\"D\" /target:Build \"src/Solution.sln\""));
            }
Пример #29
0
            public void Should_Return_The_Highest_MSBuild_Version_If_Tool_Version_Is_Set_To_Default()
            {
                // Given
                var existingToolPaths = new DirectoryPath[] {
                    "/Windows/Microsoft.NET/Framework64/v4.0.30319",
                    "/Windows/Microsoft.NET/Framework64/v2.0.50727"
                };

                var fixture = new MSBuildRunnerFixture(existingToolPaths);

                fixture.Settings.PlatformTarget = PlatformTarget.x64;
                fixture.Settings.ToolVersion    = MSBuildToolVersion.Default;

                // When
                fixture.Run();

                // Then
                fixture.AssertReceivedFilePath("/Windows/Microsoft.NET/Framework64/v4.0.30319/MSBuild.exe");
            }