Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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));
 }