Skip to content

Commit

Permalink
replaced monkeypatch proxy methods with direct access to instance var…
Browse files Browse the repository at this point in the history
…iable
  • Loading branch information
LorenzoFerraces committed Jan 15, 2024
1 parent 9bcb985 commit 0bced77
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 33 deletions.
24 changes: 12 additions & 12 deletions mezcla/tests/test_system.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,22 +121,22 @@ def test_formatted_environment_option_descriptions(self):
def test_getenv(self):
"""Ensure getenv works as expected"""
debug.trace(4, "test_getenv()")
self.set_env('TEST_ENV_VAR', 'some value', prepend=False)
self.monkeypatch.setenv('TEST_ENV_VAR', 'some value', prepend=False)
assert THE_MODULE.getenv('TEST_ENV_VAR') == 'some value'
assert THE_MODULE.getenv('INT_ENV_VAR', default_value=5) == 5

def test_getenv_text(self):
"""Ensure getenv_text works as expected"""
debug.trace(4, "test_getenv_text()")
self.set_env('TEST_ENV_VAR', 'some value', prepend=False)
self.monkeypatch.setenv('TEST_ENV_VAR', 'some value', prepend=False)
assert THE_MODULE.getenv_text('TEST_ENV_VAR') == 'some value'
assert not THE_MODULE.getenv_text("REALLY FUBAR?", False)

def test_getenv_value(self):
"""Ensure getenv_value works as expected"""
debug.trace(4, "test_getenv_value()")
set_test_env_var()
self.set_env('NEW_ENV_VAR', 'some value', prepend=False)
self.monkeypatch.setenv('NEW_ENV_VAR', 'some value', prepend=False)
assert THE_MODULE.getenv_value('NEW_ENV_VAR', default='empty', description='another test env var') == 'some value'
assert THE_MODULE.env_defaults['NEW_ENV_VAR'] == 'empty'
assert THE_MODULE.env_options['NEW_ENV_VAR'] == 'another test env var'
Expand All @@ -145,25 +145,25 @@ def test_getenv_bool(self):
"""Ensure getenv_bool works as expected"""
debug.trace(4, "test_getenv_bool()")
# note: whitespaces is not a typo, is to test strip condition
self.set_env('TEST_BOOL', 'FALSE', prepend=False)
self.monkeypatch.setenv('TEST_BOOL', 'FALSE', prepend=False)
assert not THE_MODULE.getenv_bool('TEST_BOOL', None)
self.set_env('TEST_BOOL', ' true ', prepend=False)
self.monkeypatch.setenv('TEST_BOOL', ' true ', prepend=False)
assert THE_MODULE.getenv_bool('TEST_BOOL', None)
assert isinstance(THE_MODULE.getenv_bool('TEST_BOOL', None), bool)

def test_getenv_number(self):
"""Ensure getenv_number works as expected"""
debug.trace(4, "test_getenv_number()")
# note: whitespaces is not a typo, is to test strip condition
self.set_env('TEST_NUMBER', ' 9.81 ', prepend=False)
self.monkeypatch.setenv('TEST_NUMBER', ' 9.81 ', prepend=False)
assert THE_MODULE.getenv_number('TEST_NUMBER', default=10) == 9.81
assert THE_MODULE.getenv_number('BAD_TEST_NUMBER', default=10) == 10
## TODO: test helper argument

def test_getenv_int(self):
"""Ensure getenv_int works as expected"""
debug.trace(4, "test_getenv_int()")
self.set_env('TEST_NUMBER', '9.81', prepend=False)
self.monkeypatch.setenv('TEST_NUMBER', '9.81', prepend=False)
assert THE_MODULE.getenv_int('TEST_NUMBER', default=20) == 9
assert THE_MODULE.getenv_int("REALLY FUBAR", 123) == 123

Expand Down Expand Up @@ -341,7 +341,7 @@ def test_unescape_html_text(self):
def test_stdin_reader(self):
"""Ensure stdin_reader works as expected"""
debug.trace(4, "test_stdin_reader()")
self.set_attr('sys.stdin', io.StringIO('my input\nsome line\n'))
self.monkeypatch.setattr('sys.stdin', io.StringIO('my input\nsome line\n'))
test_iter = THE_MODULE.stdin_reader()
assert next(test_iter) == 'my\tinput'
assert next(test_iter) == 'some\tline'
Expand All @@ -350,7 +350,7 @@ def test_stdin_reader(self):
def test_read_all_stdin(self):
"""Ensure read_all_stdin works as expected"""
debug.trace(4, "test_read_all_stdin()")
self.set_attr('sys.stdin', io.StringIO('my input\nsome line'))
self.monkeypatch.setattr('sys.stdin', io.StringIO('my input\nsome line'))
assert THE_MODULE.read_all_stdin() == 'my input\nsome line'

def test_read_entire_file(self):
Expand Down Expand Up @@ -844,7 +844,7 @@ def test_sleep(self):
debug.trace(4, "test_sleep()")
def sleep_mock(secs):
return f'sleeping {secs}'
self.set_attr(time, "sleep", sleep_mock)
self.monkeypatch.setattr(time, "sleep", sleep_mock)
THE_MODULE.sleep(123123, trace_level=-1)
captured = self.get_stderr()
assert '123123' in captured
Expand All @@ -854,7 +854,7 @@ def test_current_time(self):
debug.trace(4, "test_current_time()")
def time_mock():
return 12345.6789
self.set_attr(time, "time", time_mock)
self.monkeypatch.setattr(time, "time", time_mock)
assert THE_MODULE.current_time() == 12345.6789
assert THE_MODULE.current_time(integral=True) == 12346

Expand All @@ -877,7 +877,7 @@ def test_get_args(self):
"--name",
"logfilename.log",
]
self.set_attr("sys.argv", args)
self.monkeypatch.setattr("sys.argv", args)
assert THE_MODULE.get_args() == args

def test_main(self):
Expand Down
22 changes: 1 addition & 21 deletions mezcla/unittest_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,9 @@
import os
import tempfile
import unittest
from typing import overload

# Installed packages
import pytest
from _pytest.monkeypatch import Notset

# Local packages
import mezcla
Expand Down Expand Up @@ -396,27 +394,9 @@ def capsys(self, capsys):

@pytest.fixture(autouse=True)
def monkeypatch(self, monkeypatch):
"""Support for modifying objects, dictionaries or environment variables"""
self.monkeypatch = monkeypatch

def set_env(self, name, value, prepend = None):
"""Set environment variable name to value"""
debug.trace_expr(5, name, value, prepend, prefix="set_env:\n", delim="\n")
self.monkeypatch.setenv(name,value,prepend)
return

@overload
def set_attr(self, target: object, name: str, value: object, raising: bool = True ):
"""Set attribute value on target, memorizing the old value"""
debug.trace_expr(5,target, name, value, raising, prefix="set_attr:\n", delim="\n")
self.monkeypatch.setattr(target, name, value, raising)
return

def set_attr(self, target: str, name: object, value: Notset = Notset(), raising: bool = True):
"""Set attribute value on target, memorizing the old value"""
debug.trace_expr(5,target, name, value, raising, prefix="set_attr:\n", delim="\n")
self.monkeypatch.setattr(target, name, value, raising)
return

def get_stdout_stderr(self):
"""Get currently captured standard output and error
Note: Clears both stdout and stderr captured
Expand Down

0 comments on commit 0bced77

Please sign in to comment.