From 7ca65cf26a4fe0e5e18757bb604190325106d02a Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Sat, 1 Oct 2011 16:00:48 +0100 Subject: [PATCH] Add trailing slash to AddInPath property returned by StringParser when expanding T4 directives. --- .../Src/TextTemplatingDirectoryVariable.cs | 10 ++++++++ .../Test/Src/TextTemplatingVariablesTests.cs | 24 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingDirectoryVariable.cs b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingDirectoryVariable.cs index ac3428f495..130cd2a8d8 100644 --- a/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingDirectoryVariable.cs +++ b/src/AddIns/Misc/TextTemplating/Project/Src/TextTemplatingDirectoryVariable.cs @@ -9,10 +9,20 @@ namespace ICSharpCode.TextTemplating public static class TextTemplatingDirectoryVariable { public static bool IsDirectoryVariable(string name) + { + return EndsWithDir(name) || IsAddInPath(name); + } + + static bool EndsWithDir(string name) { return name.EndsWith("Dir", StringComparison.OrdinalIgnoreCase); } + static bool IsAddInPath(string name) + { + return name.StartsWith("addinpath:", StringComparison.OrdinalIgnoreCase); + } + public static string AppendTrailingSlashIfMissing(string variableValue) { if (!String.IsNullOrEmpty(variableValue)) { diff --git a/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingVariablesTests.cs b/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingVariablesTests.cs index 4449014999..dc22537f4d 100644 --- a/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingVariablesTests.cs +++ b/src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingVariablesTests.cs @@ -237,5 +237,29 @@ namespace TextTemplating.Tests string expectedResult = @"d:\projects\MyProject\bin\Debug\Test.dll"; Assert.AreEqual(expectedResult, result); } + + [Test] + public void ExpandVariables_AddInPathHasNoTrailingSlash_AddInPathPropertyIsExpandedWithTrailingSlash() + { + CreateTextTemplatingVariables(); + AddProperty("addinpath:ICSharpCode.MyAddIn", @"d:\SD\AddIns\MyAddIn"); + + string result = variables.ExpandVariables(@"$(addinpath:ICSharpCode.MyAddIn)MyAddIn.dll"); + + string expectedResult = @"d:\SD\AddIns\MyAddIn\MyAddIn.dll"; + Assert.AreEqual(expectedResult, result); + } + + [Test] + public void ExpandVariables_AddInPathInUpperCaseWithoutTrailingSlash_AddInPathPropertyIsExpandedWithTrailingSlash() + { + CreateTextTemplatingVariables(); + AddProperty("ADDINPATH:ICSharpCode.MyAddIn", @"d:\SD\AddIns\MyAddIn"); + + string result = variables.ExpandVariables(@"$(ADDINPATH:ICSharpCode.MyAddIn)MyAddIn.dll"); + + string expectedResult = @"d:\SD\AddIns\MyAddIn\MyAddIn.dll"; + Assert.AreEqual(expectedResult, result); + } } }