Esempio n. 1
0
        public void TreatAllWarningsAsErrors()
        {
            MockLogger logger = ObjectModelHelpers.BuildProjectExpectFailure(GetTestProject(treatAllWarningsAsErrors: true));

            VerifyBuildErrorEvent(logger);

            ObjectModelHelpers.BuildProjectExpectSuccess(GetTestProject(treatAllWarningsAsErrors: false));
        }
Esempio n. 2
0
        public void EmptyItemSpecInTargetOutputs()
        {
            MockLogger ml = ObjectModelHelpers.BuildProjectExpectFailure(@"

            <Project ToolsVersion=`3.5` xmlns=`msbuildnamespace`>
                <Target Name=`generatemsbtasks`
		            Inputs=`@(TASKXML)`
		            Outputs=`@(TASKXML->'%(OutputFile)');@(TASKXML->'%(PasFile)');`>
                   <Message Text=`Running Build target` Importance=`High`/>
	        </Target>
	        <ItemGroup>
		       <TASKXML Include=`bcc32task.xml`>
		           <OutputFile>bcc32task.cs</OutputFile>
		           <PasFile>bcc32task.pas</PasFile>
		       </TASKXML>
                   <TASKXML Include=`ccc32task.xml`>
                           <OutputFile>cpp32task.cs</OutputFile>
		       </TASKXML>
	         </ItemGroup>
          </Project>");

            // It should have actually skipped the "Build" target since some output metadata was missing
            ml.AssertLogDoesntContain("Running Build target");
            ml.AssertLogContains("MSB4168");

            // Clear the mock logger object out so it is not reused
            ml = null;

            ml = ObjectModelHelpers.BuildProjectExpectFailure(@"

            <Project ToolsVersion=`3.5` xmlns=`msbuildnamespace`>
                <Target Name=`generatemsbtasks`
		            Inputs=`@(TASKXML)`
		            Outputs=`@(TASKXML->'%(OutputFile)');@(TASKXML->'%(PasFile)');`>
                    <Message Text=`Running Build target` Importance=`High`/>
	            </Target>
	            <ItemGroup>
		           <TASKXML Include=`bcc32task.xml`>
			           <OutputFile>bcc32task.cs</OutputFile>
			           <PasFile>bcc32task.pas</PasFile>
		           </TASKXML>
                  <TASKXML Include=`ccc32task.xml`>
                      <OutputFile>cpp32task.cs</OutputFile>
			          <!-- Note PasFile not defined for this item! -->
			           <PasFile></PasFile>
		          </TASKXML>
	         </ItemGroup>
          </Project>
                ");

            // It should have actually skipped the "Build" target since some output metadata was missing
            ml.AssertLogDoesntContain("Running Build target");
            ml.AssertLogContains("MSB4168");
        }
Esempio n. 3
0
        public void TreatWarningsAsErrorsWhenSpecifiedIndirectly()
        {
            MockLogger logger = ObjectModelHelpers.BuildProjectExpectFailure(
                GetTestProject(
                    customProperties: new Dictionary <string, string>
            {
                { "Foo", "true" },
                { "MSBuildTreatWarningsAsErrors", "$(Foo)" }
            }));

            VerifyBuildErrorEvent(logger);
        }
Esempio n. 4
0
        public void TreatWarningsAsErrorsWhenSpecifiedThroughAdditiveProperty()
        {
            MockLogger logger = ObjectModelHelpers.BuildProjectExpectFailure(
                GetTestProject(
                    customProperties: new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("MSBuildWarningsAsErrors", "123"),
                new KeyValuePair <string, string>("MSBuildWarningsAsErrors", $@"$(MSBuildWarningsAsErrors);
                                                                                       {ExpectedEventCode.ToLowerInvariant()}"),
                new KeyValuePair <string, string>("MSBuildWarningsAsErrors", "$(MSBuildWarningsAsErrors);ABC")
            }));

            VerifyBuildErrorEvent(logger);
        }
Esempio n. 5
0
        public void ErrorWhenTaskFailsWithoutLoggingErrorEscapeHatch(bool emitError)
        {
            MockLogger logger = ObjectModelHelpers.BuildProjectExpectFailure($@"
<Project>
    <UsingTask TaskName=""FailingTask"" AssemblyFile=""{Assembly.GetExecutingAssembly().Location}"" />
    <Target Name=""MyTarget"">
        <FailingTask EnableDefaultFailure=""{emitError}"" />
    </Target>
</Project>");

            if (emitError)
            {
                logger.ErrorCount.ShouldBe(1);
                logger.Errors.First().Code.ShouldBe("MSB4181");
            }
            else
            {
                logger.ErrorCount.ShouldBe(0);
            }
        }
Esempio n. 6
0
        public void ErrorWhenTaskFailsWithoutLoggingErrorEscapeHatch(string failureResponse)
        {
            MockLogger logger = ObjectModelHelpers.BuildProjectExpectFailure($@"
<Project>
    <UsingTask TaskName=""FailingTask"" AssemblyFile=""{Assembly.GetExecutingAssembly().Location}"" />
    <Target Name=""MyTarget"">
        <FailingTask AllowFailureWithoutError=""{failureResponse}"" />
    </Target>
</Project>");

            if (!string.Equals(failureResponse, "True"))
            {
                logger.ErrorCount.ShouldBe(1);
                logger.Errors.First().Code.ShouldBe("MSB4181");
            }
            else
            {
                logger.ErrorCount.ShouldBe(0);
            }
        }
Esempio n. 7
0
        public void TreatWarningsAsErrorsWhenSpecified()
        {
            MockLogger logger = ObjectModelHelpers.BuildProjectExpectFailure(GetTestProject(warningsAsErrors: ExpectedEventCode));

            VerifyBuildErrorEvent(logger);
        }