Beispiel #1
0
        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");
        }
Beispiel #2
0
        // 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");
        }
Beispiel #3
0
        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);
        }
Beispiel #5
0
        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");
        }
Beispiel #6
0
        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++;
            }
        }
Beispiel #7
0
        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++;
            }
        }
Beispiel #8
0
        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);
        }
Beispiel #9
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");
            }
        }
Beispiel #10
0
        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.");
            }
        }
Beispiel #11
0
        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");
        }
Beispiel #12
0
        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");
        }
Beispiel #13
0
        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)
 {
 }