236 lines
7.3 KiB
Bash
Executable File
236 lines
7.3 KiB
Bash
Executable File
#!/bin/bash
|
|
opt="ALL"
|
|
|
|
# Check for parameter (and validity)
|
|
if [ $# -gt 0 ]; then
|
|
if [[ $1 == "p1" || $1 == "p2" || $1 == "p3" ]]; then
|
|
opt=$1
|
|
fi
|
|
fi
|
|
|
|
################
|
|
# Part 1 Tests #
|
|
################
|
|
|
|
if [[ $opt == "p1" || $opt == "ALL" ]]; then
|
|
grade1=0
|
|
grade1max=16
|
|
echo "---IO Redirection---- ($grade1max pts)"
|
|
./test0 && grade1=`expr $grade1 "+" 3`
|
|
./test1 && grade1=`expr $grade1 "+" 3`
|
|
./test2 && grade1=`expr $grade1 "+" 3`
|
|
./test3 && grade1=`expr $grade1 "+" 2`
|
|
./test4 && grade1=`expr $grade1 "+" 2`
|
|
./test5 && grade1=`expr $grade1 "+" 2`
|
|
./test11 && grade1=`expr $grade1 "+" 1`
|
|
|
|
grade2=0
|
|
grade2max=15
|
|
echo "--- Pipes ----------- ($grade2max pts)"
|
|
./test6 && grade2=`expr $grade2 "+" 4`
|
|
./test7 && grade2=`expr $grade2 "+" 4`
|
|
./test8 && grade2=`expr $grade2 "+" 4`
|
|
./test9 && grade2=`expr $grade2 "+" 3`
|
|
|
|
grade3=0
|
|
|
|
if [[ $opt == "p1" ]]; then
|
|
grade3max=3
|
|
else
|
|
grade3max=5
|
|
fi
|
|
|
|
echo "--- Background and Zombie Processes --- ($grade3max pts)"
|
|
./test10 && grade3=`expr $grade3 "+" 3`
|
|
fi
|
|
|
|
################
|
|
# Part 2 Tests #
|
|
################
|
|
|
|
if [[ $opt == "p2" ]]; then
|
|
grade3max=2
|
|
echo "--- Zombie Processes --- ($grade3max pts)"
|
|
fi
|
|
|
|
if [[ $opt == "p2" || $opt == "ALL" ]]; then
|
|
./test_zombie && grade3=`expr $grade3 "+" 2`
|
|
|
|
grade4=0
|
|
grade4max=11
|
|
echo "--- Environment ----- ($grade4max pts)"
|
|
./test_printenv && grade4=`expr $grade4 "+" 2`
|
|
./test_setenv1 && grade4=`expr $grade4 "+" 1`
|
|
./test_setenv2 && grade4=`expr $grade4 "+" 2`
|
|
./test_unsetenv && grade4=`expr $grade4 "+" 2`
|
|
./test_source && grade4=`expr $grade4 "+" 4`
|
|
|
|
grade5=0
|
|
grade5max=2
|
|
echo "--- Parsing Words and Special Chars --- ($grade5max pts)"
|
|
./test_parsing1 && grade5=`expr $grade5 "+" 1`
|
|
./test_parsing2 && grade5=`expr $grade5 "+" 1`
|
|
|
|
grade6=0
|
|
grade6max=5
|
|
echo "--- cd --- ($grade6max pts)"
|
|
./test_cd1 && grade6=`expr $grade6 "+" 1`
|
|
./test_cd2 && grade6=`expr $grade6 "+" 1`
|
|
./test_cd3 && grade6=`expr $grade6 "+" 1`
|
|
./test_cd4 && grade6=`expr $grade6 "+" 1`
|
|
./test_cd5 && grade6=`expr $grade6 "+" 1`
|
|
|
|
grade7=0
|
|
grade7max=5
|
|
echo "--- Quotes and Escape Chars --- ($grade7max pts)"
|
|
./test_quotes1 && grade7=`expr $grade7 "+" 1`
|
|
./test_quotes2 && grade7=`expr $grade7 "+" 1`
|
|
./test_quotes3 && grade7=`expr $grade7 "+" 1`
|
|
./test_escape && grade7=`expr $grade7 "+" 2`
|
|
|
|
grade8=0
|
|
grade8max=10
|
|
echo "--- Subshell -- ($grade8max pts)"
|
|
./test_subshell && grade8=`expr $grade8 "+" 10`
|
|
fi
|
|
|
|
################
|
|
# Part 3 Tests #
|
|
################
|
|
|
|
if [[ $opt == "p3" || $opt == "ALL" ]]; then
|
|
grade9=0
|
|
grade9max=3
|
|
echo "--- Environment Variable Expansion --- ($grade9max pts)"
|
|
./test_envExpand1 && grade9=`expr $grade9 "+" 2`
|
|
./test_envExpand2 && grade9=`expr $grade9 "+" 1`
|
|
|
|
grade10=0
|
|
grade10max=14
|
|
echo "--- Wildcarding --- ($grade10max pts)"
|
|
./test_wildcards1 && grade10=`expr $grade10 "+" 2`
|
|
./test_wildcards2 && grade10=`expr $grade10 "+" 1`
|
|
./test_wildcards3 && grade10=`expr $grade10 "+" 1`
|
|
./test_wildcards4 && grade10=`expr $grade10 "+" 2`
|
|
./test_wildcards5 && grade10=`expr $grade10 "+" 2`
|
|
./test_wildcards6 && grade10=`expr $grade10 "+" 4`
|
|
./test_wildcards7 && grade10=`expr $grade10 "+" 2`
|
|
|
|
grade11=0
|
|
grade11max=4
|
|
echo "--- Tilde Expansion -- ($grade11max pts)"
|
|
./test_tilde && grade11=`expr $grade11 "+" 4`
|
|
|
|
grade12=0
|
|
grade12max=10
|
|
echo "--- Robustness -- ($grade12max pts)"
|
|
./test_robustness && grade12=`expr $grade12 "+" 10`
|
|
fi
|
|
|
|
############################
|
|
# Computing Correct Totals #
|
|
############################
|
|
|
|
if [[ $opt == "ALL" ]]; then
|
|
total=`expr $grade1 + $grade2 + $grade3 + $grade4 + $grade5 + \
|
|
$grade6 + $grade7 + $grade8 + $grade9 + $grade10 + $grade11 + $grade12`
|
|
|
|
totalmax=`expr $grade1max + $grade2max + $grade3max + $grade4max \
|
|
+ $grade5max + $grade6max + $grade7max + $grade8max \
|
|
+ $grade9max + $grade10max + $grade11max + $grade12max`
|
|
else
|
|
if [[ $opt == "p1" ]]; then
|
|
total=`expr $grade1 + $grade2 + $grade3`
|
|
|
|
totalmax=`expr $grade1max + $grade2max + $grade3max`
|
|
else
|
|
if [[ $opt == "p2" ]]; then
|
|
total=`expr $grade3 + $grade4 + $grade5 + \
|
|
$grade6 + $grade7 + $grade8`
|
|
|
|
totalmax=`expr $grade3max + $grade4max + $grade5max + \
|
|
$grade6max + $grade7max + $grade8max`
|
|
else # must be p3
|
|
total=`expr $grade9 + $grade10 + $grade11 + $grade12`
|
|
totalmax=`expr $grade9max + $grade10max + $grade11max + $grade12max`
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
#########################
|
|
# Reporting Final Score #
|
|
#########################
|
|
|
|
# Header #
|
|
|
|
echo "-------------------------------------------------"
|
|
if [[ $opt == "ALL" ]]; then
|
|
echo "User: $USER, CS252: Lab 3 - All Tests"
|
|
else
|
|
if [[ $opt == "p1" ]]; then
|
|
echo "User: $USER, CS252: Lab 3 - Part 1 Tests"
|
|
else
|
|
if [[ $opt == "p2" ]]; then
|
|
echo "User: $USER, CS252: Lab 3 - Part 2 Tests"
|
|
else # must be p3
|
|
echo "User: $USER, CS252: Lab 3 - Part 3 Tests"
|
|
fi
|
|
fi
|
|
fi
|
|
echo "-------------------------------------------------"
|
|
|
|
# Scores for Part 1 #
|
|
|
|
if [[ $opt == "ALL" || $opt == "p1" ]]; then
|
|
printf "IO Redirection: %-3d%s%-3d\n" $grade1 " of " $grade1max
|
|
printf "Pipes: %-3d%s%-3d\n" $grade2 " of " $grade2max
|
|
if [[ $opt == "ALL" ]]; then
|
|
printf "Background and Zombie: %-3d%s%-3d\n" $grade3 " of " $grade3max
|
|
else
|
|
printf "Background: %-3d%s%-3d\n" $grade3 " of " $grade3max
|
|
fi
|
|
fi
|
|
|
|
# Scores for Part 2 #
|
|
|
|
if [[ $opt == "p2" || $opt == "ALL" ]]; then
|
|
if [[ $opt == "p2" ]]; then
|
|
printf "Zombie: %-3d%s%-3d\n" $grade3 " of " $grade3max
|
|
fi
|
|
printf "Environment: %-3d%s%-3d\n" $grade4 " of " $grade4max
|
|
printf "Words and Special Chars: %-3d%s%-3d\n" $grade5 " of " $grade5max
|
|
printf "cd: %-3d%s%-3d\n" $grade6 " of " $grade6max
|
|
printf "Quotes and Escape Chars: %-3d%s%-3d\n" $grade7 " of " $grade7max
|
|
printf "Subshell: %-3d%s%-3d\n" $grade8 " of " $grade8max
|
|
fi
|
|
|
|
# Scores for Part 3 #
|
|
|
|
if [[ $opt == "p3" || $opt == "ALL" ]]; then
|
|
printf "Env Variable Expansion: %-3d%s%-3d\n" $grade9 " of " $grade9max
|
|
printf "Wildcarding: %-3d%s%-3d\n" $grade10 " of " $grade10max
|
|
printf "Tilde Expansion: %-3d%s%-3d\n" $grade11 " of " $grade11max
|
|
printf "Robustness: %-3d%s%-3d\n" $grade12 " of " $grade12max
|
|
fi
|
|
|
|
# Footer + Total Score #
|
|
|
|
echo "--------------------------------------------------"
|
|
printf "Total: %-3d%s%-3d\n" $total " of " $totalmax
|
|
|
|
# Write Total Score to File #
|
|
|
|
if [[ $opt == "ALL" ]]; then
|
|
printf "Total: %-3d%s%-3d\n" $total " of " $totalmax > testall.out
|
|
else
|
|
if [[ $opt == "p1" ]]; then
|
|
printf "Part 1 Total: %-3d%s%-3d\n" $total " of " $totalmax > testall.out
|
|
else
|
|
if [[ $opt == "p2" ]]; then
|
|
printf "Part 2 Total: %-3d%s%-3d\n" $total " of " $totalmax > testall.out
|
|
else
|
|
printf "Part 3 Total: %-3d%s%-3d\n" $total " of " $totalmax > testall.out
|
|
fi
|
|
fi
|
|
fi
|