diff --git cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java index 63668bc..2126cf2 100644 --- cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java +++ cli/src/test/org/apache/hadoop/hive/cli/TestCliDriverMethods.java @@ -58,6 +58,7 @@ import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse; import org.apache.hadoop.hive.service.HiveClient; import org.apache.hadoop.hive.service.HiveServerException; +import org.apache.hadoop.util.Shell; import org.apache.thrift.TException; @@ -375,8 +376,14 @@ public void testprocessInitFiles() throws Exception { } } - private static void setEnv(String key, String value) throws Exception { + if (Shell.WINDOWS) + setEnvWindows(key, value); + else + setEnvLinux(key, value); + } + + private static void setEnvLinux(String key, String value) throws Exception { Class[] classes = Collections.class.getDeclaredClasses(); Map env = (Map) System.getenv(); for (Class cl : classes) { @@ -394,6 +401,26 @@ private static void setEnv(String key, String value) throws Exception { } } + private static void setEnvWindows(String key, String value) throws Exception { + Class processEnvironmentClass = Class.forName("java.lang.ProcessEnvironment"); + Field theEnvironmentField = processEnvironmentClass.getDeclaredField("theEnvironment"); + theEnvironmentField.setAccessible(true); + Map env = (Map) theEnvironmentField.get(null); + if (value == null) { + env.remove(key); + } else { + env.put(key, value); + } + + Field theCaseInsensitiveEnvironmentField = processEnvironmentClass.getDeclaredField("theCaseInsensitiveEnvironment"); + theCaseInsensitiveEnvironmentField.setAccessible(true); + Map cienv = (Map) theCaseInsensitiveEnvironmentField.get(null); + if (value == null) { + cienv.remove(key); + } else { + cienv.put(key, value); + } + } private static class FakeCliDriver extends CliDriver {