9
9
10
10
import libtmux
11
11
from libtmux .common import has_gte_version , has_lt_version
12
+ from libtmux .session import Session
12
13
from libtmux .test import retry_until , temp_session
13
14
from libtmux .window import Window
14
15
from tmuxp import exc
@@ -331,6 +332,10 @@ def f():
331
332
assert w .name != "top"
332
333
333
334
335
+ @pytest .mark .skipif (
336
+ has_lt_version ("3.0" ),
337
+ reason = "needs -e flag for new-window and split-window introduced in tmux 3.0" ,
338
+ )
334
339
def test_environment_variables (session ):
335
340
workspace = ConfigReader ._from_file (
336
341
test_utils .get_workspace_file ("workspace/builder/environment_vars.yaml" )
@@ -340,9 +345,68 @@ def test_environment_variables(session):
340
345
builder = WorkspaceBuilder (sconf = workspace )
341
346
builder .build (session )
342
347
343
- assert session .getenv ("FOO" ) == "BAR"
348
+ assert session .getenv ("FOO" ) == "SESSION"
349
+ assert session .getenv ("PATH" ) == "/tmp"
350
+
351
+ no_overrides_win = session .windows [0 ]
352
+ pane = no_overrides_win .panes [0 ]
353
+ pane .send_keys ("echo $FOO" )
354
+ assert pane .capture_pane ()[1 ] == "SESSION"
355
+
356
+ window_overrides_win = session .windows [1 ]
357
+ pane = window_overrides_win .panes [0 ]
358
+ pane .send_keys ("echo $FOO" )
359
+ assert pane .capture_pane ()[1 ] == "WINDOW"
360
+
361
+ pane_overrides_win = session .windows [2 ]
362
+ pane = pane_overrides_win .panes [0 ]
363
+ pane .send_keys ("echo $FOO" )
364
+ assert pane .capture_pane ()[1 ] == "PANE"
365
+
366
+ both_overrides_win = session .windows [3 ]
367
+ pane = both_overrides_win .panes [0 ]
368
+ pane .send_keys ("echo $FOO" )
369
+ assert pane .capture_pane ()[1 ] == "WINDOW"
370
+ pane = both_overrides_win .panes [1 ]
371
+ pane .send_keys ("echo $FOO" )
372
+ assert pane .capture_pane ()[1 ] == "PANE"
373
+
374
+
375
+ @pytest .mark .skipif (
376
+ has_gte_version ("3.0" ),
377
+ reason = "warnings are not needed for tmux >= 3.0" ,
378
+ )
379
+ def test_environment_variables_logs (session : Session , caplog : pytest .LogCaptureFixture ):
380
+ workspace = ConfigReader ._from_file (
381
+ test_utils .get_workspace_file ("workspace/builder/environment_vars.yaml" )
382
+ )
383
+ workspace = loader .expand (workspace )
384
+
385
+ builder = WorkspaceBuilder (sconf = workspace )
386
+ builder .build (session )
387
+
388
+ # environment on sessions should work as this is done using set-environment
389
+ # on the session itself
390
+ assert session .getenv ("FOO" ) == "SESSION"
344
391
assert session .getenv ("PATH" ) == "/tmp"
345
392
393
+ assert (
394
+ sum (
395
+ 1
396
+ for record in caplog .records
397
+ if "Cannot set environment for new window." in record .msg
398
+ )
399
+ == 4
400
+ ), "Warning on creating windows missing"
401
+ assert (
402
+ sum (
403
+ 1
404
+ for record in caplog .records
405
+ if "Cannot set environment for new pane." in record .msg
406
+ )
407
+ == 1
408
+ ), "Warning on creating panes missing"
409
+
346
410
347
411
def test_automatic_rename_option (session ):
348
412
"""With option automatic-rename: on."""
0 commit comments