diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2016-05-11 09:42:00 -0700 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2016-05-11 09:42:00 -0700 |
commit | 9cf5404bb75daf914dcf086872e3044ce79800c7 (patch) | |
tree | 119ddce326abd488a20c0aed29decf4fdc180725 /lib | |
parent | 0216fa2a00f3e438ec2cb3182c8b347f1038ae10 (diff) | |
parent | eba264fcd0701b2172dc39d2616cb2f90b4d8578 (diff) | |
download | spack-9cf5404bb75daf914dcf086872e3044ce79800c7.tar.gz spack-9cf5404bb75daf914dcf086872e3044ce79800c7.tar.bz2 spack-9cf5404bb75daf914dcf086872e3044ce79800c7.tar.xz spack-9cf5404bb75daf914dcf086872e3044ce79800c7.zip |
Merge pull request #937 from davydden/features/unit_tests
Features/package_test
Diffstat (limited to 'lib')
-rw-r--r-- | lib/spack/spack/package_test.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/lib/spack/spack/package_test.py b/lib/spack/spack/package_test.py new file mode 100644 index 0000000000..9c15e3f5d0 --- /dev/null +++ b/lib/spack/spack/package_test.py @@ -0,0 +1,66 @@ +############################################################################## +# Copyright (c) 2016, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Written 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 General Public License (as published by +# the Free Software Foundation) version 2.1 dated 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 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 * +import os + + +def compile_c_and_execute(source_file, include_flags, link_flags): + """Compile C @p source_file with @p include_flags and @p link_flags, + run and return the output. + """ + cc = which('cc') + flags = include_flags + flags.extend([source_file]) + cc('-c', *flags) + name = os.path.splitext(os.path.basename(source_file))[0] + cc('-o', "check", "%s.o" % name, + *link_flags) + + check = Executable('./check') + return check(return_output=True) + + +def compare_output(current_output, blessed_output): + """Compare blessed and current output of executables.""" + if not (current_output == blessed_output): + print "Produced output does not match expected output." + print "Expected output:" + print '-' * 80 + print blessed_output + print '-' * 80 + print "Produced output:" + print '-' * 80 + print current_output + print '-' * 80 + raise RuntimeError("Ouput check failed.", + "See spack_output.log for details") + + +def compare_output_file(current_output, blessed_output_file): + """Same as above, but when the blessed output is given as a file.""" + with open(blessed_output_file, 'r') as f: + blessed_output = f.read() + + compare_output(current_output, blessed_output) |