public void VerifyInvalidSchemaItself1 ( ) { string invalidSchemaFile = null; try { // Create schema files in the temp folder invalidSchemaFile = Path.GetTempFileName(); File.WriteAllText(invalidSchemaFile, "<this_is_invalid_schema_content/>"); string projectContents = @" <Project xmlns=`msbuildnamespace`> <Target Name=`Build` /> </Project> "; Engine buildEngine = new Engine(@"c:\"); ProjectSchemaValidationHandler validator = new ProjectSchemaValidationHandler(null, buildEngine.LoggingServices, @"c:\"); try { validator.VerifyProjectSchema(ObjectModelHelpers.CleanupFileContents(projectContents), invalidSchemaFile); } catch (InvalidProjectFileException e) { Console.WriteLine(e.Message); Assertion.Assert(e.ErrorCode.Contains("MSB4070") || e.BaseMessage.Contains("MSB4070")); throw; } } finally { if (invalidSchemaFile != null) { File.Delete(invalidSchemaFile); } } }
public void CommentsInPreprocessing() { Microsoft.Build.Construction.XmlDocumentWithLocation.ClearReadOnlyFlags_UnitTestsOnly(); string input = FileUtilities.GetTemporaryFile(); string output = FileUtilities.GetTemporaryFile(); try { string content = ObjectModelHelpers.CleanupFileContents(@" <Project DefaultTargets='Build' ToolsVersion='msbuilddefaulttoolsversion' xmlns='msbuildnamespace'> <Import Project='$(MSBuildToolsPath)\microsoft.csharp.targets'/> </Project>"); File.WriteAllText(input, content); Assert.Equal(MSBuildApp.ExitType.Success, MSBuildApp.Execute(@"c:\bin\msbuild.exe """ + input + @""" /pp:""" + output + @"""")); bool foundDoNotModify = false; foreach (string line in File.ReadLines(output)) { if (line.Contains("<!---->")) // This is what it will look like if we're loading read/only { Assert.True(false); } if (line.Contains("DO NOT MODIFY")) // this is in a comment in our targets { foundDoNotModify = true; } } Assert.Equal(true, foundDoNotModify); } finally { File.Delete(input); File.Delete(output); } }
public void VerifyInvalidProjectSchema ( ) { string[] msbuildTempXsdFilenames = new string[] {}; try { // Create schema files in the temp folder msbuildTempXsdFilenames = PrepareSchemaFiles(); string projectContents = @" <Project xmlns=`msbuildnamespace`> <MyInvalidTag/> <Target Name=`Build` /> </Project> "; Engine buildEngine = new Engine(@"c:\"); ProjectSchemaValidationHandler validator = new ProjectSchemaValidationHandler(null, buildEngine.LoggingServices, @"c:\"); try { validator.VerifyProjectSchema(ObjectModelHelpers.CleanupFileContents(projectContents), msbuildTempXsdFilenames[0]); } catch (InvalidProjectFileException e) { Assertion.AssertEquals(e.BaseMessage, ResourceUtilities.FormatResourceString("ProjectSchemaErrorHalt")); throw; } } finally { CleanupSchemaFiles(msbuildTempXsdFilenames); } }
/// <summary> /// Fixes up the contents passed to it and writes the updated string to disk /// </summary> private static void CleanupAndWrite(string path, string content) { File.WriteAllText(path, ObjectModelHelpers.CleanupFileContents(content)); }
internal static string WriteConfigFile(string content) { return(WriteConfigFile(ObjectModelHelpers.CleanupFileContents(content), null)); }