Skip to content

Commit 9fc3cfc

Browse files
committed
refactor!(environment): Add getenv for key lookups, remove from show_environments
For individual lookups, use server.getenv(key) and session.getenv(key)
1 parent 8c5a98d commit 9fc3cfc

File tree

3 files changed

+47
-26
lines changed

3 files changed

+47
-26
lines changed

libtmux/common.py

+34-13
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,37 @@ def remove_environment(self, name):
108108
proc.stderr = proc.stderr[0]
109109
raise ValueError("tmux set-environment stderr: %s" % proc.stderr)
110110

111-
def show_environment(self, name=None):
112-
"""Show environment ``$ tmux show-environment -t [session] <name>``.
111+
def show_environment(self):
112+
"""Show environment ``$ tmux show-environment -t [session]``.
113113
114-
Return dict of environment variables for the session or the value of a
115-
specific variable if the name is specified.
114+
Return dict of environment variables for the session.
115+
116+
Returns
117+
-------
118+
dict
119+
environmental variables in dict, if no name, or str if name
120+
entered.
121+
"""
122+
tmux_args = ["show-environment"]
123+
if self._add_option:
124+
tmux_args += [self._add_option]
125+
vars = self.cmd(*tmux_args).stdout
126+
vars = [tuple(item.split("=", 1)) for item in vars]
127+
vars_dict = {}
128+
for t in vars:
129+
if len(t) == 2:
130+
vars_dict[t[0]] = t[1]
131+
elif len(t) == 1:
132+
vars_dict[t[0]] = True
133+
else:
134+
raise ValueError("unexpected variable %s", t)
135+
136+
return vars_dict
137+
138+
def getenv(self, name):
139+
"""Show environment variable ``$ tmux show-environment -t [session] <name>``.
140+
141+
Return the value of a specific variable if the name is specified.
116142
117143
Parameters
118144
----------
@@ -121,15 +147,13 @@ def show_environment(self, name=None):
121147
122148
Returns
123149
-------
124-
str or dict
125-
environmental variables in dict, if no name, or str if name
126-
entered.
150+
str
151+
Value of environment variable
127152
"""
128153
tmux_args = ["show-environment"]
129154
if self._add_option:
130155
tmux_args += [self._add_option]
131-
if name:
132-
tmux_args += [name]
156+
tmux_args += [name]
133157
vars = self.cmd(*tmux_args).stdout
134158
vars = [tuple(item.split("=", 1)) for item in vars]
135159
vars_dict = {}
@@ -141,10 +165,7 @@ def show_environment(self, name=None):
141165
else:
142166
raise ValueError("unexpected variable %s", t)
143167

144-
if name:
145-
return vars_dict.get(name)
146-
147-
return vars_dict
168+
return vars_dict.get(name)
148169

149170

150171
class tmux_cmd:

tests/test_server.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -66,20 +66,20 @@ def test_show_environment(server):
6666
assert isinstance(_vars, dict)
6767

6868

69-
def test_set_show_environment_single(server, session):
69+
def test_getenv(server, session):
7070
"""Set environment then Server.show_environment(key)."""
7171
server.set_environment("FOO", "BAR")
72-
assert "BAR" == server.show_environment("FOO")
72+
assert "BAR" == server.getenv("FOO")
7373

7474
server.set_environment("FOO", "DAR")
75-
assert "DAR" == server.show_environment("FOO")
75+
assert "DAR" == server.getenv("FOO")
7676

7777
assert "DAR" == server.show_environment()["FOO"]
7878

7979

8080
def test_show_environment_not_set(server):
8181
"""Unset environment variable returns None."""
82-
assert server.show_environment("BAR") is None
82+
assert server.getenv("BAR") is None
8383

8484

8585
def test_new_session(server):

tests/test_session.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -172,35 +172,35 @@ def test_set_show_environment_single(session):
172172
"""Set environment then Session.show_environment(key)."""
173173

174174
session.set_environment("FOO", "BAR")
175-
assert session.show_environment("FOO") == "BAR"
175+
assert session.getenv("FOO") == "BAR"
176176

177177
session.set_environment("FOO", "DAR")
178-
assert session.show_environment("FOO") == "DAR"
178+
assert session.getenv("FOO") == "DAR"
179179

180180
assert session.show_environment()["FOO"] == "DAR"
181181

182182

183183
def test_show_environment_not_set(session):
184184
"""Not set environment variable returns None."""
185-
assert session.show_environment("BAR") is None
185+
assert session.getenv("BAR") is None
186186

187187

188188
def test_remove_environment(session):
189189
"""Remove environment variable."""
190-
assert session.show_environment("BAM") is None
190+
assert session.getenv("BAM") is None
191191
session.set_environment("BAM", "OK")
192-
assert session.show_environment("BAM") == "OK"
192+
assert session.getenv("BAM") == "OK"
193193
session.remove_environment("BAM")
194-
assert session.show_environment("BAM") is None
194+
assert session.getenv("BAM") is None
195195

196196

197197
def test_unset_environment(session):
198198
"""Unset environment variable."""
199-
assert session.show_environment("BAM") is None
199+
assert session.getenv("BAM") is None
200200
session.set_environment("BAM", "OK")
201-
assert session.show_environment("BAM") == "OK"
201+
assert session.getenv("BAM") == "OK"
202202
session.unset_environment("BAM")
203-
assert session.show_environment("BAM") is None
203+
assert session.getenv("BAM") is None
204204

205205

206206
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)