Merge pull request #495 from nicolas-raoul/fix-for-issue2907-with-no-formatting-changes
[mono.git] / mcs / class / Microsoft.Build.Tasks / Test / Microsoft.Build.Tasks / CscTest.cs
index a0b211e364e1e733fbb0f0214220de67622f68f2..e72978e064ff9553132be58934d416bfab142f56 100644 (file)
@@ -189,6 +189,18 @@ namespace MonoTests.Microsoft.Build.Tasks {
                        Assert.AreEqual ("/nowarn:A", clbe.ToString (), "A1");
                }
 
+               [Test]
+               public void TestDisabledWarningsComma ()
+               {
+                       CscExtended csc = new CscExtended ();
+                       CommandLineBuilderExtension clbe = new CommandLineBuilderExtension ();
+
+                       csc.DisabledWarnings = "A, B";
+                       csc.ARFC (clbe);
+
+                       Assert.AreEqual ("/nowarn:A;B", clbe.ToString (), "A1");
+               }
+
                [Test]
                public void TestDocumentationFile ()
                {
@@ -244,10 +256,10 @@ namespace MonoTests.Microsoft.Build.Tasks {
                        CscExtended csc = new CscExtended ();
                        CommandLineBuilderExtension clbe = new CommandLineBuilderExtension ();
 
-                       csc.LangVersion = "A";
+                       csc.LangVersion = "A'B";
                        csc.ARFC (clbe);
 
-                       Assert.AreEqual ("/langversion:A", clbe.ToString (), "A1");
+                       Assert.AreEqual ("/langversion:\"A'B\"", clbe.ToString (), "A1");
                }
 
                [Test]
@@ -257,10 +269,10 @@ namespace MonoTests.Microsoft.Build.Tasks {
                        CscExtended csc = new CscExtended ();
                        CommandLineBuilderExtension clbe = new CommandLineBuilderExtension ();
 
-                       csc.ModuleAssemblyName = "A";
+                       csc.ModuleAssemblyName = "A'B";
                        csc.ARFC (clbe);
 
-                       Assert.AreEqual ("/moduleassemblyname:A", clbe.ToString (), "A1");
+                       Assert.AreEqual ("/moduleassemblyname:\"A'B\"", clbe.ToString (), "A1");
                }
 
                [Test]
@@ -307,10 +319,10 @@ namespace MonoTests.Microsoft.Build.Tasks {
                        CscExtended csc = new CscExtended ();
                        CommandLineBuilderExtension clbe = new CommandLineBuilderExtension ();
 
-                       csc.WarningsAsErrors = "A";
+                       csc.WarningsAsErrors = "A'B";
                        csc.ARFC (clbe);
 
-                       Assert.AreEqual ("/warnaserror+:A", clbe.ToString (), "A1");
+                       Assert.AreEqual ("/warnaserror+:\"A'B\"", clbe.ToString (), "A1");
                }
                [Test]
                public void TestWarningNotAsErrors ()
@@ -318,10 +330,10 @@ namespace MonoTests.Microsoft.Build.Tasks {
                        CscExtended csc = new CscExtended ();
                        CommandLineBuilderExtension clbe = new CommandLineBuilderExtension ();
 
-                       csc.WarningsNotAsErrors = "A";
+                       csc.WarningsNotAsErrors = "A'B";
                        csc.ARFC (clbe);
 
-                       Assert.AreEqual ("/warnaserror-:A", clbe.ToString (), "A1");
+                       Assert.AreEqual ("/warnaserror-:\"A'B\"", clbe.ToString (), "A1");
                }
 
        #endregion
@@ -333,14 +345,19 @@ namespace MonoTests.Microsoft.Build.Tasks {
                        CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
                        CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
 
-                       csc.AdditionalLibPaths = new string [2] { "A", "B" };
+                       csc.AdditionalLibPaths = new string [2] { "A'Foo", "B" };
                        csc.ARFC (c1);
                        csc.ACLC (c2);
 
-                       Assert.AreEqual ("/lib:A,B", c1.ToString (), "A1");
+                       Assert.AreEqual ("/lib:\"A'Foo\",B", c1.ToString (), "A1");
                        Assert.AreEqual (String.Empty, c2.ToString (), "A2");
                }
 
+               // Behavior for this intentionally differs from .net .
+               // msbuild doesn't quote the define args, but we do
+               // that to make it easier to copy/paste and execute
+               // compiler command lines, helps in debugging.
+               [Category ("NotDotNet")]
                [Test]
                public void TestDefineConstants ()
                {
@@ -348,11 +365,26 @@ namespace MonoTests.Microsoft.Build.Tasks {
                        CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
                        CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
 
-                       csc.DefineConstants = "A;B";
+                       csc.DefineConstants = "A;B;;CD;;;Foo  Bar";
+                       csc.ARFC (c1);
+                       csc.ACLC (c2);
+
+                       Assert.AreEqual ("/define:\"A;B;CD;Foo;Bar\"", c1.ToString (), "A1");
+                       Assert.AreEqual (String.Empty, c2.ToString (), "A2");
+               }
+
+               [Test]
+               public void TestDefineConstants2 ()
+               {
+                       CscExtended csc = new CscExtended ();
+                       CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
+                       CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
+
+                       csc.DefineConstants = ";;;";
                        csc.ARFC (c1);
                        csc.ACLC (c2);
 
-                       Assert.AreEqual ("/define:A;B", c1.ToString (), "A1");
+                       Assert.AreEqual (String.Empty, c1.ToString (), "A1");
                        Assert.AreEqual (String.Empty, c2.ToString (), "A2");
                }
 
@@ -363,11 +395,11 @@ namespace MonoTests.Microsoft.Build.Tasks {
                        CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
                        CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
 
-                       csc.MainEntryPoint = "A";
+                       csc.MainEntryPoint = "A;B";
                        csc.ARFC (c1);
                        csc.ACLC (c2);
 
-                       Assert.AreEqual ("/main:A", c1.ToString (), "A1");
+                       Assert.AreEqual ("/main:\"A;B\"", c1.ToString (), "A1");
                        Assert.AreEqual (String.Empty, c2.ToString (), "A2");
                }
 
@@ -378,11 +410,11 @@ namespace MonoTests.Microsoft.Build.Tasks {
                        CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
                        CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
 
-                       csc.References = new ITaskItem [2] { new TaskItem ("A"), new TaskItem ("B") };
+                       csc.References = new ITaskItem [2] { new TaskItem ("A;C"), new TaskItem ("B") };
                        csc.ARFC (c1);
                        csc.ACLC (c2);
 
-                       Assert.AreEqual ("/reference:A /reference:B", c1.ToString (), "A1");
+                       Assert.AreEqual ("/reference:\"A;C\" /reference:B", c1.ToString (), "A1");
                        Assert.AreEqual (String.Empty, c2.ToString (), "A2");
                }
 
@@ -393,11 +425,11 @@ namespace MonoTests.Microsoft.Build.Tasks {
                        CommandLineBuilderExtension c1 = new CommandLineBuilderExtension ();
                        CommandLineBuilderExtension c2 = new CommandLineBuilderExtension ();
 
-                       csc.ResponseFiles = new ITaskItem [2] { new TaskItem ("A"), new TaskItem ("B") };
+                       csc.ResponseFiles = new ITaskItem [2] { new TaskItem ("A\'Foo"), new TaskItem ("B") };
                        csc.ARFC (c1);
                        csc.ACLC (c2);
 
-                       Assert.AreEqual ("@A @B", c1.ToString (), "A1");
+                       Assert.AreEqual ("@\"A'Foo\" @B", c1.ToString (), "A1");
                        Assert.AreEqual (String.Empty, c2.ToString (), "A2");
                }