#!/bin/bash

set -e

DIR=$(pwd)
TESTDIR=tests

. scripts/loadxpcomp.sh -q

xpcomp -u

rm -Rf $TESTDIR/remove_*
mkdir $TESTDIR/remove_{expect,result,diff}

cd "$SCRIPTDIR"
for script in $(ls [a-z]*)
do
    source ./$script
done
cd $DIR

for cmd in $(xpcomp -p |cut -d\  -f2- |tr ' ' '\n' |sort -u)
do
    optcomplete -p $cmd > $TESTDIR/remove_expect/_$cmd
done

while test $RANDOM -gt 1000
do
    for cmd in $(xpcomp -p |cut -d\  -f2- |tr ' ' '\n' |sort -u)
    do
	if test $RANDOM -lt 16000; then
	    optcomplete -r $cmd
	    #echo optcomplete -r $cmd
	else
	    for opt in $(optcomplete -p $cmd |sed -n 's/^optcomplete .* \([a-zA-Z]\+\)$/\1/p')
	    do
		if test $RANDOM -lt 16000; then
		    optcomplete -r $cmd $opt
		fi
	    done
	fi
    done

    cd $SCRIPTDIR
    for script in $(ls [a-z]*)
    do
	if test $RANDOM -lt 16000; then
	    source ./$script
	    #echo source ./$script
	fi
    done
    cd $DIR

    xpcomp -w /tmp/cache

    cd $TESTDIR
    for cmd in $(xpcomp -p |cut -d\  -f2- |tr ' ' '\n' |sort -u)
    do
    	optcomplete -p $cmd > remove_result/_$cmd
    done
    
    for file in $(ls remove_result)
    do
	diff -l -r remove_expect/$file remove_result/$file > remove_diff/$file || true
	if test ! -s remove_diff/$file; then
	    rm -f remove_diff/$file
	else
	   
	    if test -n "$(grep '^>' remove_diff/$file )"; then
		echo $file is suspicious
		return
	    fi
	fi
    done
    cd $DIR
done
xpcomp -X



