From fca428d35141e1a34df7d6ce3aace3075bb66594 Mon Sep 17 00:00:00 2001 From: Oleg Nenashev Date: Thu, 29 Dec 2016 10:49:42 +0100 Subject: [PATCH] Issue #159 - reproduce issue in tests --- src/Test/winswTests/ServiceDescriptorTests.cs | 36 +++++++++++++++++-- src/Test/winswTests/Util/ConfigXmlBuilder.cs | 21 +++++++++-- 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/src/Test/winswTests/ServiceDescriptorTests.cs b/src/Test/winswTests/ServiceDescriptorTests.cs index 33662ba..eb81238 100644 --- a/src/Test/winswTests/ServiceDescriptorTests.cs +++ b/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))); } + /// + /// Test for https://github.com/kohsuke/winsw/issues/159 + /// + [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() { diff --git a/src/Test/winswTests/Util/ConfigXmlBuilder.cs b/src/Test/winswTests/Util/ConfigXmlBuilder.cs index 486e0cf..15c3818 100644 --- a/src/Test/winswTests/Util/ConfigXmlBuilder.cs +++ b/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 configEntries; + // TODO: Switch to the initializer? private ConfigXmlBuilder() { configEntries = new List(); } 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("\n"); + } + if (XMLComment != null) + { + str.AppendFormat("\n", XMLComment); + } str.Append("\n"); str.AppendFormat(" {0}\n", Id); str.AppendFormat(" {0}\n", Name);