15a2d71c5SMasatake YAMATO#!/bin/sh 293c4b724Sviccuad# 393c4b724Sviccuad# Copyright (C) 2014 Masatake YAMATO 493c4b724Sviccuad# 593c4b724Sviccuad# This program is free software; you can redistribute it and/or modify 693c4b724Sviccuad# it under the terms of the GNU General Public License as published by 7*7963e4b9Sviccuad# the Free Software Foundation; either version 2 of the License, or 893c4b724Sviccuad# (at your option) any later version. 993c4b724Sviccuad# 1093c4b724Sviccuad# This program is distributed in the hope that it will be useful, 1193c4b724Sviccuad# but WITHOUT ANY WARRANTY; without even the implied warranty of 1293c4b724Sviccuad# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1393c4b724Sviccuad# GNU General Public License for more details. 1493c4b724Sviccuad# 1593c4b724Sviccuad# You should have received a copy of the GNU General Public License 1693c4b724Sviccuad# along with this program. If not, see <http://www.gnu.org/licenses/>. 1793c4b724Sviccuad 185a2d71c5SMasatake YAMATOTINST_ROOT= 195a2d71c5SMasatake YAMATO 205a2d71c5SMasatake YAMATOERROR () 215a2d71c5SMasatake YAMATO{ 22d4ac6ddaSMasatake YAMATO local status=$1 23d4ac6ddaSMasatake YAMATO local msg=$2 245a2d71c5SMasatake YAMATO shift 2 255a2d71c5SMasatake YAMATO echo "$msg" 1>&2 265a2d71c5SMasatake YAMATO exit $status 275a2d71c5SMasatake YAMATO} 285a2d71c5SMasatake YAMATO 295a2d71c5SMasatake YAMATOMSG_title() 305a2d71c5SMasatake YAMATO{ 315a2d71c5SMasatake YAMATO printf '%-70s' "${1}" 325a2d71c5SMasatake YAMATO} 335a2d71c5SMasatake YAMATO 345a2d71c5SMasatake YAMATOMSG_passed() 355a2d71c5SMasatake YAMATO{ 365a2d71c5SMasatake YAMATO echo passed 375a2d71c5SMasatake YAMATO} 385a2d71c5SMasatake YAMATO 395a2d71c5SMasatake YAMATOMSG_failed() 405a2d71c5SMasatake YAMATO{ 415a2d71c5SMasatake YAMATO echo failed 425a2d71c5SMasatake YAMATO} 435a2d71c5SMasatake YAMATO 445a2d71c5SMasatake YAMATOMSG_done() 455a2d71c5SMasatake YAMATO{ 465a2d71c5SMasatake YAMATO echo done 475a2d71c5SMasatake YAMATO} 485a2d71c5SMasatake YAMATO 495a2d71c5SMasatake YAMATO 505a2d71c5SMasatake YAMATOT_existing() 515a2d71c5SMasatake YAMATO{ 525a2d71c5SMasatake YAMATO local f=$1 535a2d71c5SMasatake YAMATO shift 545a2d71c5SMasatake YAMATO local op 555a2d71c5SMasatake YAMATO local r=0 565a2d71c5SMasatake YAMATO 575a2d71c5SMasatake YAMATO for op in "$@"; do 585a2d71c5SMasatake YAMATO case "$op" in 595a2d71c5SMasatake YAMATO -d) 605a2d71c5SMasatake YAMATO MSG_title "The existence of $f as a directory" 615a2d71c5SMasatake YAMATO ;; 625a2d71c5SMasatake YAMATO -f) 635a2d71c5SMasatake YAMATO MSG_title "The existence of $f as an file" 645a2d71c5SMasatake YAMATO ;; 655a2d71c5SMasatake YAMATO -r) 665a2d71c5SMasatake YAMATO MSG_title "The read mode of $f" 675a2d71c5SMasatake YAMATO ;; 685a2d71c5SMasatake YAMATO -x) 695a2d71c5SMasatake YAMATO MSG_title "The existence of $f as an executable" 705a2d71c5SMasatake YAMATO ;; 715a2d71c5SMasatake YAMATO *) 725a2d71c5SMasatake YAMATO MSG_title "The existence of $f with $op operator" 735a2d71c5SMasatake YAMATO ;; 745a2d71c5SMasatake YAMATO esac 755a2d71c5SMasatake YAMATO if [ $op ${TINST_ROOT}/$f ]; then 765a2d71c5SMasatake YAMATO MSG_passed 775a2d71c5SMasatake YAMATO else 785a2d71c5SMasatake YAMATO MSG_failed 795a2d71c5SMasatake YAMATO r=$(( r + 1 )) 805a2d71c5SMasatake YAMATO fi 815a2d71c5SMasatake YAMATO done 825a2d71c5SMasatake YAMATO return ${r} 835a2d71c5SMasatake YAMATO} 845a2d71c5SMasatake YAMATO 855a2d71c5SMasatake YAMATOprepare() 865a2d71c5SMasatake YAMATO{ 87d4ac6ddaSMasatake YAMATO local srcdir=$1 88d4ac6ddaSMasatake YAMATO local root=$2 895a2d71c5SMasatake YAMATO 905a2d71c5SMasatake YAMATO 915a2d71c5SMasatake YAMATO MSG_title "Preparing installation tests" 925a2d71c5SMasatake YAMATO 93d4ac6ddaSMasatake YAMATO if ! [ -e ${srcdir}/configure ]; then 945a2d71c5SMasatake YAMATO ERROR 2 "cannot find configure script" 955a2d71c5SMasatake YAMATO fi 965a2d71c5SMasatake YAMATO 97d4ac6ddaSMasatake YAMATO mkdir -p "$root" 985a2d71c5SMasatake YAMATO 99d4ac6ddaSMasatake YAMATO if ! [ -d "$root" ]; then 100d4ac6ddaSMasatake YAMATO ERROR 2 "failed in directory creation: $roo" 1015a2d71c5SMasatake YAMATO fi 1025a2d71c5SMasatake YAMATO 1035a2d71c5SMasatake YAMATO rm Makefile 1045a2d71c5SMasatake YAMATO 105d4ac6ddaSMasatake YAMATO if ! ${srcdir}/configure --prefix=$root > /dev/null; then 106d4ac6ddaSMasatake YAMATO ERROR 2 "failed in running configure script $root" 1075a2d71c5SMasatake YAMATO fi 1085a2d71c5SMasatake YAMATO 1095a2d71c5SMasatake YAMATO if ! [ -e Makefile ]; then 1105a2d71c5SMasatake YAMATO ERROR 2 "cannot find Makefile" 1115a2d71c5SMasatake YAMATO fi 1125a2d71c5SMasatake YAMATO 1135a2d71c5SMasatake YAMATO if ! make > /dev/null; then 1145a2d71c5SMasatake YAMATO ERROR 2 "failed in building ctags" 1155a2d71c5SMasatake YAMATO fi 1165a2d71c5SMasatake YAMATO 1175a2d71c5SMasatake YAMATO if ! make install > /dev/null; then 1185a2d71c5SMasatake YAMATO ERROR 2 "failed in installing ctags" 1195a2d71c5SMasatake YAMATO fi 1205a2d71c5SMasatake YAMATO 1215a2d71c5SMasatake YAMATO MSG_done 1225a2d71c5SMasatake YAMATO return 0 1235a2d71c5SMasatake YAMATO} 1245a2d71c5SMasatake YAMATO 1255a2d71c5SMasatake YAMATOcleanup() 1265a2d71c5SMasatake YAMATO{ 1275a2d71c5SMasatake YAMATO MSG_title "Cleanup installation tests" 1285a2d71c5SMasatake YAMATO MSG_done 1295a2d71c5SMasatake YAMATO return 0 1305a2d71c5SMasatake YAMATO} 1315a2d71c5SMasatake YAMATO 1325a2d71c5SMasatake YAMATOcheck() 1335a2d71c5SMasatake YAMATO{ 1345a2d71c5SMasatake YAMATO T_existing /bin/ctags -f -x 1355a2d71c5SMasatake YAMATO T_existing /bin/readtags -f -x 1365a2d71c5SMasatake YAMATO 1375a2d71c5SMasatake YAMATO T_existing /share/man/man1/ctags.1 -f -r 1385a2d71c5SMasatake YAMATO} 1395a2d71c5SMasatake YAMATO 1405a2d71c5SMasatake YAMATOmain() 1415a2d71c5SMasatake YAMATO{ 142d4ac6ddaSMasatake YAMATO local srcdir 1435a2d71c5SMasatake YAMATO local root 1445a2d71c5SMasatake YAMATO local status 1455a2d71c5SMasatake YAMATO 146d4ac6ddaSMasatake YAMATO if [ $# = 2 ]; then 147d4ac6ddaSMasatake YAMATO srcdir=$1 148d4ac6ddaSMasatake YAMATO root=$2 149d4ac6ddaSMasatake YAMATO shift 2 1505a2d71c5SMasatake YAMATO else 15142067cf8SK.Takata ERROR 2 "A installation root must be given as the first argument" 1525a2d71c5SMasatake YAMATO fi 1535a2d71c5SMasatake YAMATO 154d4ac6ddaSMasatake YAMATO prepare "${srcdir}" "${root}" 1555a2d71c5SMasatake YAMATO 1565a2d71c5SMasatake YAMATO TINST_ROOT=${root} 1575a2d71c5SMasatake YAMATO check 1585a2d71c5SMasatake YAMATO status=$? 1595a2d71c5SMasatake YAMATO 1605a2d71c5SMasatake YAMATO cleanup "${root}" 1615a2d71c5SMasatake YAMATO 1625a2d71c5SMasatake YAMATO return $status 1635a2d71c5SMasatake YAMATO} 1645a2d71c5SMasatake YAMATO 1655a2d71c5SMasatake YAMATOmain "$@" 166