@@ -35,19 +35,6 @@ public void TreatAllWarningsAsErrors()
3535 ObjectModelHelpers . BuildProjectExpectSuccess ( GetTestProject ( treatAllWarningsAsErrors : false ) ) ;
3636 }
3737
38- [ Fact ]
39- public void TreatAllWarningsAsErrorsNoPrefix ( )
40- {
41- MockLogger logger = ObjectModelHelpers . BuildProjectExpectFailure ( GetTestProject ( customProperties : new Dictionary < string , string >
42- {
43- { "TreatWarningsAsErrors" , "true" } ,
44- } ) ) ;
45-
46- VerifyBuildErrorEvent ( logger ) ;
47-
48- ObjectModelHelpers . BuildProjectExpectSuccess ( GetTestProject ( treatAllWarningsAsErrors : false ) ) ;
49- }
50-
5138 /// <summary>
5239 /// https://github.com/dotnet/msbuild/issues/2667
5340 /// </summary>
@@ -104,6 +91,22 @@ public void TreatWarningsAsErrorsWhenSpecifiedIndirectly()
10491 VerifyBuildErrorEvent ( logger ) ;
10592 }
10693
94+ [ Fact ]
95+ public void TreatWarningsAsErrorsWhenSpecifiedThroughAdditiveProperty ( )
96+ {
97+ MockLogger logger = ObjectModelHelpers . BuildProjectExpectFailure (
98+ GetTestProject (
99+ customProperties : new List < KeyValuePair < string , string > >
100+ {
101+ new KeyValuePair < string , string > ( "MSBuildWarningsAsErrors" , "123" ) ,
102+ new KeyValuePair < string , string > ( "MSBuildWarningsAsErrors" , $@ "$(MSBuildWarningsAsErrors);
103+ { ExpectedEventCode . ToLowerInvariant ( ) } " ) ,
104+ new KeyValuePair < string , string > ( "MSBuildWarningsAsErrors" , "$(MSBuildWarningsAsErrors);ABC" )
105+ } ) ) ;
106+
107+ VerifyBuildErrorEvent ( logger ) ;
108+ }
109+
107110 [ Fact ]
108111 public void NotTreatWarningsAsErrorsWhenCodeNotSpecified ( )
109112 {
@@ -174,99 +177,22 @@ public void TreatWarningsAsMessagesWhenSpecifiedIndirectly()
174177 VerifyBuildMessageEvent ( logger ) ;
175178 }
176179
177- [ Theory ]
178- [ InlineData ( true ) ]
179- [ InlineData ( false ) ]
180- public void TreatWarningsAsMessagesWhenSpecifiedThroughAdditiveProperty ( bool usePrefix )
181- {
182- string prefix = usePrefix ? "MSBuild" : "" ;
183- MockLogger logger = ObjectModelHelpers . BuildProjectExpectSuccess (
184- GetTestProject (
185- customProperties : new List < KeyValuePair < string , string > >
186- {
187- new KeyValuePair < string , string > ( $ "{ prefix } WarningsAsMessages", "123" ) ,
188- new KeyValuePair < string , string > ( $ "{ prefix } WarningsAsMessages", $@ "$({ prefix } WarningsAsMessages);
189- { ExpectedEventCode . ToLowerInvariant ( ) } " ) ,
190- new KeyValuePair < string , string > ( $ "{ prefix } WarningsAsMessages", $ "$({ prefix } WarningsAsMessages);ABC")
191- } ) ) ;
192-
193- VerifyBuildMessageEvent ( logger ) ;
194- }
195-
196180 [ Fact ]
197- ///
198- /// This is for chaining the properties together via addition.
199- /// Furthermore it is intended to check if the prefix and no prefix variant interacts properly with each other.
200- ///
201- public void TreatWarningsAsMessagesWhenSpecifiedThroughAdditivePropertyCombination ( )
181+ public void TreatWarningsAsMessagesWhenSpecifiedThroughAdditiveProperty ( )
202182 {
203183 MockLogger logger = ObjectModelHelpers . BuildProjectExpectSuccess (
204184 GetTestProject (
205185 customProperties : new List < KeyValuePair < string , string > >
206186 {
207187 new KeyValuePair < string , string > ( "MSBuildWarningsAsMessages" , "123" ) ,
208- new KeyValuePair < string , string > ( "WarningsAsMessages " , $@ "$(MSBuildWarningsAsMessages);
188+ new KeyValuePair < string , string > ( "MSBuildWarningsAsMessages " , $@ "$(MSBuildWarningsAsMessages);
209189 { ExpectedEventCode . ToLowerInvariant ( ) } " ) ,
210- new KeyValuePair < string , string > ( "MSBuildWarningsAsMessages" , "$(WarningsAsMessages );ABC" )
190+ new KeyValuePair < string , string > ( "MSBuildWarningsAsMessages" , "$(MSBuildWarningsAsMessages );ABC" )
211191 } ) ) ;
212192
213193 VerifyBuildMessageEvent ( logger ) ;
214194 }
215195
216- [ Fact ]
217- public void TreatWarningsNotAsErrorsWhenSpecifiedThroughAdditivePropertyCombination ( )
218- {
219- MockLogger logger = ObjectModelHelpers . BuildProjectExpectSuccess (
220- GetTestProject (
221- customProperties : new List < KeyValuePair < string , string > >
222- {
223- new KeyValuePair < string , string > ( "MSBuildWarningsNotAsErrors" , "123" ) ,
224- new KeyValuePair < string , string > ( "WarningsNotAsErrors" , $@ "$(MSBuildWarningsNotAsErrors);
225- { ExpectedEventCode . ToLowerInvariant ( ) } " ) ,
226- new KeyValuePair < string , string > ( "MSBuildWarningsNotAsErrors" , "$(WarningsNotAsErrors);ABC" )
227- } ) ,
228- _output ) ;
229-
230- VerifyBuildWarningEvent ( logger ) ;
231- }
232-
233- [ Theory ]
234- [ InlineData ( true ) ]
235- [ InlineData ( false ) ]
236- public void TreatWarningsAsErrorsWhenSpecifiedThroughAdditiveProperty ( bool MSBuildPrefix )
237- {
238- string prefix = MSBuildPrefix ? "MSBuild" : "" ;
239- MockLogger logger = ObjectModelHelpers . BuildProjectExpectFailure (
240- GetTestProject (
241- customProperties : new List < KeyValuePair < string , string > >
242- {
243- new KeyValuePair < string , string > ( $@ "{ prefix } WarningsAsErrors", "123" ) ,
244- new KeyValuePair < string , string > ( $@ "{ prefix } WarningsAsErrors", $@ "$({ prefix } WarningsAsErrors);
245- { ExpectedEventCode . ToLowerInvariant ( ) } " ) ,
246- new KeyValuePair < string , string > ( $@ "{ prefix } WarningsAsErrors", $@ "$({ prefix } WarningsAsErrors);ABC")
247- } ) ,
248- _output ) ;
249-
250- VerifyBuildErrorEvent ( logger ) ;
251- }
252-
253- [ Fact ]
254- public void TreatWarningsAsErrorsWhenSpecifiedThroughAdditivePropertyCombination ( )
255- {
256- MockLogger logger = ObjectModelHelpers . BuildProjectExpectFailure (
257- GetTestProject (
258- customProperties : new List < KeyValuePair < string , string > >
259- {
260- new KeyValuePair < string , string > ( "WarningsAsErrors" , "123" ) ,
261- new KeyValuePair < string , string > ( "MSBuildWarningsAsErrors" , $@ "$(WarningsAsErrors);
262- { ExpectedEventCode . ToLowerInvariant ( ) } " ) ,
263- new KeyValuePair < string , string > ( "WarningsAsErrors" , "$(MSBuildWarningsAsErrors);ABC" )
264- } ) ,
265- _output ) ;
266-
267- VerifyBuildErrorEvent ( logger ) ;
268- }
269-
270196 [ Fact ]
271197 public void NotTreatWarningsAsMessagesWhenCodeNotSpecified ( )
272198 {
@@ -276,8 +202,7 @@ public void NotTreatWarningsAsMessagesWhenCodeNotSpecified()
276202 {
277203 new KeyValuePair < string , string > ( "MSBuildWarningsAsMessages" , "123" ) ,
278204 new KeyValuePair < string , string > ( "MSBuildWarningsAsMessages" , "$(MSBuildWarningsAsMessages);ABC" )
279- } ) ,
280- _output ) ;
205+ } ) ) ;
281206
282207 VerifyBuildWarningEvent ( logger ) ;
283208 }
@@ -348,33 +273,27 @@ private string GetTestProject(bool? treatAllWarningsAsErrors = null, string warn
348273 </Project>" ;
349274 }
350275
351-
352276 [ Theory ]
353277
354278 [ InlineData ( "MSB1235" , "MSB1234" , "MSB1234" , "MSB1234" , false ) ] // Log MSB1234, treat as error via MSBuildWarningsAsErrors
355279 [ InlineData ( "MSB1235" , "" , "MSB1234" , "MSB1234" , true ) ] // Log MSB1234, expect MSB1234 as error via MSBuildTreatWarningsAsErrors
356280 [ InlineData ( "MSB1234" , "MSB1234" , "MSB1234" , "MSB4181" , true ) ] // Log MSB1234, MSBuildWarningsAsMessages takes priority
357- [ InlineData ( "MSB1235" , "MSB1234" , "MSB1234" , "MSB1234" , false , false ) ] // Log MSB1234, treat as error via BuildWarningsAsErrors
358- [ InlineData ( "MSB1235" , "" , "MSB1234" , "MSB1234" , true , false ) ] // Log MSB1234, expect MSB1234 as error via BuildTreatWarningsAsErrors
359- [ InlineData ( "MSB1234" , "MSB1234" , "MSB1234" , "MSB4181" , true , false ) ] // Log MSB1234, BuildWarningsAsMessages takes priority
360281 public void WarningsAsErrorsAndMessages_Tests ( string WarningsAsMessages ,
361282 string WarningsAsErrors ,
362283 string WarningToLog ,
363284 string LogShouldContain ,
364- bool allWarningsAreErrors = false ,
365- bool useMSPrefix = true )
285+ bool allWarningsAreErrors = false )
366286 {
367287 using ( TestEnvironment env = TestEnvironment . Create ( _output ) )
368288 {
369- var prefix = useMSPrefix ? "MSBuild" : "" ;
370289 TransientTestProjectWithFiles proj = env . CreateTestProjectWithFiles ( $@ "
371290 <Project>
372291 <UsingTask TaskName = ""ReturnFailureWithoutLoggingErrorTask"" AssemblyName=""Microsoft.Build.Engine.UnitTests""/>
373292 <UsingTask TaskName = ""CustomLogAndReturnTask"" AssemblyName=""Microsoft.Build.Engine.UnitTests""/>
374293 <PropertyGroup>
375- <{ prefix } TreatWarningsAsErrors >{ allWarningsAreErrors } </{ prefix } TreatWarningsAsErrors >
376- <{ prefix } WarningsAsMessages >{ WarningsAsMessages } </{ prefix } WarningsAsMessages >
377- <{ prefix } WarningsAsErrors >{ WarningsAsErrors } </{ prefix } WarningsAsErrors >
294+ <MSBuildTreatWarningsAsErrors >{ allWarningsAreErrors } </MSBuildTreatWarningsAsErrors >
295+ <MSBuildWarningsAsMessages >{ WarningsAsMessages } </MSBuildWarningsAsMessages >
296+ <MSBuildWarningsAsErrors >{ WarningsAsErrors } </MSBuildWarningsAsErrors >
378297 </PropertyGroup>
379298 <Target Name='Build'>
380299 <CustomLogAndReturnTask Return=""true"" ReturnHasLoggedErrors=""true"" WarningCode=""{ WarningToLog } ""/>
@@ -391,83 +310,6 @@ public void WarningsAsErrorsAndMessages_Tests(string WarningsAsMessages,
391310 }
392311 }
393312
394- [ Theory ]
395-
396- [ InlineData ( true ) ] // Log MSB1234, BuildWarningsNotAsErrors takes priority
397- [ InlineData ( false ) ]
398- public void WarningsNotAsErrorsAndMessages_Tests ( bool useMSPrefix )
399- {
400- string Warning = "MSB1235" ;
401- using ( TestEnvironment env = TestEnvironment . Create ( _output ) )
402- {
403- string prefix = useMSPrefix ? "MSBuild" : "" ;
404- TransientTestProjectWithFiles proj = env . CreateTestProjectWithFiles ( $@ "
405- <Project>
406- <PropertyGroup>
407- <{ prefix } TreatWarningsAsErrors>true</{ prefix } TreatWarningsAsErrors>
408- <{ prefix } WarningsNotAsErrors>{ Warning } </{ prefix } WarningsNotAsErrors>
409- </PropertyGroup>
410- <Target Name='Build'>
411- <Warning Text=""some random text"" Code='{ Warning } ' />
412- </Target>
413- </Project>" ) ;
414-
415- MockLogger logger = proj . BuildProjectExpectSuccess ( ) ;
416-
417- logger . WarningCount . ShouldBe ( 1 ) ;
418- logger . ErrorCount . ShouldBe ( 0 ) ;
419-
420- logger . AssertLogContains ( Warning ) ;
421- }
422- }
423-
424-
425-
426- [ Theory ]
427- [ InlineData ( "TreatWarningsAsErrors" , "true" , false ) ] // All warnings are treated as errors
428- [ InlineData ( "WarningsAsErrors" , "MSB1007" , false ) ]
429- [ InlineData ( "WarningsAsMessages" , "MSB1007" , false ) ]
430- [ InlineData ( "WarningsNotAsErrors" , "MSB1007" , true ) ]
431- [ InlineData ( "WarningsNotAsErrors" , "MSB1007" , false ) ]
432- public void WarningsChangeWaveTest ( string property , string propertyData , bool treatWarningsAsErrors )
433- {
434- using ( TestEnvironment env = TestEnvironment . Create ( _output ) )
435- {
436- string warningCode = "MSB1007" ;
437- string treatWarningsAsErrorsCodeProperty = treatWarningsAsErrors ? "<MSBuildTreatWarningsAsErrors>true</MSBuildTreatWarningsAsErrors>" : "" ;
438- env . SetEnvironmentVariable ( "MSBUILDDISABLEFEATURESFROMVERSION" , ChangeWaves . Wave17_14 . ToString ( ) ) ;
439- TransientTestProjectWithFiles proj = env . CreateTestProjectWithFiles ( $@ "
440- <Project>
441- <PropertyGroup>
442- { treatWarningsAsErrorsCodeProperty }
443- <{ property } >{ propertyData } </{ property } >
444- </PropertyGroup>
445- <Target Name='Build'>
446- <Warning Text=""some random text"" Code='{ warningCode } ' />
447- </Target>
448- </Project>" ) ;
449- if ( treatWarningsAsErrors )
450- {
451- // Since the "no prefix" variations can't do anything with the change wave disabled, this should always fail.
452- MockLogger logger = proj . BuildProjectExpectFailure ( ) ;
453- logger . ErrorCount . ShouldBe ( 1 ) ;
454- logger . AssertLogContains ( $ "error { warningCode } ") ;
455-
456- logger . AssertLogContains ( warningCode ) ;
457- }
458- else
459- {
460- MockLogger logger = proj . BuildProjectExpectSuccess ( ) ;
461-
462- logger . WarningCount . ShouldBe ( 1 ) ;
463- logger . AssertLogContains ( $ "warning { warningCode } ") ;
464- logger . ErrorCount . ShouldBe ( 0 ) ;
465-
466- logger . AssertLogContains ( warningCode ) ;
467- }
468- }
469- }
470-
471313 /// <summary>
472314 /// Item1 and Item2 log warnings and continue, item 3 logs a warn-> error and prevents item 4 from running in the batched build.
473315 /// </summary>
@@ -529,20 +371,17 @@ public void TaskLogsWarningAsError_BatchedBuild()
529371 [ Theory ]
530372 [ InlineData ( "MSB1234" , false , 1 , 1 ) ]
531373 [ InlineData ( "MSB0000" , true , 0 , 2 ) ]
532- [ InlineData ( "MSB1234" , false , 1 , 1 , false ) ]
533- [ InlineData ( "MSB0000" , true , 0 , 2 , false ) ]
534- public void TaskReturnsTrue_Tests ( string warningsAsErrors , bool treatAllWarningsAsErrors , int warningCountShouldBe , int errorCountShouldBe , bool useMSPrefix = true )
374+ public void TaskReturnsTrue_Tests ( string warningsAsErrors , bool treatAllWarningsAsErrors , int warningCountShouldBe , int errorCountShouldBe )
535375 {
536- string prefix = useMSPrefix ? "MSBuild" : "" ;
537376 using ( TestEnvironment env = TestEnvironment . Create ( _output ) )
538377 {
539378 TransientTestProjectWithFiles proj = env . CreateTestProjectWithFiles ( $@ "
540379 <Project>
541380 <UsingTask TaskName = ""ReturnFailureWithoutLoggingErrorTask"" AssemblyName=""Microsoft.Build.Engine.UnitTests""/>
542381 <UsingTask TaskName = ""CustomLogAndReturnTask"" AssemblyName=""Microsoft.Build.Engine.UnitTests""/>
543382 <PropertyGroup>
544- <{ prefix } TreatWarningsAsErrors >{ treatAllWarningsAsErrors } </{ prefix } TreatWarningsAsErrors >
545- <{ prefix } WarningsAsErrors >{ warningsAsErrors } </{ prefix } WarningsAsErrors >
383+ <MSBuildTreatWarningsAsErrors >{ treatAllWarningsAsErrors } </MSBuildTreatWarningsAsErrors >
384+ <MSBuildWarningsAsErrors >{ warningsAsErrors } </MSBuildWarningsAsErrors >
546385 </PropertyGroup>
547386 <Target Name='Build'>
548387 <CustomLogAndReturnTask Return=""true"" WarningCode=""MSB1234""/>
0 commit comments