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);