public void TestAssemblyFile2() { string documentString = @" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <UsingTask AssemblyFile='Test/resources/TestTasks.dll' TaskName='SimpleTask' /> </Project> " ; engine = new Engine(Consts.BinPath); project = engine.CreateNewProject(); project.LoadXml(documentString); IEnumerator en = project.UsingTasks.GetEnumerator(); en.MoveNext(); UsingTask ut = (UsingTask)en.Current; Assert.AreEqual("Test/resources/TestTasks.dll", ut.AssemblyFile, "A1"); Assert.IsNull(ut.AssemblyName, "A2"); Assert.AreEqual(null, ut.Condition, "A3"); Assert.AreEqual(false, ut.IsImported, "A4"); Assert.AreEqual("SimpleTask", ut.TaskName, "A5"); }
// NOTE: quite hacky test, it works because MSBuild doesn't check type of task at loading public void TestAssemblyName() { string documentString = @" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <UsingTask AssemblyName='System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' TaskName='System.Uri' Condition='true' /> </Project> " ; engine = new Engine(Consts.BinPath); project = engine.CreateNewProject(); project.LoadXml(documentString); IEnumerator en = project.UsingTasks.GetEnumerator(); en.MoveNext(); UsingTask ut = (UsingTask)en.Current; Assert.AreEqual("System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", ut.AssemblyName, "A1"); Assert.IsNull(ut.AssemblyFile, "A2"); Assert.AreEqual("true", ut.Condition, "A3"); Assert.AreEqual(false, ut.IsImported, "A4"); Assert.AreEqual("System.Uri", ut.TaskName, "A5"); }
public void CopyTo_OffsetIndexArrayTooSmall() { int offSet = 3; Project p = new Project(new Engine()); p.AddNewUsingTaskFromAssemblyFile("TaskName1", "AssemblyFile1.dll"); p.AddNewUsingTaskFromAssemblyFile("TaskName2", "AssemblyFile2.dll"); UsingTask[] usingTasks = new UsingTask[p.UsingTasks.Count]; p.UsingTasks.CopyTo(usingTasks, offSet); }
/// <summary> /// Set an assembly file name, then retrieve it. /// </summary> private string SetandGetAssemblyFileName(string assemblyFileName) { Project p = new Project(); p.AddNewUsingTaskFromAssemblyFile("TaskName", assemblyFileName); object o = p.EvaluatedItems; UsingTask usingTask = CompatibilityTestHelpers.FindUsingTaskByName("TaskName", p.UsingTasks); return(usingTask.AssemblyFile); }
public void TestLazyLoad1() { string documentString = @" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <UsingTask AssemblyFile='NonExistantAssembly.dll' TaskName='SimpleTask' /> <Target Name='1'> <Message Text='hello'/> </Target> <Target Name='2'> <SimpleTask Foo='bar'/> </Target> </Project> " ; engine = new Engine(Consts.BinPath); project = engine.CreateNewProject(); MonoTests.Microsoft.Build.Tasks.TestMessageLogger logger = new MonoTests.Microsoft.Build.Tasks.TestMessageLogger(); engine.RegisterLogger(logger); project.LoadXml(documentString); if (!project.Build("1")) { logger.DumpMessages(); Assert.Fail("Build failed"); } if (project.Build("2")) { Assert.Fail("Build should've failed, as a task from a nonexistant assembly is referenced"); } IEnumerator en = project.UsingTasks.GetEnumerator(); en.MoveNext(); UsingTask ut = (UsingTask)en.Current; Assert.AreEqual("NonExistantAssembly.dll", ut.AssemblyFile, "A1"); Assert.IsNull(ut.AssemblyName, "A2"); Assert.AreEqual(null, ut.Condition, "A3"); Assert.AreEqual(false, ut.IsImported, "A4"); Assert.AreEqual("SimpleTask", ut.TaskName, "A5"); }
public void CopyTo_ZeroIndex() { Project p = new Project(new Engine()); p.AddNewUsingTaskFromAssemblyFile("TaskName1", "AssemblyFile1.dll"); p.AddNewUsingTaskFromAssemblyFile("TaskName2", "AssemblyFile2.dll"); UsingTask[] usingTasks = new UsingTask[p.UsingTasks.Count]; p.UsingTasks.CopyTo(usingTasks, 0); int i = 0; foreach (UsingTask usingTask in p.UsingTasks) { Assertion.AssertEquals(usingTasks[i].AssemblyFile, usingTask.AssemblyFile); i++; } }
public void CopyTo_OffsetIndex() { int offSet = 3; Project p = new Project(new Engine()); p.AddNewUsingTaskFromAssemblyFile("TaskName1", "AssemblyFile1.dll"); p.AddNewUsingTaskFromAssemblyFile("TaskName2", "AssemblyFile2.dll"); UsingTask[] taskArray = new UsingTask[p.UsingTasks.Count + offSet]; p.UsingTasks.CopyTo(taskArray, offSet); int i = offSet - 1; Assertion.AssertNull(taskArray[offSet - 1]); foreach (UsingTask usingTask in p.UsingTasks) { Assertion.AssertEquals(taskArray[i].AssemblyFile, usingTask.AssemblyFile); i++; } }
public void TestCopyTo7() { string documentString = @" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <UsingTask AssemblyFile='Test/resources/TestTasks.dll' TaskName='TrueTestTask' /> </Project> " ; engine = new Engine(Consts.BinPath); project = engine.CreateNewProject(); project.LoadXml(documentString); UsingTask [] array = new UsingTask [1]; project.UsingTasks.CopyTo((Array)array, 0); }
public void TestLazyLoad3() { string documentString = @" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <UsingTask AssemblyFile='Test/resources/TestTasks.dll' TaskName='Another.SameTask' Condition='false' /> <Target Name='1'> <Another.SameTask /> </Target> </Project> " ; engine = new Engine(Consts.BinPath); project = engine.CreateNewProject(); MonoTests.Microsoft.Build.Tasks.TestMessageLogger logger = new MonoTests.Microsoft.Build.Tasks.TestMessageLogger(); engine.RegisterLogger(logger); project.LoadXml(documentString); IEnumerator en = project.UsingTasks.GetEnumerator(); en.MoveNext(); UsingTask ut = (UsingTask)en.Current; Assert.AreEqual("Test/resources/TestTasks.dll", ut.AssemblyFile, "A1"); Assert.IsNull(ut.AssemblyName, "A2"); Assert.AreEqual("false", ut.Condition, "A3"); Assert.AreEqual(false, ut.IsImported, "A4"); Assert.AreEqual("Another.SameTask", ut.TaskName, "A5"); if (project.Build("1")) { logger.DumpMessages(); Assert.Fail("Build should've failed"); } }
public void FailsWithOnlyTargetErrors() { using (TestEnvironment testenv = TestEnvironment.Create()) { TransientTestFile otherproj = testenv.CreateFile("otherproj.csproj", @" <Project> <Target Name=""ErrorTask""> <Error Text=""Task successfully failed."" /> </Target> </Project>"); MockLogger logger = ObjectModelHelpers.BuildProjectExpectFailure(@$ " <Project> <UsingTask TaskName=" "FailingBuilderTask" " AssemblyFile=" "{Assembly.GetExecutingAssembly().Location}" " /> <Target Name=" "MyTarget" "> <FailingBuilderTask CurrentProject=" "{otherproj.Path}" " /> </Target> </Project>"); logger.ErrorCount.ShouldBe(1); logger.Errors.First().Message.ShouldBe("Task successfully failed."); } }
public void TestCopyTo6() { string documentString = @" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <UsingTask AssemblyFile='" + TestResourceHelper.GetFullPathOfResource("Test/resources/TestTasks.dll") + @"' TaskName='TrueTestTask' /> </Project> " ; engine = new Engine(Consts.BinPath); project = engine.CreateNewProject(); project.LoadXml(documentString); UsingTask[] array = new UsingTask [1]; project.UsingTasks.CopyTo(array, 0); Assert.AreEqual("TrueTestTask", array [0].TaskName, "A1"); }
public void TestICollectionMethods() { Project project = ObjectModelHelpers.CreateInMemoryProject(string.Format(@" <Project xmlns=`msbuildnamespace`> <UsingTask TaskName=`net.r_eg.IeXod.UnitTests.Project_Tests.WashCar` AssemblyFile=`{0}` Condition=` true == true `/> <UsingTask TaskName=`net.r_eg.IeXod.UnitTests.Project_Tests.Message` AssemblyName=`{1}` Condition=` false == true `/> <Target Name=`Build`> <WashCar/> </Target> </Project> ", new Uri(Assembly.GetExecutingAssembly().EscapedCodeBase).LocalPath, Assembly.GetExecutingAssembly().FullName)); UsingTaskCollection usingTasks = project.UsingTasks; Assertion.AssertEquals(2, usingTasks.Count); UsingTask[] array = new UsingTask[2]; usingTasks.CopyTo(array, 0); Assertion.AssertEquals(usingTasks[0], array[0]); Assertion.AssertEquals(usingTasks[1], array[1]); object[] arrayObjects = new object[2]; usingTasks.CopyTo(arrayObjects, 0); Assertion.AssertEquals(usingTasks[0], arrayObjects[0]); Assertion.AssertEquals(usingTasks[1], arrayObjects[1]); Assertion.AssertEquals("net.r_eg.IeXod.UnitTests.Project_Tests.WashCar", usingTasks[0].TaskName); Assertion.AssertEquals("net.r_eg.IeXod.UnitTests.Project_Tests.Message", usingTasks[1].TaskName); Assert.IsFalse(usingTasks.IsSynchronized, "Expected IsSynchronized to be false"); Assert.IsNotNull(usingTasks.SyncRoot, "Expected SynchRoot to not be null"); }
public void TestUsingTaskOrder1() { Engine engine = new Engine(Consts.BinPath); Project proj = engine.CreateNewProject(); string documentString = @" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <PropertyGroup> <Property>" + TestResourceHelper.GetFullPathOfResource("Test/resources/TestTasks.dll") + @"</Property> </PropertyGroup> <UsingTask AssemblyFile='$(Property)' TaskName='TrueTestTask' /> </Project> " ; proj.LoadXml(documentString); UsingTask [] ut = new UsingTask [1]; proj.UsingTasks.CopyTo(ut, 0); Assert.AreEqual("$(Property)", ut [0].AssemblyFile, "A1"); }
public void InlineTaskWithAssemblyPlatformAgnostic() { using (TestEnvironment env = TestEnvironment.Create()) { TransientTestFolder folder = env.CreateFolder(createFolder: true); string location = Assembly.GetExecutingAssembly().Location; TransientTestFile inlineTask = env.CreateFile(folder, "5106.proj", @$ " <Project> <UsingTask TaskName=" "MyInlineTask" " TaskFactory=" "RoslynCodeTaskFactory" " AssemblyFile=" "$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll" "> <Task> <Reference Include=" "" + Path.Combine(Path.GetDirectoryName(location), "..", "..", "..", "Samples", "Dependency", #if DEBUG "Debug" #else "Release" #endif , "net472", "Dependency.dll") + @""" /> <Using Namespace=""Dependency"" /> <Code Type=""Fragment"" Language=""cs"" > <![CDATA[ Log.LogError(Alpha.GetString()); ]]> </Code> </Task> </UsingTask> <Target Name=""ToRun""> <MyInlineTask/> </Target> </Project> "); string output = RunnerUtilities.ExecMSBuild(inlineTask.Path, out bool success); success.ShouldBeTrue(output); output.ShouldContain("Alpha.GetString"); } }
public void CopyTo(UsingTask[] array, int index) { }