X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FMicrosoft.Build.Tasks%2FTest%2FMicrosoft.Build.Tasks%2FAssignTargetPathTest.cs;h=6524e0b1f2ebe77eb550b4d0e59931777c23fa6e;hb=198e553ae49884e54a7180405a344942a37bc28e;hp=6cac0b6c5a89c434e8e9623adb8fc0096e8e9d66;hpb=4e5e61cf501ef587ec36aaf80d04d734ca0efaca;p=mono.git diff --git a/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/AssignTargetPathTest.cs b/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/AssignTargetPathTest.cs index 6cac0b6c5a8..6524e0b1f2e 100755 --- a/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/AssignTargetPathTest.cs +++ b/mcs/class/Microsoft.Build.Tasks/Test/Microsoft.Build.Tasks/AssignTargetPathTest.cs @@ -64,7 +64,7 @@ namespace MonoTests.Microsoft.Build.Tasks { if (OS == OsType.Unix) { CheckTargetPath( - new string[] { "/a/b/./abc.cs", "/a/c/def.cs", "xyz.cs", "/different/xyz/foo.cs", "rel/bar.resx"}, + new string[] { "/a/b/./abc.cs", "/a/c/def.cs", "a/xyz.cs", "/different/xyz/foo.cs", "rel/bar.resx"}, new string[] { "b/abc.cs", "c/def.cs", "xyz.cs", "foo.cs", "bar.resx" }, "/a/./", "A"); } else if (OS == OsType.Windows) { @@ -78,32 +78,87 @@ namespace MonoTests.Microsoft.Build.Tasks [Test] public void TestExecute2() { + string root = Path.GetPathRoot (Environment.CurrentDirectory); + string cur_dir_minus_root = Environment.CurrentDirectory.Substring (root.Length); + if (OS == OsType.Unix) { CheckTargetPath( new string[] { "//a/b/abc.cs", "k/../k/def.cs", "/xyz.cs", "/different/xyz/foo.cs"}, - new string[] { "a/b/abc.cs", "def.cs", "xyz.cs", "different/xyz/foo.cs"}, + new string[] { "a/b/abc.cs", Path.Combine (cur_dir_minus_root, "k/def.cs"), "xyz.cs", "different/xyz/foo.cs"}, "/", "A"); } else if (OS == OsType.Windows) { CheckTargetPath( - new string[] { @"C:\\a\b\abc.cs", @"k\..\def.cs", @"C:\xyz.cs", @"C:\different\xyz\foo.cs"}, - new string[] { "a\\b\\abc.cs", "def.cs", "xyz.cs", "different\\xyz\\foo.cs"}, - "C:\\", "A"); + new string[] { root + @"a\b\abc.cs", @"k\..\k\def.cs", root + @"xyz.cs", root + @"different\xyz\foo.cs"}, + new string[] { "a\\b\\abc.cs", cur_dir_minus_root + "\\k\\def.cs", "xyz.cs", "different\\xyz\\foo.cs"}, + root, "A"); } } [Test] public void TestExecute3() { + string root = Path.GetPathRoot (Environment.CurrentDirectory); + string cur_dir_minus_root = Environment.CurrentDirectory.Substring (root.Length); + if (OS == OsType.Unix) { CheckTargetPath( new string[] { "xyz.cs", "rel/bar.resx" }, - new string[] { "xyz.cs", "bar.resx" }, + new string[] { Path.Combine (cur_dir_minus_root, "xyz.cs"), + Path.Combine (cur_dir_minus_root, "rel/bar.resx") }, "/", "A"); } else if (OS == OsType.Windows) { CheckTargetPath( new string[] { "xyz.cs", "rel\\bar.resx" }, - new string[] { "xyz.cs", "bar.resx" }, - "C:\\", "A"); + new string[] { Path.Combine (cur_dir_minus_root, "xyz.cs"), + Path.Combine (cur_dir_minus_root, "rel\\bar.resx") }, + root, "A"); + } + } + + [Test] + public void TestLink () + { + string projectText = @" + + + Cxyz.cs + Test\Link\xyz.cs + + + Crel\bar.resx + Test\Link\bar.resx + + + Crel\qwe.txt + ..\Test\Link\qwe.txt + + + + + + + + "; + Engine engine = new Engine(Consts.BinPath); + Project project = engine.CreateNewProject(); + + project.LoadXml(projectText); + + string id = "A"; + Assert.IsTrue(project.Build("1"), id + "1 : Error in building"); + + string [] files = new string [] { "xyz.cs", "rel/bar.resx", "rel/qwe.txt"}; + string [] assignedFiles = new string [] { "Test/Link/xyz.cs", "Test/Link/bar.resx", "../Test/Link/qwe.txt"}; + + BuildItemGroup include = project.GetEvaluatedItemsByName("FooPath"); + Assert.AreEqual(files.Length, include.Count, id + "2"); + + for (int i = 0; i < files.Length; i++) { + Assert.AreEqual (files [i], include [i].FinalItemSpec, id + "3, file #" + i); + Assert.IsTrue (include[i].HasMetadata ("TargetPath"), id + "4, file #" + i + ", TargetPath metadata missing"); + Assert.AreEqual (assignedFiles [i], include[i].GetMetadata("TargetPath"), id + "5, file #" + i); + Assert.IsTrue (include [i].HasMetadata ("Child"), id + "6, file #" + i + ", Child metadata missing"); + Assert.AreEqual ("C" + files [i], include [i].GetMetadata ("Child"), id + "7, file #" + i + ", Child metadata value incorrect"); } } @@ -142,7 +197,6 @@ namespace MonoTests.Microsoft.Build.Tasks - ", rootFolder); return sb.ToString();