Skip to content

Instantly share code, notes, and snippets.

@jamesalbert
Last active May 2, 2017 05:01
Show Gist options
  • Save jamesalbert/7d809b78ce4c4421db9594cdba0af048 to your computer and use it in GitHub Desktop.
Save jamesalbert/7d809b78ce4c4421db9594cdba0af048 to your computer and use it in GitHub Desktop.
test hw3 part 2
#!/usr/bin/env bats
if [ -z $TRASH ]; then
echo '$TRASH must be defined'
exit 1
fi
trashdir=$TRASH
function finish {
trash > /dev/null
rm -rf testdir* testfile*
}
trap finish EXIT
create_trash () {
echo "creating 1000 files in $1"
for i in `seq 1 1000`
do
dd if=/dev/zero of="$1"/testfile_"$i"_byte.trash bs=1 count=1 > /dev/null 2>&1
done
}
@test "srm shuffled files and directories mixed" {
rm -rf $trashdir/*
for i in `seq 1 1000`
do
mkdir testdir"$i"
done
create_trash .
trash=(testdir* testfile*)
echo "srm `shuf -e ${trash[@]} | tr '\n' ' '`" | sh
echo "$(ls -l $trashdir | wc -l)"
[ $(ls -l $trashdir | wc -l) -eq 2001 ]
}
@test "lsrm shuffled files and directories mixed" {
[ $(lsrm | wc -l) -eq 2001 ]
}
@test "durm shuffled files and directories mixed" {
echo `durm` | grep "4156 kilobytes" | grep "4000 kilobytes"
[ "$?" -eq 0 ]
}
@test "unrm shuffled files and directories mixed" {
trash=($(find $trashdir/testdir* $trashdir/testfile* -printf "%f\n"))
echo "unrm `shuf -e ${trash[@]} | tr '\n' ' '`" | sh
[ "$?" -eq 0 ]
[ $(lsrm | wc -l) -eq 1 ]
echo "stat --printf='' $(echo testfile_{`seq 1 1000 | tr '\n' ', ' | sed 's/.$//'`}_byte.trash) 2>/dev/null" | sh
[ "$?" -eq 0 ]
echo "stat --printf='' $(echo testdir{`seq 1 1000 | tr '\n' ', ' | sed 's/.$//'`}) 2>/dev/null" | sh
[ "$?" -eq 0 ]
}
@test "trash shuffled files and directories mixed" {
trash=(testdir* testfile*)
echo "srm `shuf -e ${trash[@]} | tr '\n' ' '`" | sh
trash
[ $(lsrm | wc -l) -eq 1 ]
}
@test "srm a single file" {
echo "hello" > testfile
srm testfile
[ $(ls -l $trashdir | wc -l) -eq 2 ]
}
@test "lsrm a single file" {
[ $(lsrm | wc -l) -eq 2 ]
}
@test "durm a single file" {
echo `durm`
echo `durm` | grep "0 kilobytes" | grep "156 kilobytes"
[ "$?" -eq 0 ]
}
@test "unrm a single file" {
unrm testfile
[ "$?" -eq 0 ]
[ $(lsrm | wc -l) -eq 1 ]
[ -f testfile ]
}
@test "trash a single file" {
srm testfile
trash
[ $(lsrm | wc -l) -eq 1 ]
[ ! -f testfile ]
}
@test "srm a single directory" {
mkdir testdir
create_trash testdir
srm testdir
[ -d $trashdir/testdir ]
[ $(ls -l $trashdir/testdir | wc -l) -eq 1001 ]
}
@test "lsrm a single directory" {
[ $(lsrm | wc -l) -eq 2 ]
}
@test "durm a single directory" {
echo `durm`
echo `durm` | grep "80 kilobytes" | grep "236 kilobytes"
[ "$?" -eq 0 ]
}
@test "unrm a single directory" {
unrm testdir
[ "$?" -eq 0 ]
[ $(lsrm | wc -l) -eq 1 ]
[ -d testdir ]
}
@test "trash a single directory" {
srm testdir
trash
[ $(lsrm | wc -l) -eq 1 ]
[ ! -d testdir ]
}
@test "srm multiple files" {
create_trash .
srm testfile*
[ $(ls -l $trashdir | wc -l) -eq 1001 ]
}
@test "lsrm multiple files" {
[ $(lsrm | wc -l) -eq 1001 ]
}
@test "durm multiple files" {
echo `durm`
echo `durm` | grep "0 kilobytes" | grep "156 kilobytes"
[ "$?" -eq 0 ]
}
@test "unrm multiple files" {
unrm testfile_{1,500,995}_byte.trash
[ "$?" -eq 0 ]
[ $(lsrm | wc -l) -eq 998 ]
[ -f testfile_1_byte.trash ]
[ -f testfile_500_byte.trash ]
[ -f testfile_995_byte.trash ]
}
@test "trash multiple files" {
srm testfile_{1,500,995}_byte.trash
trash
[ $(lsrm | wc -l) -eq 1 ]
}
@test "srm multiple directories" {
mkdir testdir testdir2
create_trash testdir
create_trash testdir2
srm testdir testdir2
[ $(ls -l $trashdir/testdir | wc -l) -eq 1001 ]
[ $(ls -l $trashdir/testdir | wc -l) -eq 1001 ]
}
@test "lsrm multiple directories" {
[ $(lsrm | wc -l) -eq 3 ]
}
@test "durm multiple directories" {
echo `durm`
echo `durm` | grep "160 kilobytes" | grep "316 kilobytes"
[ "$?" -eq 0 ]
}
@test "unrm multiple directories" {
unrm testdir testdir2
[ "$?" -eq 0 ]
[ $(lsrm | wc -l) -eq 1 ]
[ -d testdir ]
[ -d testdir2 ]
}
@test "trash multiple directories" {
srm testdir*
trash
[ $(lsrm | wc -l) -eq 1 ]
[ ! -d testdir ]
[ ! -d testdir2 ]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment