Repository: incubator-slider Updated Branches: refs/heads/develop e4f5db951 -> 06bea7194
SLIDER-749 jenkins on windows failing: move/rename utility methods Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/06bea719 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/06bea719 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/06bea719 Branch: refs/heads/develop Commit: 06bea719491bb69b0397f015a71d9dc7bfa3d5ed Parents: e4f5db9 Author: Steve Loughran <[email protected]> Authored: Mon Jan 12 19:02:37 2015 +0000 Committer: Steve Loughran <[email protected]> Committed: Mon Jan 12 19:02:37 2015 +0000 ---------------------------------------------------------------------- .../common/tools/TestWindowsSupport.groovy | 30 +------- .../apache/slider/test/SliderTestUtils.groovy | 75 +++++++++++++++++++- 2 files changed, 75 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/06bea719/slider-core/src/test/groovy/org/apache/slider/common/tools/TestWindowsSupport.groovy ---------------------------------------------------------------------- diff --git a/slider-core/src/test/groovy/org/apache/slider/common/tools/TestWindowsSupport.groovy b/slider-core/src/test/groovy/org/apache/slider/common/tools/TestWindowsSupport.groovy index 198bd82..d96886a 100644 --- a/slider-core/src/test/groovy/org/apache/slider/common/tools/TestWindowsSupport.groovy +++ b/slider-core/src/test/groovy/org/apache/slider/common/tools/TestWindowsSupport.groovy @@ -136,7 +136,7 @@ class TestWindowsSupport extends YarnMiniClusterTestBase { @Test public void testExecNonexistentBinary2() throws Throwable { assumeWindows() - assert !doesWindowsAppExist(["undefined-application", "--version"]) + assert !doesAppExist(["undefined-application", "--version"]) } public assumeWindows() { @@ -196,32 +196,4 @@ class TestWindowsSupport extends YarnMiniClusterTestBase { log.info "Hadoop DLL at: $exepath" } - public File locateExecutable(String exe) { - File exepath = null - String path = extractPath() - String[] dirs = path.split(System.getProperty("path.separator")); - dirs.each { String dirname -> - File dir = new File(dirname) - - File possible = new File(dir, exe) - if (possible.exists()) { - exepath = possible - } - } - return exepath - } - - public String extractPath() { - String pathkey = ""; - - System.getenv().keySet().each { String it -> - if (it.toLowerCase(Locale.ENGLISH).equals("path")) { - pathkey = it; - } - } - assert pathkey - log.info("Path env variable is $pathkey") - def path = System.getenv(pathkey) - return path - } } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/06bea719/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy ---------------------------------------------------------------------- diff --git a/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy b/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy index 4891f02..82436e2 100644 --- a/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy +++ b/slider-core/src/test/groovy/org/apache/slider/test/SliderTestUtils.groovy @@ -691,7 +691,20 @@ class SliderTestUtils extends Assert { process } - public static boolean doesWindowsAppExist(List<String> commands) { + /** + * Does an application exist? Run the commands and if the + * operation fails with a FileNotFoundException, then + * this method returns false. + * <p> + * Run something harmless like a -version command, something + * which must return 0 + * + * @param commands + * @return true if the command sequence succeeded + * false if they failed with no file + * @throws Exception on any other failure cause + */ + public static boolean doesAppExist(List<String> commands) { try { exec(0, commands) return true; @@ -704,6 +717,66 @@ class SliderTestUtils extends Assert { } /** + * Locate an executable on the path + * @param exe executable name. If it is an absolute path which + * exists then it will returned direct + * @return the path to an exe or null for no match + */ + public static File locateExecutable(String exe) { + File exeNameAsPath = new File(exe).absoluteFile + if (exeNameAsPath.exists()) { + return exeNameAsPath + } + + File exepath = null + String path = extractPath() + String[] dirs = path.split(System.getProperty("path.separator")); + dirs.each { String dirname -> + File dir = new File(dirname) + + File possible = new File(dir, exe) + if (possible.exists()) { + exepath = possible + } + } + return exepath + } + + /** + * Lookup the PATH env var + * @return the path or null + */ + public static String extractPath() { + return extractEnvVar("PATH") + } + + /** + * Find an environment variable. Uses case independent checking for + * the benefit of windows. + * Will fail if the var is not found. + * @param var path variable <i>in upper case</i> + * @return the env var + */ + public static String extractEnvVar(String var) { + String realkey = ""; + + System.getenv().keySet().each { String it -> + if (it.toUpperCase(Locale.ENGLISH).equals(var)) { + realkey = it; + } + } + + if (!realkey) { + fail("No environment variable $var found") + } + assert realkey + def val = System.getenv(realkey) + + log.info("$realkey = $val") + return val + } + + /** * Execute a closure, assert it fails with a given exit code and text * @param exitCode exit code * @param text text (can be "")
