diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2018-05-19 00:43:16 -0700 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2018-06-24 14:21:52 -0700 |
commit | 970b558f7f44220f326a51e3f63b197305e708b1 (patch) | |
tree | 1aa0a21cd787d59ed20dfd03ff5acac6a117b67a /lib | |
parent | 175de19f2d473d8e82959d1abfe8ea25812d76c3 (diff) | |
download | spack-970b558f7f44220f326a51e3f63b197305e708b1.tar.gz spack-970b558f7f44220f326a51e3f63b197305e708b1.tar.bz2 spack-970b558f7f44220f326a51e3f63b197305e708b1.tar.xz spack-970b558f7f44220f326a51e3f63b197305e708b1.zip |
tests: add a test for `spack debug` command
Diffstat (limited to 'lib')
-rw-r--r-- | lib/spack/llnl/util/lang.py | 6 | ||||
-rw-r--r-- | lib/spack/spack/cmd/debug.py | 4 | ||||
-rw-r--r-- | lib/spack/spack/test/cmd/debug.py | 58 |
3 files changed, 66 insertions, 2 deletions
diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index de5fdc52f1..edba6e38e1 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -555,6 +555,9 @@ class Singleton(object): def __getattr__(self, name): return getattr(self.instance, name) + def __getitem__(self, name): + return self.instance[name] + def __str__(self): return str(self.instance) @@ -571,6 +574,9 @@ class LazyReference(object): def __getattr__(self, name): return getattr(self.ref_function(), name) + def __getitem__(self, name): + return self.ref_function()[name] + def __str__(self): return str(self.ref_function()) diff --git a/lib/spack/spack/cmd/debug.py b/lib/spack/spack/cmd/debug.py index 2a85be8a00..7fcbfa4212 100644 --- a/lib/spack/spack/cmd/debug.py +++ b/lib/spack/spack/cmd/debug.py @@ -76,14 +76,14 @@ def create_db_tarball(args): tarball_name = "spack-db.%s.tar.gz" % _debug_tarball_suffix() tarball_path = os.path.abspath(tarball_name) - base = os.path.basename(spack.store.root) + base = os.path.basename(str(spack.store.root)) transform_args = [] if 'GNU' in tar('--version', output=str): transform_args = ['--transform', 's/^%s/%s/' % (base, tarball_name)] else: transform_args = ['-s', '/^%s/%s/' % (base, tarball_name)] - wd = os.path.dirname(spack.store.root) + wd = os.path.dirname(str(spack.store.root)) with working_dir(wd): files = [spack.store.db._index_path] files += glob('%s/*/*/*/.spack/spec.yaml' % base) diff --git a/lib/spack/spack/test/cmd/debug.py b/lib/spack/spack/test/cmd/debug.py new file mode 100644 index 0000000000..76c81eb5a5 --- /dev/null +++ b/lib/spack/spack/test/cmd/debug.py @@ -0,0 +1,58 @@ +############################################################################## +# Copyright (c) 2013-2018, 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/spack/spack +# Please also see the NOTICE and LICENSE files 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 +############################################################################## +import os +import os.path + +from spack.main import SpackCommand +from spack.util.executable import which + +debug = SpackCommand('debug') + + +def test_create_db_tarball(tmpdir, database): + with tmpdir.as_cwd(): + debug('create-db-tarball') + + files = os.listdir(os.getcwd()) + tarball_name = files[0] + + # debug command made an archive + assert os.path.exists(tarball_name) + + # print contents of archive + tar = which('tar') + contents = tar('tzf', tarball_name, output=str) + + # DB file is included + assert 'index.json' in contents + + # spec.yamls from all installs are included + for spec in database.query(): + # externals won't have a spec.yaml + if spec.external: + continue + + spec_suffix = '%s/.spack/spec.yaml' % spec.dag_hash() + assert spec_suffix in contents |