@@ -454,3 +454,56 @@ def test_show_option_pane_fixture(
454
454
assert k in result
455
455
456
456
assert result [k ] == v
457
+
458
+
459
+ def test_stable_baseline_options_and_hooks (server : Server ) -> None :
460
+ """Ensure stable baseline across tmux versions."""
461
+ session = server .new_session (session_name = "test" , detach = True )
462
+
463
+ # List variables
464
+ assert server .show_option ("command-alias" ) == {
465
+ "choose-session" : "choose-tree -s" ,
466
+ "choose-window" : "choose-tree -w" ,
467
+ "info" : "show-messages -JT" ,
468
+ "server-info" : "show-messages -JT" ,
469
+ "split-pane" : "split-window" ,
470
+ "splitp" : "split-window" ,
471
+ }
472
+ if has_gte_version ("3.2" ):
473
+ assert server .show_option ("terminal-features" ) == {
474
+ "screen*" : [
475
+ "title" ,
476
+ ],
477
+ "xterm*" : [
478
+ "clipboard" ,
479
+ "ccolour" ,
480
+ "cstyle" ,
481
+ "focus" ,
482
+ "title" ,
483
+ ],
484
+ }
485
+ assert server .show_option ("terminal-overrides" ) is None
486
+ assert server .show_option ("user-keys" ) is None
487
+ assert server .show_option ("status-format" ) is None
488
+ assert server .show_option ("update-environment" ) is None
489
+
490
+ # List variables: Pane
491
+ pane = session .active_pane
492
+ assert pane is not None
493
+ assert pane .show_option ("pane-colours" ) is None
494
+
495
+
496
+ def test_high_level_api_expectations (server : Server ) -> None :
497
+ """Ensure options and hooks behave as expected."""
498
+
499
+ # Raw input and output
500
+ # Should be able to functionally parse raw CLI output, even outside of libtmux into
501
+ # options.
502
+
503
+ # Parsing steps
504
+ # 1. Basic KV split: Should split options into key,values.
505
+ # 2. Structure: Should decompose array-like options and dictionaries
506
+ # In the case of sparse arrays, which don't exist in Python, a SparseArray is
507
+ # used that behaves like a list but allows for sparse indexes so the indices
508
+ # aren't lost but the shape is still respected.
509
+ # 3. Python Typings: Should cast the fully structured objects into types
0 commit comments