Let os.getenv() return System.getenv() values first for JSE, then fall back to properties
This commit is contained in:
@@ -976,6 +976,7 @@ Files are no longer hosted at LuaForge.
|
||||
<li>List keyeq() and keyindex() methods as abstract on LuaTable.Entry (issue #37).</li>
|
||||
<li>Fix return value for table.remove() and table.insert() (fixes issue #39)</li>
|
||||
<li>Fix aliasing issue for some multiple assignments from varargs return values (fixes issue #38)</li>
|
||||
<li>Let os.getenv() return System.getenv() values first for JSE, then fall back to properties (fixes issue #25)</li>
|
||||
|
||||
</ul></td></tr>
|
||||
</table></td></tr></table>
|
||||
|
||||
@@ -404,8 +404,19 @@ public class OsLib extends TwoArgFunction {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the process environment variable varname,
|
||||
* or null if the variable is not defined.
|
||||
* Returns the value of the process environment variable varname,
|
||||
* or the System property value for varname,
|
||||
* or null if the variable is not defined in either environment.
|
||||
*
|
||||
* The default implementation, which is used by the JmePlatform,
|
||||
* only queryies System.getProperty().
|
||||
*
|
||||
* The JsePlatform overrides this behavior and returns the
|
||||
* environment variable value using System.getenv() if it exists,
|
||||
* or the System property value if it does not.
|
||||
*
|
||||
* A SecurityException may be thrown if access is not allowed
|
||||
* for 'varname'.
|
||||
* @param varname
|
||||
* @return String value, or null if not defined
|
||||
*/
|
||||
|
||||
@@ -84,6 +84,11 @@ public class JseOsLib extends org.luaj.vm2.lib.OsLib {
|
||||
public JseOsLib() {
|
||||
}
|
||||
|
||||
protected String getenv(String varname) {
|
||||
String s = System.getenv(varname);
|
||||
return s != null? s : System.getProperty(varname);
|
||||
}
|
||||
|
||||
protected Varargs execute(String command) {
|
||||
int exitValue;
|
||||
try {
|
||||
|
||||
@@ -1,21 +1,25 @@
|
||||
package org.luaj.vm2.lib.jse;
|
||||
|
||||
import org.luaj.vm2.LuaValue;
|
||||
import org.luaj.vm2.lib.OsLib;
|
||||
import org.luaj.vm2.lib.jme.JmePlatform;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class OsLibTest extends TestCase {
|
||||
|
||||
OsLib lib;
|
||||
LuaValue jme_lib;
|
||||
LuaValue jse_lib;
|
||||
double time;
|
||||
|
||||
public void setUp() {
|
||||
lib = new OsLib();
|
||||
jse_lib = JsePlatform.standardGlobals().get("os");;
|
||||
jme_lib = JmePlatform.standardGlobals().get("os");;
|
||||
time = new java.util.Date(2001-1900, 7, 23, 14, 55, 02).getTime() / 1000.0;
|
||||
}
|
||||
|
||||
void t(String format, String expected) {
|
||||
String actual = lib.date(format, time);
|
||||
String actual = jme_lib.get("date").call(LuaValue.valueOf(format), LuaValue.valueOf(time)).tojstring();
|
||||
assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@@ -52,4 +56,23 @@ public class OsLibTest extends TestCase {
|
||||
public void testStringDate_UW_pos2() { time+=2*DAY; t("%c %U %W", "Sat Aug 25 14:55:02 2001 33 34"); }
|
||||
public void testStringDate_UW_pos3() { time+=3*DAY; t("%c %U %W", "Sun Aug 26 14:55:02 2001 34 34"); }
|
||||
public void testStringDate_UW_pos4() { time+=4*DAY; t("%c %U %W", "Mon Aug 27 14:55:02 2001 34 35"); }
|
||||
|
||||
public void testJseOsGetenvForEnvVariables() {
|
||||
LuaValue USER = LuaValue.valueOf("USER");
|
||||
LuaValue jse_user = jse_lib.get("getenv").call(USER);
|
||||
LuaValue jme_user = jme_lib.get("getenv").call(USER);
|
||||
assertFalse(jse_user.isnil());
|
||||
assertTrue(jme_user.isnil());
|
||||
System.out.println("User: " + jse_user);
|
||||
}
|
||||
|
||||
public void testJseOsGetenvForSystemProperties() {
|
||||
System.setProperty("test.key.foo", "test.value.bar");
|
||||
LuaValue key = LuaValue.valueOf("test.key.foo");
|
||||
LuaValue value = LuaValue.valueOf("test.value.bar");
|
||||
LuaValue jse_value = jse_lib.get("getenv").call(key);
|
||||
LuaValue jme_value = jme_lib.get("getenv").call(key);
|
||||
assertEquals(value, jse_value);
|
||||
assertEquals(value, jme_value);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user