#!/bin/bash

set -e 
$PREPARE_CLEAN > /dev/null
$INCLUDE_FUNCS
cd $WC

tmp=$LOGDIR/014.fsvs-test.tmp
sleep 1

for filename in new-file1 ' ' new-file2 $STG_UTF8 $STG_LOC
do
	if [[ `$BINdflt st | wc -l` -ne 0 ]]
	then
		$BINdflt st
		$ERROR "status gave unexpected lines"
	fi

	touch "$filename"
	if [[ `$BINdflt st | wc -l` -ne 2 ]]
	then
		$ERROR_NB "Expect: . changed, '$filename' as new"
		$BINdflt st
		$ERROR "got something else."
	fi

	echo "     ci"
	$BINdflt ci -m "$filename-$RANDOM" -o delay=yes . > $tmp
	if [[ `grep -F "N...         0  ./$filename" < $tmp > /dev/null` ]]
	then
		cat $tmp
		$ERROR "expected '$filename' as new"
	else
		$SUCCESS "'$filename' is new"
	fi

	if [[ `tail -1 $tmp` == "committed revision"* ]]
	then
		$SUCCESS "found revision line"
	else
		cat $tmp
		$ERROR "expected 'committed revision'"
	fi

	$WC2_UP_ST_COMPARE
done


echo "delete a file"
rm $filename
if [[ `$BINdflt st $filename | wc -l` -ne 1 ]]
then
	$ERROR "$filename should be shown as removed!"
fi

if [[ `$BINdflt st | wc -l` -ne 2 ]]
then
	echo "Expect: . changed, $filename as deleted"
	$BINdflt st
	$ERROR "Doesn't match."
fi


if $BINdflt st does-not-exist-$$.$RANDOM.$RANDOM > $tmp 2>&1
then
	$ERROR "status doesn't stop on undefined entries"
fi


echo "     ci"
$BINdflt ci -m delete . > $tmp
if [[ `grep -F "D...         0  ./$filename" < $tmp > /dev/null` ]]
then
	cat $tmp
	$ERROR "expected $filename as deleted"
else
	$SUCCESS "$filename is deleted"
fi

if [[ `tail -1 $tmp` == "committed revision"* ]]
then
	$SUCCESS "found revision line"
else
	cat $tmp
	$ERROR "expected 'committed revision'"
fi

$WC2_UP_ST_COMPARE


# Test an entry with special (ASCII) characters.
$INFO "Testing with a strange filename."
#fn=`echo -e " :,;#*+?!'\t$\g%\\g()\n=\r[]\f{}"`
fn=" :,;#*+?!'\t$\g%\\g()\n=\r[]\f{}"
echo "$fn" > "$fn"
$BINq ci -m1
$WC2_UP_ST_COMPARE

