Exception with os.system call
ivannnnnnnnnn opened this issue · comments
Hello, I am using pytest in my django application. I am write a method with call os.system
function and when I run tests I catch exception
def _update_group_permissions(self, request):
group = settings.CONSTANCE_GROUP_FOR_FTP_USERS
folder = settings.CONSTANCE_USER_FOLDERS # Expected .../folder_name/
try:
os.system(f"chgrp {group} {folder[-1]}")
os.system(f"chgrp {group} {folder}*")
os.system(f"chmod 070 {folder[-1]}")
os.system(f"chmod 070 {folder}*")
self.message_user(
request,
f"Add permissions for folder to `{group}` group",
level=messages.SUCCESS,
)
except Exception as e:
self.message_user(
request,
f"Failed to add permissions for group `{group}`. {str(e)}",
level=messages.SUCCESS,
)
FAILED apps/accounts/admin.py::BLACK
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/pytest/__main__.py", line 7, in <module>
raise SystemExit(pytest.main())
File "/usr/local/lib/python3.7/dist-packages/_pytest/config/__init__.py", line 125, in main
config=config
File "/usr/local/lib/python3.7/dist-packages/pluggy/hooks.py", line 286, in __call__
return self._hookexec(self, self.get_hookimpls(), kwargs)
File "/usr/local/lib/python3.7/dist-packages/pluggy/manager.py", line 93, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "/usr/local/lib/python3.7/dist-packages/pluggy/manager.py", line 87, in <lambda>
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
File "/usr/local/lib/python3.7/dist-packages/pluggy/callers.py", line 208, in _multicall
return outcome.get_result()
File "/usr/local/lib/python3.7/dist-packages/pluggy/callers.py", line 80, in get_result
raise ex[1].with_traceback(ex[2])
File "/usr/local/lib/python3.7/dist-packages/pluggy/callers.py", line 187, in _multicall
res = hook_impl.function(*args)
File "/usr/local/lib/python3.7/dist-packages/_pytest/main.py", line 240, in pytest_cmdline_main
return wrap_session(config, _main)
File "/usr/local/lib/python3.7/dist-packages/_pytest/main.py", line 229, in wrap_session
session=session, exitstatus=session.exitstatus
File "/usr/local/lib/python3.7/dist-packages/pluggy/hooks.py", line 286, in __call__
return self._hookexec(self, self.get_hookimpls(), kwargs)
File "/usr/local/lib/python3.7/dist-packages/pluggy/manager.py", line 93, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "/usr/local/lib/python3.7/dist-packages/pluggy/manager.py", line 87, in <lambda>
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
File "/usr/local/lib/python3.7/dist-packages/pluggy/callers.py", line 203, in _multicall
gen.send(outcome)
File "/usr/local/lib/python3.7/dist-packages/_pytest/terminal.py", line 731, in pytest_sessionfinish
self.write_sep("!", session.shouldfail, red=True)
File "/usr/local/lib/python3.7/dist-packages/_pytest/terminal.py", line 391, in write_sep
self._tw.sep(sep, title, **markup)
File "/usr/local/lib/python3.7/dist-packages/py/_io/terminalwriter.py", line 232, in sep
N = max((fullwidth - len(title) - 2) // (2*len(sepchar)), 1)
TypeError: object of type 'bool' has no len()
make: *** [Makefile:15: test] Error 1
If I comment part with os.system
all work correctly
Test requirements:
isort==4.3.21
ipython==5.8.0
black==19.3b0
coverage==5.2.1
pytest==5.4.3
pytest-black==0.3.10
pytest-django==3.9.0
pytest-isort==1.1.0
pytest-instafail==0.4.2
pytest-blockage==0.2.2
pytest-xdist==1.34.0
django-test-plus==1.4.0
fakeredis==1.4.5
bandit==1.7.0
pytest-bandit==0.5.2
Command for run tests:
pytest --black --ff --isort --blockage --instafail -n 0 --pdb -v
At first glance i looks like something is setting a internal internal object to the wrong value, this is unrelated to os. System
Fyi, python has native apis for the stuff you shell out for, using those is probably a good idea anyway
At first glance i looks like something is setting a internal internal object to the wrong value, this is unrelated to os. System
Fyi, python has native apis for the stuff you shell out for, using those is probably a good idea anyway
I catch same exception with any command in os.system
. If I try call echo
or ls
I have same error
Just realised that the pytest version is of the 5.x series, please update
Also please excuse the delay, new baby in the family