diff options
author | Massimiliano Culpo <massimiliano.culpo@gmail.com> | 2020-03-05 10:26:50 +0100 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2020-03-20 11:39:28 -0700 |
commit | 59a7963785b0e443d5682d497af373383876da20 (patch) | |
tree | 5a2248b06066380f020986aa3b02a87eb6d360c4 /lib | |
parent | 733f9f8cfa5814cd1df6c34cf7e70f460ce75ff4 (diff) | |
download | spack-59a7963785b0e443d5682d497af373383876da20.tar.gz spack-59a7963785b0e443d5682d497af373383876da20.tar.bz2 spack-59a7963785b0e443d5682d497af373383876da20.tar.xz spack-59a7963785b0e443d5682d497af373383876da20.zip |
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.
Diffstat (limited to 'lib')
-rwxr-xr-x | lib/spack/spack/installer.py | 2 | ||||
-rw-r--r-- | lib/spack/spack/test/installer.py | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py index db82844cc5..bd38d11ea2 100755 --- a/lib/spack/spack/installer.py +++ b/lib/spack/spack/installer.py @@ -1154,7 +1154,7 @@ class PackageInstaller(object): except StopIteration as e: # A StopIteration exception means that do_install was asked to # 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}' .format(pkg.stage.source_path)) diff --git a/lib/spack/spack/test/installer.py b/lib/spack/spack/test/installer.py index c261ca7a63..8c3a232f19 100644 --- a/lib/spack/spack/test/installer.py +++ b/lib/spack/spack/test/installer.py @@ -391,6 +391,27 @@ def test_install_task_use_cache(install_mockery, monkeypatch): 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): """Test _release_lock for supposed write lock with exception.""" spec, installer = create_installer('trivial-install-test-package') |