# t632 --- ‘co -l’ w/ writable workfile
#
# Copyright (C) 2018-2020 Thien-Thi Nguyen
#
# 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 3 of
# the License, 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, see <http://www.gnu.org/licenses/>.

. $srcdir/common
split_std_out_err no

##
# Check that "co -l" w/ writable workfile
# queries and DTRT depending on user response.
##

must 'cp `bundled_commav one` $v'
must 'co -l $w'

echo y | co -l -I $w \
    || problem 'checkout failed'

echo n | co -l -I $w \
    && problem 'checkout succeeded'

echo | co -l -I $w \
    && problem 'checkout succeeded'

##
# Exercise signal handling by sending a signal during the query.
# (This is skipped if GNU coreutils timeout(1) is not available.)
##

# TODO: Don't be lame!  Pick one:
# (a) Mimic timeout(1) w/ sh commands.
# (b) Incorporate heart of timeout(1) into ./btdt and use that.
if timeout --version 2>&1 | grep 'GNU coreutils' >/dev/null 2>&1
then
    sout=$wd/signal-handling-out-and-err
    timeout --foreground 0.42s co -l -I $w 1>$sout 2>&1
    grep 'RCS: Cleaning up' $sout \
        || problem 'incorrect signal handling'
fi

exit 0

# t632 ends here
