Browse Source

[python] fix env vars related API from `Sys` in `__init__` (closes #9666)

Aleksandr Kuzmenko 5 years ago
parent
commit
0e7c93e9ce

+ 12 - 6
std/python/_std/Sys.hx

@@ -24,16 +24,22 @@ import python.lib.Time;
 import python.lib.Os;
 import python.lib.Os;
 import sys.io.FileInput;
 import sys.io.FileInput;
 import sys.io.FileOutput;
 import sys.io.FileOutput;
+import haxe.ds.StringMap;
 
 
 @:coreApi
 @:coreApi
 class Sys {
 class Sys {
-	static var environ:haxe.ds.StringMap<String> = {
-		environ = new haxe.ds.StringMap();
-		var env = Os.environ;
-		for (key in env.keys()) {
-			environ.set(key, env.get(key, null));
+	static var environ(get,default):StringMap<String>;
+	static function get_environ():StringMap<String> {
+		return switch environ {
+			case null:
+				var environ = new StringMap();
+				var env = Os.environ;
+				for (key in env.keys()) {
+					environ.set(key, env.get(key, null));
+				}
+				Sys.environ = environ;
+			case env: env;
 		}
 		}
-		environ;
 	}
 	}
 
 
 	public static inline function time():Float {
 	public static inline function time():Float {

+ 9 - 0
tests/misc/python/projects/Issue9666/Main.hx

@@ -0,0 +1,9 @@
+class Main {
+	static function __init__() {
+		var hasBar = Sys.getEnv('bar');
+	}
+
+	public static function main() {
+		Sys.environment().exists('foo');
+	}
+}

+ 3 - 0
tests/misc/python/projects/Issue9666/build.hxml

@@ -0,0 +1,3 @@
+-python bin/test.py
+--main Main
+--cmd python3 bin/test.py