Skip to content

Commit 336c8c5

Browse files
committed
refactor! EnvironmentVarGuard to tests/environment.py
1 parent cacae1b commit 336c8c5

File tree

2 files changed

+72
-54
lines changed

2 files changed

+72
-54
lines changed

src/libtmux/test/__init__.py

-54
Original file line numberDiff line numberDiff line change
@@ -300,57 +300,3 @@ def temp_window(
300300
if len(session.windows.filter(window_id=window_id)) > 0:
301301
window.kill()
302302
return
303-
304-
305-
class EnvironmentVarGuard:
306-
"""Mock environmental variables safely.
307-
308-
Helps rotect the environment variable properly. Can be used as context
309-
manager.
310-
311-
Notes
312-
-----
313-
Vendorized to fix issue with Anaconda Python 2 not including test module,
314-
see #121 [1]_
315-
316-
References
317-
----------
318-
.. [1] Just installed, "ImportError: cannot import name test_support".
319-
GitHub issue for tmuxp. https://github.com/tmux-python/tmuxp/issues/121.
320-
Created October 12th, 2015. Accessed April 7th, 2018.
321-
"""
322-
323-
def __init__(self) -> None:
324-
self._environ = os.environ
325-
self._unset: set[str] = set()
326-
self._reset: dict[str, str] = {}
327-
328-
def set(self, envvar: str, value: str) -> None:
329-
"""Set environment variable."""
330-
if envvar not in self._environ:
331-
self._unset.add(envvar)
332-
else:
333-
self._reset[envvar] = self._environ[envvar]
334-
self._environ[envvar] = value
335-
336-
def unset(self, envvar: str) -> None:
337-
"""Unset environment variable."""
338-
if envvar in self._environ:
339-
self._reset[envvar] = self._environ[envvar]
340-
del self._environ[envvar]
341-
342-
def __enter__(self) -> Self:
343-
"""Return context for for context manager."""
344-
return self
345-
346-
def __exit__(
347-
self,
348-
exc_type: type[BaseException] | None,
349-
exc_value: BaseException | None,
350-
exc_tb: types.TracebackType | None,
351-
) -> None:
352-
"""Cleanup to run after context manager finishes."""
353-
for envvar, value in self._reset.items():
354-
self._environ[envvar] = value
355-
for unset in self._unset:
356-
del self._environ[unset]

src/libtmux/test/environment.py

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
"""Helper methods for libtmux and downstream libtmux libraries."""
2+
3+
from __future__ import annotations
4+
5+
import logging
6+
import os
7+
import typing as t
8+
9+
logger = logging.getLogger(__name__)
10+
11+
if t.TYPE_CHECKING:
12+
import sys
13+
import types
14+
15+
if sys.version_info >= (3, 11):
16+
from typing import Self
17+
else:
18+
from typing_extensions import Self
19+
20+
21+
class EnvironmentVarGuard:
22+
"""Mock environmental variables safely.
23+
24+
Helps rotect the environment variable properly. Can be used as context
25+
manager.
26+
27+
Notes
28+
-----
29+
Vendorized to fix issue with Anaconda Python 2 not including test module,
30+
see #121 [1]_
31+
32+
References
33+
----------
34+
.. [1] Just installed, "ImportError: cannot import name test_support".
35+
GitHub issue for tmuxp. https://github.com/tmux-python/tmuxp/issues/121.
36+
Created October 12th, 2015. Accessed April 7th, 2018.
37+
"""
38+
39+
def __init__(self) -> None:
40+
self._environ = os.environ
41+
self._unset: set[str] = set()
42+
self._reset: dict[str, str] = {}
43+
44+
def set(self, envvar: str, value: str) -> None:
45+
"""Set environment variable."""
46+
if envvar not in self._environ:
47+
self._unset.add(envvar)
48+
else:
49+
self._reset[envvar] = self._environ[envvar]
50+
self._environ[envvar] = value
51+
52+
def unset(self, envvar: str) -> None:
53+
"""Unset environment variable."""
54+
if envvar in self._environ:
55+
self._reset[envvar] = self._environ[envvar]
56+
del self._environ[envvar]
57+
58+
def __enter__(self) -> Self:
59+
"""Return context for for context manager."""
60+
return self
61+
62+
def __exit__(
63+
self,
64+
exc_type: type[BaseException] | None,
65+
exc_value: BaseException | None,
66+
exc_tb: types.TracebackType | None,
67+
) -> None:
68+
"""Cleanup to run after context manager finishes."""
69+
for envvar, value in self._reset.items():
70+
self._environ[envvar] = value
71+
for unset in self._unset:
72+
del self._environ[unset]

0 commit comments

Comments
 (0)