source: trunk/test/common_defs.sh.in @ 2517

Last change on this file since 2517 was 2517, checked in by Peter, 10 years ago

use common_defs in documentation_test. Change name to doxygen_test to avoid filename conflict

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 4.0 KB
Line 
1# @configure_input@
2# $Id: common_defs.sh.in 2517 2011-07-11 13:58:16Z peter $
3
4# Copyright (C) 2009, 2010, 2011 Peter Johansson
5#
6# This file is part of the yat library, http://dev.thep.lu.se/yat
7#
8# The yat library is free software; you can redistribute it
9# and/or modify it under the terms of the GNU General Public License as
10# published by the Free Software Foundation; either version 3 of the
11# License, or (at your option) any later version.
12#
13# The yat library is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16# General Public License for more details.
17#
18# You should have received a copy of the GNU General Public License
19# along with yat. If not, see <http://www.gnu.org/licenses/>.
20
21
22# function copied from GNU Automake 1.10.2
23#
24# is_newest FILE FILES
25# --------------------
26# Return false if any file in FILES is newer than FILE.
27# Resolve ties in favor of FILE.
28is_newest ()
29{
30  test x`find "$@" -newer "$1"` = x
31}
32
33#
34#
35bootstrap ()
36{
37    @MKDIR_P@ m4
38    autoreconf -siv && true
39    res=$?
40    case $res in
41        0)
42            :;;
43        63)
44            exit 77;;
45        *)
46            exit $res;;
47    esac
48}
49
50# Usage: run PROG EXPECTED_EXITCODE [OPTION]...
51run ()
52{
53    test $# -ge 2 || exit 1
54    foo_prog=$1
55    shift
56    expected_exitcode=$1
57    shift
58    exitcode=0
59    $foo_prog ${1+"$@"} > stdout 2>stderr || exitcode=$?
60    cat stderr >&2
61    cat stdout
62    test $exitcode = $expected_exitcode || exit 1
63}
64
65me=$0
66
67echo "=== Running $me ==="
68
69# if required tool is not available, exit 77 to skip test
70if test -n "$required"; then
71  for tool in $required; do
72    case $tool in
73      automake)
74      echo "$me: running $tool --version"
75      ($tool --version) || exit 77;
76      # skip test if automake older than v1.10
77      version_am=`$tool --version | head -n 1 | cut -f 2 -d ')'`
78      ver_major=`echo ${version_am} | cut -f 1 -d '.'`
79      test ${ver_major} -ge 1 || exit 77
80      ver_minor=`echo ${version_am} | cut -f 2 -d '.'`
81      test ${ver_major} -gt 1 || test ${ver_minor} -ge 10 || exit 77
82      ;;
83      libtool)
84      # GNU libtool comes as glibtool on Mac OS
85      (echo "$me: running libtool --version" && libtool --version) || \
86      (echo "$me: running glibtool --version" && glibtool --version) || exit 77
87      ;;
88      static)
89      if (test "x@enable_static@" = "xno"); then
90        echo static libyat disabled;
91        exit 77;
92      fi
93      ;;
94      *)
95      echo "$me: running $tool --version"
96      ($tool --version) || exit 77
97    esac
98  done
99fi
100 
101# some defs we need in tests
102test_dir=`echo $me.dir | sed -e 's,.*[\\/],,'`
103test_dir="testSubDir/$test_dir"
104abs_top_builddir=@abs_top_builddir@
105abs_top_srcdir=@abs_top_srcdir@
106move_if_change=@abs_top_srcdir@/build_support/move-if-change
107have_doxygen="@have_doxygen@"
108
109# user is always right
110test -z "$DOXYGEN" && DOXYGEN="@DOXYGEN@"
111
112rm -rf $test_dir
113@MKDIR_P@ --verbose $test_dir
114
115cd $test_dir
116
117if (echo "$required" | grep autoconf > /dev/null); then
118echo "creating configure.ac"
119cat > configure.ac <<EOF
120AC_INIT([hello],[1.0])
121AC_CONFIG_SRCDIR([hello.cc])
122AM_INIT_AUTOMAKE([foreign])
123AC_CONFIG_MACRO_DIR([m4])
124AC_LANG(C++)
125AC_PROG_CXXCPP
126AC_PROG_CXX
127EOF
128if (echo "$required" | grep libtool > /dev/null); then
129echo AC_PROG_LIBTOOL >> configure.ac
130fi
131
132
133echo "creating Makefile.am"
134cat > Makefile.am <<EOF
135ACLOCAL_AMFLAGS = -I m4 -I ${abs_top_srcdir}/m4 --install
136AM_CPPFLAGS = \$(YAT_CPPFLAGS)
137AM_CXXFLAGS = \$(YAT_CXXFLAGS)
138LDADD = \$(YAT_LDADD)
139bin_PROGRAMS = hello
140TESTS = hello
141hello_SOURCES = hello.cc
142EOF
143
144echo "creating hello.cc"
145cat > hello.cc <<EOF
146#include <yat/utility/Vector.h>
147#include <yat/utility/version.h>
148#include <algorithm>
149#include <iostream>
150#include <string>
151int main(void)
152{
153  using namespace theplu::yat;
154  if (utility::version()!="@VERSION@") {
155    std::cerr << "Incorrect version of linked libyat\n";
156    return 1;
157  }
158  // testing something with gsl
159  utility::Vector v(10);
160  v.resize(120); 
161  // testing something with boost
162  std::copy(v.begin(), v.begin()+10, v.begin()+10);
163  return 0;
164}
165EOF
166fi #end of creation of autotool files
167
168# turn on shell traces
169set -x
Note: See TracBrowser for help on using the repository browser.