Skip to content
Snippets Groups Projects
Commit 972a2779 authored by Todd Gamblin's avatar Todd Gamblin Committed by GitHub
Browse files

Fix Python issue with build failures; Add test case for build failures. (#2687)

parent 5fbab1f4
No related branches found
No related tags found
No related merge requests found
...@@ -60,9 +60,10 @@ ...@@ -60,9 +60,10 @@
import llnl.util.lang as lang import llnl.util.lang as lang
import llnl.util.tty as tty import llnl.util.tty as tty
from llnl.util.filesystem import *
import spack import spack
import spack.store import spack.store
from llnl.util.filesystem import *
from spack.environment import EnvironmentModifications, validate from spack.environment import EnvironmentModifications, validate
from spack.util.environment import * from spack.util.environment import *
from spack.util.executable import Executable, which from spack.util.executable import Executable, which
...@@ -450,7 +451,8 @@ def parent_class_modules(cls): ...@@ -450,7 +451,8 @@ def parent_class_modules(cls):
""" """
Get list of super class modules that are all descend from spack.Package Get list of super class modules that are all descend from spack.Package
""" """
if not issubclass(cls, spack.Package) or issubclass(spack.Package, cls): if (not issubclass(cls, spack.package.Package) or
issubclass(spack.package.Package, cls)):
return [] return []
result = [] result = []
module = sys.modules.get(cls.__module__) module = sys.modules.get(cls.__module__)
...@@ -622,9 +624,9 @@ def make_stack(tb, stack=None): ...@@ -622,9 +624,9 @@ def make_stack(tb, stack=None):
for tb in stack: for tb in stack:
frame = tb.tb_frame frame = tb.tb_frame
if 'self' in frame.f_locals: if 'self' in frame.f_locals:
# Find the first proper subclass of spack.PackageBase. # Find the first proper subclass of PackageBase.
obj = frame.f_locals['self'] obj = frame.f_locals['self']
if isinstance(obj, spack.PackageBase): if isinstance(obj, spack.package.PackageBase):
break break
# we found obj, the Package implementation we care about. # we found obj, the Package implementation we care about.
......
...@@ -90,3 +90,15 @@ def test_store(mock_archive): ...@@ -90,3 +90,15 @@ def test_store(mock_archive):
except Exception: except Exception:
pkg.remove_prefix() pkg.remove_prefix()
raise raise
@pytest.mark.usefixtures('install_mockery')
def test_failing_build(mock_archive):
spec = Spec('failing-build').concretized()
for s in spec.traverse():
fake_fetchify(mock_archive.url, s.package)
pkg = spec.package
with pytest.raises(spack.build_environment.ChildError):
pkg.do_install()
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class FailingBuild(Package):
"""This package has a trivial install method that fails."""
homepage = "http://www.example.com/trivial_install"
url = "http://www.unit-test-should-replace-this-url/trivial_install-1.0.tar.gz"
version('1.0', 'foobarbaz')
def install(self, spec, prefix):
raise InstallError("Expected failure.")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment