From a57d7201e74ba53784dffb2e18be2e2646618da3 Mon Sep 17 00:00:00 2001 From: Laimonas Simutis Date: Mon, 29 Dec 2014 20:34:20 -0500 Subject: [PATCH] throw a more informative exception to track down TeamCity test failures --- src/Lucene.Net.TestFramework/Util/Paths.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Lucene.Net.TestFramework/Util/Paths.cs b/src/Lucene.Net.TestFramework/Util/Paths.cs index 108efe1cbb..2685305105 100644 --- a/src/Lucene.Net.TestFramework/Util/Paths.cs +++ b/src/Lucene.Net.TestFramework/Util/Paths.cs @@ -139,10 +139,23 @@ public static string ProjectRootDirectory // where [Section] is either core, demo, or contrib, and [Build] is either Debug or Release. string assemblyLocation = AssemblyDirectory; int index = -1; + + var buildPathPart = Path.DirectorySeparatorChar + "build" + Path.DirectorySeparatorChar; + var binPathPart = Path.DirectorySeparatorChar + "bin" + Path.DirectorySeparatorChar; + if (assemblyLocation.IndexOf("build", StringComparison.InvariantCultureIgnoreCase) > -1) - index = assemblyLocation.IndexOf(Path.DirectorySeparatorChar + "build" + Path.DirectorySeparatorChar, StringComparison.InvariantCultureIgnoreCase); + { + index = assemblyLocation.IndexOf(buildPathPart, StringComparison.InvariantCultureIgnoreCase); + } else - index = assemblyLocation.IndexOf(Path.DirectorySeparatorChar + "bin" + Path.DirectorySeparatorChar, StringComparison.InvariantCultureIgnoreCase); + { + index = assemblyLocation.IndexOf(binPathPart, StringComparison.InvariantCultureIgnoreCase); + } + + if (index < 0) + { + throw new ArgumentOutOfRangeException("Could not locate project root directory in " + assemblyLocation + ", checked " + buildPathPart + " and " + binPathPart); + } int difference = assemblyLocation.Substring(index).Count(o => o == Path.DirectorySeparatorChar);