#!/bin/sh # # test-2.sh # Copyright (C) 2001 Ximian, Inc. # Written by Bradford Hovinen # # 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; either version 2, or (at your option) # any later version. # # 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 # GNU General Public License for more details. # # You should have received a copy of the GNU 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. # # Test suite, part II # # Given an archive to work with (global or per-user): # # - Destroy the entire archive forcibly (rm -rf) # - Create a new location inheriting from the default location # (the default location should be created automatically in this case) # - Sets the new location as the current one # - Stores data for a backend not contained in the new location # (this should pass the data through to default) # - Adds a backend to the new location (full containment) # - Stores data for that backend in the new location XIMIAN_ARCHIVER=${XIMIAN_ARCHIVER:-'../ximian-archiver'} function get_unused_tmpfile () { tmp_file_no=0 while [ -e "/tmp/$1-$tmp_file_no" ]; do let 'tmp_file_no=tmp_file_no+1' done echo "/tmp/$1-$tmp_file_no"; } function run_command () { input_param=$1 shift if [ "x$use_gdb" == "xyes" ]; then commands_file=`get_unused_tmpfile gdb-commands-file` echo "set args $extra_args $@ <$input_param" >$commands_file gdb ../.libs/ximian-archiver -x $commands_file rm -f $commands_file else echo "Running archiver program with the following command line:" >&2 echo "$XIMIAN_ARCHIVER $extra_args $@ <$input_param" >&2 $XIMIAN_ARCHIVER $extra_args $@ <$input_param echo fi } if [ "x$1" == "x" ]; then echo "Usage: test-2.sh --global|--per-user [--gdb]" exit 1 fi for test_option; do case "$test_option" in --global) extra_args="--global" archive_dir=/usr/share/ximian-config ;; --per-user) extra_args="" archive_dir=$HOME/.gnome/ximian-config ;; --gdb) use_gdb=yes ;; *) echo "Error -- invalid option: $test_option" exit 1 esac done if [ -d $archive_dir ]; then mv $archive_dir "$archive_dir-backup" fi ############################################################################## # Test proper ############################################################################## # Test 1: Creating a new location run_command /dev/null --add-location --parent=default --location=Boston-Office run_command /dev/null --change-location --location=Boston-Office # Test 2: Storing data that should "pass through" to the parent archiver_test_data_file1=`get_unused_tmpfile ximian-archiver-test-data`; cat >$archiver_test_data_file1 < #111128 #796dff vertical 0 /home/hovinen/media/Propaganda/Vol3/9a.jpg ./ 172 EOF run_command $archiver_test_data_file1 \ --store --backend=background-properties-capplet # Test 3: Adding a backend (full containment) and storing data that # should be stored in the child location run_command /dev/null --add-backend --full \ --backend=keyboard-properties-capplet archiver_test_data_file2=`get_unused_tmpfile ximian-archiver-test-data`; cat >$archiver_test_data_file2 < 255 0 0 EOF run_command $archiver_test_data_file2 \ --store --backend=keyboard-properties-capplet # Test 5: Retrieve the background properties data previously stored # and compare it with the data we have here to see if everything is ok archiver_test_data_file3=`get_unused_tmpfile ximian-archiver-test-data` run_command /dev/null --rollback --show --last \ --backend=background-properties-capplet \ >$archiver_test_data_file3 ############################################################################## # Results check ############################################################################## echo -n "Checking whether default location was created properly..." if [ -d "$archive_dir/default" ]; then echo "yes -- good" else echo "no -- error" fi echo -n "Checking whether derived location was created properly..." if [ -d "$archive_dir/Boston-Office" ]; then echo "yes -- good" else echo "no -- error" fi echo -n "Checking whether the XML data retrieved match the XML data given..." differences_file=`get_unused_tmpfile differences` diff -u $archiver_test_data_file3 $archiver_test_data_file1 >$differences_file if [ ! -s $differences_file ]; then echo "yes -- good" else echo "no -- error" echo "Differences are as follows:" cat $differences_file echo fi rm -f $differences_file ############################################################################## # Putting the results together ############################################################################## rm -f $archiver_test_data_file1 rm -f $archiver_test_data_file2 rm -f $archiver_test_data_file3 results_dir="ximian-config-results-`date +%Y%m%d`" results_dir=`get_unused_tmpfile $results_dir` mkdir $results_dir (cd $archive_dir && tar cf - *) | (cd $results_dir && tar xf -) rm -rf $archive_dir if [ -d "$archive_dir-backup" ]; then mv "$archive_dir-backup" $archive_dir fi echo echo "Test complete" echo "Resulting archive data in $results_dir"