瀏覽代碼

Issue #159 - reproduce issue in tests

Oleg Nenashev 8 年之前
父節點
當前提交
fca428d351
共有 2 個文件被更改,包括 53 次插入4 次删除
  1. 34 2
      src/Test/winswTests/ServiceDescriptorTests.cs
  2. 19 2
      src/Test/winswTests/Util/ConfigXmlBuilder.cs

+ 34 - 2
src/Test/winswTests/ServiceDescriptorTests.cs

@@ -253,12 +253,44 @@ namespace winswTests
         }
 
         [Test]
-        public void VerifyWaitHint()
+        public void VerifyWaitHint_FullXML()
         {
-            var sd = ConfigXmlBuilder.create().WithTag("waithint", "20 min").ToServiceDescriptor(true);
+            var sd = ConfigXmlBuilder.create()
+                .WithTag("waithint", "20 min")
+                .ToServiceDescriptor(true);
             Assert.That(sd.WaitHint, Is.EqualTo(TimeSpan.FromMinutes(20)));
         }
 
+        /// <summary>
+        /// Test for https://github.com/kohsuke/winsw/issues/159
+        /// </summary>
+        [Test]
+        public void VerifyWaitHint_XMLWithoutVersion()
+        {
+            var sd = ConfigXmlBuilder.create(printXMLVersion: false)
+                .WithTag("waithint", "21 min")
+                .ToServiceDescriptor(true);
+            Assert.That(sd.WaitHint, Is.EqualTo(TimeSpan.FromMinutes(21)));
+        }
+
+        [Test]
+        public void VerifyWaitHint_XMLWithoutComment()
+        {
+            var sd = ConfigXmlBuilder.create(xmlComment: null)
+                .WithTag("waithint", "22 min")
+                .ToServiceDescriptor(true);
+            Assert.That(sd.WaitHint, Is.EqualTo(TimeSpan.FromMinutes(22)));
+        }
+        
+        [Test]
+        public void VerifyWaitHint_XMLWithoutVersionAndComment()
+        {
+            var sd = ConfigXmlBuilder.create(xmlComment: null, printXMLVersion: false)
+                .WithTag("waithint", "23 min")
+                .ToServiceDescriptor(true);
+            Assert.That(sd.WaitHint, Is.EqualTo(TimeSpan.FromMinutes(23)));
+        }
+
         [Test]
         public void VerifySleepTime()
         {

+ 19 - 2
src/Test/winswTests/Util/ConfigXmlBuilder.cs

@@ -14,28 +14,45 @@ namespace winswTests.Util
         public string Id { get; set; }
         public string Description { get; set; }
         public string Executable { get; set; }
+        public bool PrintXMLVersion { get; set; }
+        public string XMLComment  { get; set; }
 
         private List<String> configEntries;
 
+        // TODO: Switch to the initializer?
         private ConfigXmlBuilder()
         {
             configEntries = new List<string>();
         }
 
         public static ConfigXmlBuilder create(string id = null, string name = null, 
-            string description = null, string executable = null)
+            string description = null, string executable = null, bool printXMLVersion = true, 
+            string xmlComment =  "")
         {
             var config = new ConfigXmlBuilder();
             config.Id = id ?? "myapp";
             config.Name = name ?? "MyApp Service";
             config.Description = description ?? "MyApp Service (powered by WinSW)";
-            config.Executable = executable ?? "%BASE%\\myExecutable.exe";  
+            config.Executable = executable ?? "%BASE%\\myExecutable.exe";
+            config.PrintXMLVersion = printXMLVersion;
+            config.XMLComment = (xmlComment != null && xmlComment.Length == 0) 
+                ? "Just a sample configuration file generated by the test suite" 
+                : xmlComment;
             return config;
         }
 
         public string ToXMLString(bool dumpConfig = false)
         {
             StringBuilder str = new StringBuilder();
+            if (PrintXMLVersion)
+            {
+                // TODO: The encoding is generally wrong
+                str.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
+            }
+            if (XMLComment != null)
+            {
+                str.AppendFormat("<!--{0}-->\n", XMLComment);
+            }
             str.Append("<service>\n");
             str.AppendFormat("  <id>{0}</id>\n", Id);
             str.AppendFormat("  <name>{0}</name>\n", Name);