public void LogErrorShouldHavePathAndLocation() { string file = Path.GetTempPath() + Guid.NewGuid().ToString("N"); try { File.WriteAllText(file, ObjectModelHelpers.CleanupFileContents(@" <Project ToolsVersion='msbuilddefaulttoolsversion' xmlns='msbuildnamespace'> <Target Name=[invalid] /> </Project>")); MockLogger logger = new MockLogger(_testOutput); ObjectModelHelpers.BuildTempProjectFileExpectFailure(file, logger); Assert.True(false, "Loading an invalid project should have thrown an InvalidProjectFileException."); } catch (InvalidProjectFileException e) { Assert.Equal(3, e.LineNumber); Assert.Equal(38, e.ColumnNumber); Assert.Equal(file, e.ProjectFile); // https://github.com/dotnet/msbuild/issues/1286 } finally { File.Delete(file); } }
public void ErrorCodeShouldAppearForCircularDependency() { string file = Path.GetTempPath() + Guid.NewGuid().ToString("N"); try { File.WriteAllText(file, ObjectModelHelpers.CleanupFileContents(@" <Project ToolsVersion='msbuilddefaulttoolsversion' xmlns='msbuildnamespace'> <Target Name='Build'> <CallTarget Targets='Build'/> </Target> </Project> ")); MockLogger ml = new MockLogger(_testOutput); ObjectModelHelpers.BuildTempProjectFileExpectFailure(file, ml); // Make sure the log contains the error code and file/line/col for the circular dependency ml.AssertLogContains("MSB4006"); ml.AssertLogContains("(4,29)"); ml.AssertLogContains(file); } finally { File.Delete(file); } }