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.2.0.tar.gz
(8.3 MB
view hashes)
Built Distribution
Close
Hashes for shell_utils-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1cfef5cf02d437232f9937abbb8740f0ca255423de1fe3ab1f8c3a4b7aa272cf |
|
MD5 | e01ecfad89d6404f900398732b8c0823 |
|
BLAKE2b-256 | ba6709b1b084bc9c3e75cdfde1db98fb5676e8c5744cc94bbf13e744fe8eb0df |