Bugfix: resolve StopIteration message attribute failure (#15341)
Testing the install StopIteration exception resulted in an attribute error: AttributeError: 'StopIteration' object has no attribute 'message' This PR adds a unit test and resolves that error.
This commit is contained in:
parent
733f9f8cfa
commit
59a7963785
2 changed files with 22 additions and 1 deletions
|
@ -1154,7 +1154,7 @@ def build_process():
|
||||||
except StopIteration as e:
|
except StopIteration as e:
|
||||||
# A StopIteration exception means that do_install was asked to
|
# A StopIteration exception means that do_install was asked to
|
||||||
# stop early from clients.
|
# stop early from clients.
|
||||||
tty.msg('{0} {1}'.format(self.pid, e.message))
|
tty.msg('{0} {1}'.format(self.pid, str(e)))
|
||||||
tty.msg('Package stage directory : {0}'
|
tty.msg('Package stage directory : {0}'
|
||||||
.format(pkg.stage.source_path))
|
.format(pkg.stage.source_path))
|
||||||
|
|
||||||
|
|
|
@ -391,6 +391,27 @@ def test_install_task_use_cache(install_mockery, monkeypatch):
|
||||||
assert spec.package.name in installer.installed
|
assert spec.package.name in installer.installed
|
||||||
|
|
||||||
|
|
||||||
|
def test_install_task_stop_iter(install_mockery, monkeypatch, capfd):
|
||||||
|
"""Test _install_task to cover the StopIteration exception."""
|
||||||
|
mock_err_msg = 'mock stop iteration'
|
||||||
|
|
||||||
|
def _raise(installer, pkg):
|
||||||
|
raise StopIteration(mock_err_msg)
|
||||||
|
|
||||||
|
spec, installer = create_installer('a')
|
||||||
|
task = create_build_task(spec.package)
|
||||||
|
|
||||||
|
monkeypatch.setattr(spack.package.PackageBase, 'unit_test_check', _true)
|
||||||
|
monkeypatch.setattr(inst.PackageInstaller, '_setup_install_dir', _raise)
|
||||||
|
|
||||||
|
installer._install_task(task)
|
||||||
|
out = capfd.readouterr()[0]
|
||||||
|
|
||||||
|
assert mock_err_msg in out
|
||||||
|
assert 'Package stage directory' in out
|
||||||
|
assert spec.package.stage.source_path in out
|
||||||
|
|
||||||
|
|
||||||
def test_release_lock_write_n_exception(install_mockery, tmpdir, capsys):
|
def test_release_lock_write_n_exception(install_mockery, tmpdir, capsys):
|
||||||
"""Test _release_lock for supposed write lock with exception."""
|
"""Test _release_lock for supposed write lock with exception."""
|
||||||
spec, installer = create_installer('trivial-install-test-package')
|
spec, installer = create_installer('trivial-install-test-package')
|
||||||
|
|
Loading…
Reference in a new issue