#!/bin/bash

#
# Copyright (C) 2014 Sami Kerola <kerolasa@iki.fi>
#
# This file is part of util-linux.
#
# This file 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 of the License, or
# (at your option) any later version.
#
# This file 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.
#
TS_TOPDIR="${0%/*}/../.."
TS_DESC="basic check"

. $TS_TOPDIR/functions.sh
ts_init "$*"

ts_check_test_command "$TS_CMD_RENAME"
ts_cd "$TS_OUTDIR"

touch rename_basic.{1..3}
$TS_CMD_RENAME -v basic test rename_basic.? >> $TS_OUTPUT 2>&1

for i in rename_basic.?; do
	echo "what is $i doing here?" >> $TS_OUTPUT
done
for i in rename_test.{1..3}; do
	if [ ! -f $i ]; then
		echo "file $i is missing" >> $TS_OUTPUT
	else
		rm -f $i
	fi
done

ts_finalize
