From bea3644244b43c305346075546370d498c70572a Mon Sep 17 00:00:00 2001
From: Baruta Daniel Mihail <baruta.mihai@yahoo.com>
Date: Wed, 17 Aug 2022 00:36:40 +0200
Subject: [PATCH] General improvements

---
 checker/checker.sh |  48 ++++++++++++++++++++++++++++-----------------
 local.sh           |   9 +++++----
 src/perfect        | Bin 16872 -> 0 bytes
 3 files changed, 35 insertions(+), 22 deletions(-)
 delete mode 100755 src/perfect

diff --git a/checker/checker.sh b/checker/checker.sh
index ebb57e6..8e9b491 100755
--- a/checker/checker.sh
+++ b/checker/checker.sh
@@ -7,6 +7,8 @@ cd "$(dirname "$0")" || exit 1
 
 EXECUTABLE="../src/perfect"
 TIMEOUT_DURATION=10
+SCORE=0
+TOTAL_SCORE=0
 
 test_err()
 {
@@ -52,7 +54,6 @@ test_edge()
     return $?
 }
 
-
 setup()
 {
     pushd ../src > /dev/null || exit 1
@@ -68,31 +69,42 @@ cleanup()
 }
 
 test_fun_array=(                        \
-	test_err            "Name 1"    5   \
-	test_single         "Name 2"    5   \
-	test_multiple       "Name 3"    5   \
-	test_edge           "Name 4"    5   \
+	test_err            "Name 1"    25  \
+	test_single         "Name 2"    25  \
+	test_multiple       "Name 3"    25  \
+	test_edge           "Name 4"    25  \
 )
 
-test_all()
+run_test()
 {
-    local score=0
+    test_index="$1"
+    test_func_index=$((test_index * 3))
+    description=${test_fun_array[$((test_func_index + 1))]}
+    points=${test_fun_array[$((test_func_index + 2))]}
+    TOTAL_SCORE=$((TOTAL_SCORE + points))
+
+    echo -ne "Testing\t\t$description\t"
+    if ${test_fun_array["$test_func_index"]} ; then
+        SCORE=$((SCORE + points))
+        echo "$points/$points"
+    else
+        echo "0/$points"
+    fi
+}
 
+test_all()
+{
     for i in $(seq 0 "$((${#test_fun_array[@]} / 3 - 1))") ; do
-        test_index=$((i * 3))
-        description=${test_fun_array[$((test_index + 1))]}
-        points=${test_fun_array[$((test_index + 2))]}
-
-
-        echo -e "Testing\t\t$description"
-        if ${test_fun_array["$test_index"]} ; then
-            score=$((score + points))
-        fi
+        run_test "$i"
     done
 
-    echo -e "\nTotal: $score"
+    echo -e "\nTotal: $SCORE/$TOTAL_SCORE"
 }
 
 setup
-test_all
+if [ -z "$1" ] ; then
+    test_all
+else
+    run_test "$1"
+fi
 cleanup
diff --git a/local.sh b/local.sh
index 9b21685..e9bf98d 100755
--- a/local.sh
+++ b/local.sh
@@ -18,11 +18,11 @@ DEFAULT_REGISTRY='registry.gitlab.cs.pub.ro'
 #=============================================================================
 
 LOG_INFO() {
-    echo -e "[$(date +%F_%T)] [INFO] $1"
+    echo -e "[$(date +%FT%T)] [INFO] $1"
 }
 
 LOG_FATAL() {
-    echo -e "[$(date +%F_%T)] [${RED}FATAL${NC}] $1"
+    echo -e "[$(date +%FT%T)] [${RED}FATAL${NC}] $1"
     exit 1
 }
 
@@ -63,9 +63,10 @@ print_help() {
     echo "      --full_image_name <full_image_name> - the full name of the image (default: registry.gitlab.cs.pub.ro/<current_directory_name>:latest)"
     echo "      --use_executable <executable> - command to run inside the container (default: /bin/bash)"
     echo ""
-    echo "local.sh checker [--remove_image] [argumets_for_checker]"
+    echo "local.sh checker [--remove_image] [--use_existing_image <image_name>] [argumets_for_checker]"
     echo ""
     echo "      --remove_image - remove the checker's docker image after the run"
+    echo "      --use_existing_image - user image_name instead of building the image from current directory"
     echo "      argumets_for_checker - list of space separated arguments to be passed to the checker"
     echo ""
 }
@@ -232,7 +233,7 @@ checker_main() {
     LOG_INFO "Running checker..."
     docker run --rm \
             --mount type=bind,source="$tmpdir",target=/build \
-            "$image_name" /bin/bash /build/checker/checker.sh "${script_args[@]}"
+            "$image_name" /bin/bash -c "rm -rf /usr/local/bin/bash; /build/checker/checker.sh \"${script_args[@]}\"" # remove bash middleware script
 
     if [ -n "$remove_image" ] ; then
         LOG_INFO "Cleaning up..."
diff --git a/src/perfect b/src/perfect
deleted file mode 100755
index 6ef9600217570a331152fc51655f6fffd8ff5e68..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 16872
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
UTT1W1mF-vWwl%hR3_Ps*FPE&(IsgCw

-- 
GitLab