Some helpers to make interacting with the shell easier
Project description
Some helpers to make interacting with the shell easier
Documentation: https://knowsuchagency.github.io/shell-utils
Installation
pipenv install shell-utils
Usage
def test_shell_capture():
"""Test shell output capture."""
string = 'hello'
echo_string = shell(f'echo {string}', capture=True)
assert echo_string.returncode == 0
assert echo_string.stdout.decode().strip() == string
to_stderr = shell(f'echo "{string}" >&2', capture=True)
assert to_stderr.returncode == 0
assert to_stderr.stderr.decode().strip() == string
def test_shell_raises():
"""Test shell raises."""
import subprocess as sp
with pytest.raises(sp.CalledProcessError):
shell('exit 1')
assert shell('exit 1', check=False).returncode == 1
def test_env():
"""Test env context manager."""
import os
import copy
original_env = copy.deepcopy(os.environ)
string = 'world'
with env(hello=string):
assert os.environ['hello'] == string
assert 'hello' not in os.environ
assert os.environ == original_env
def test_path():
"""Test path context manager."""
from pathlib import Path
from tempfile import TemporaryDirectory
import os
original_path = Path(os.environ['PATH'])
with TemporaryDirectory() as temp_dir, path(temp_dir) as new_path:
temp_dir = Path(temp_dir)
assert new_path[-1] == temp_dir.__fspath__()
assert Path(os.environ['PATH']) != original_path
assert Path(os.environ['PATH']) == original_path
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
shell-utils-0.1.1.tar.gz
(8.3 MB
view hashes)
Built Distribution
Close
Hashes for shell_utils-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3c8ecfff0b86a533f8183d01e2116337936bf8ce2dc300cc883ca0e9f4427b0 |
|
MD5 | 0e957e8308957ddb1a950b4e5e437e37 |
|
BLAKE2b-256 | 2241e1c9951bd83cc6b707f5e819b6ff220fc756c22028755c66282fbefc5635 |