+++ /dev/null
-import os
-import pytest
-from ceph_volume import exceptions, decorators, terminal
-
-
-class TestNeedsRoot(object):
-
- def test_is_root(self, monkeypatch):
- def func():
- return True
- monkeypatch.setattr(decorators.os, 'getuid', lambda: 0)
- assert decorators.needs_root(func)() is True
-
- def test_is_not_root(self, monkeypatch):
- def func():
- return True # pragma: no cover
- monkeypatch.setattr(decorators.os, 'getuid', lambda: 20)
- with pytest.raises(exceptions.SuperUserError) as error:
- decorators.needs_root(func)()
-
- msg = 'This command needs to be executed with sudo or as root'
- assert str(error.value) == msg
-
-
-class TestExceptionMessage(object):
-
- def test_has_str_method(self):
- result = decorators.make_exception_message(RuntimeError('an error'))
- expected = "%s %s\n" % (terminal.red_arrow, 'RuntimeError: an error')
- assert result == expected
-
- def test_has_no_str_method(self):
- class Error(Exception):
- pass
- result = decorators.make_exception_message(Error())
- expected = "%s %s\n" % (terminal.red_arrow, 'Error')
- assert result == expected
-
-
-class TestCatches(object):
-
- def teardown(self):
- try:
- del(os.environ['CEPH_VOLUME_DEBUG'])
- except KeyError:
- pass
-
- def test_ceph_volume_debug_enabled(self):
- os.environ['CEPH_VOLUME_DEBUG'] = '1'
- @decorators.catches() # noqa
- def func():
- raise RuntimeError()
- with pytest.raises(RuntimeError):
- func()
-
- def test_ceph_volume_debug_disabled_no_exit(self, capsys):
- @decorators.catches(exit=False)
- def func():
- raise RuntimeError()
- func()
- stdout, stderr = capsys.readouterr()
- assert 'RuntimeError\n' in stderr
-
- def test_ceph_volume_debug_exits(self, capsys):
- @decorators.catches()
- def func():
- raise RuntimeError()
- with pytest.raises(SystemExit):
- func()
- stdout, stderr = capsys.readouterr()
- assert 'RuntimeError\n' in stderr