diff --git a/stdlib/os/__init__.codon b/stdlib/os/__init__.codon index 7fd22c957..d593ada79 100644 --- a/stdlib/os/__init__.codon +++ b/stdlib/os/__init__.codon @@ -51,6 +51,10 @@ class EnvMap: self._init_if_needed() return self._map.items() + def setdefault(self, key: str, default: str = "") -> str: + self._init_if_needed() + return self._map.setdefault(key, default) + environ = EnvMap() def getenv(key: str, default: str = "") -> str: diff --git a/test/main.cpp b/test/main.cpp index bc93c4262..c888c3db5 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -475,6 +475,7 @@ INSTANTIATE_TEST_SUITE_P( "stdlib/sort_test.codon", "stdlib/heapq_test.codon", "stdlib/operator_test.codon", + "stdlib/os_test.codon", "python/pybridge.codon" ), testing::Values(true, false), diff --git a/test/stdlib/os_test.codon b/test/stdlib/os_test.codon new file mode 100644 index 000000000..271800861 --- /dev/null +++ b/test/stdlib/os_test.codon @@ -0,0 +1,11 @@ +import os + +@test +def test_environ_setdefault(): + rnd_env_key = "RND_KZBAF" + assert os.environ.setdefault(rnd_env_key, "VALUE_1") == "VALUE_1" + assert os.environ[rnd_env_key] == "VALUE_1" + assert os.environ.setdefault(rnd_env_key, "VALUE_2") == "VALUE_1" + assert os.environ[rnd_env_key] == "VALUE_1" + +test_environ_setdefault()