#!/bin/bash
MAVKA="$1"
if [ -z "$MAVKA" ]; then
echo "Usage: $0 <path_to_mavka_executable>"
exit 1
fi
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m'
passed=0
failed=0
# Create a safe temporary file for capturing logs without pipe hangs
TEMP_OUT=$(mktemp)
# Clean up the temp file automatically if the script is interrupted or exits
trap 'rm -f "$TEMP_OUT"' EXIT
run_test() {
test_file="$1"
echo -n "$test_file: "
# Direct file redirection avoids the slow Bash $(...) pipe bottleneck
if [[ "$MAVKA" =~ \.[eE][xX][eE]$ ]]; then
wine "$MAVKA" "$test_file" > "$TEMP_OUT" 2>&1
else
"$MAVKA" "$test_file" > "$TEMP_OUT" 2>&1
fi
status=$?
# Read the output out of the file into the variable natively
output=$(cat "$TEMP_OUT")
if [ $status -eq 0 ]; then
echo -e "${GREEN}УСПІХ${NC}"
((passed++))
else
echo -e "${RED}НЕВДАЧА${NC}"
echo -e "-------------------------"
echo "$output"
echo -e "-------------------------\n"
((failed++))
fi
}
run_test тестування/Число/більше_цілого.м
run_test тестування/Число/віднімання_цілого.м
run_test тестування/Число/двійкове_або_цілого.м
run_test тестування/Число/двійкове_вабо_цілого.м
run_test тестування/Число/двійкове_і_цілого.м
run_test тестування/Число/двійкове_не_цілого.м
run_test тестування/Число/ділення_цілого.м
run_test тестування/Число/додавання_цілого.м
run_test тестування/Число/змінити_знак_цілого.м
run_test тестування/Число/зсув_вліво_цілого.м
run_test тестування/Число/зсув_вправо_цілого.м
run_test тестування/Число/менше_цілого.м
run_test тестування/Число/множення_цілого.м
run_test тестування/Число/не_більше_цілого.м
run_test тестування/Число/не_менше_цілого.м
run_test тестування/Число/остача_цілого.м
run_test тестування/Число/степінь_цілого.м
run_test тестування/Число/більше_рухомого.м
run_test тестування/Число/віднімання_рухомого.м
run_test тестування/Число/ділення_рухомого.м
run_test тестування/Число/додавання_рухомого.м
run_test тестування/Число/змінити_знак_рухомого.м
run_test тестування/Число/менше_рухомого.м
run_test тестування/Число/множення_рухомого.м
run_test тестування/Число/не_більше_рухомого.м
run_test тестування/Число/не_менше_рухомого.м
run_test тестування/Число/остача_рухомого.м
run_test тестування/Число/степінь_рухомого.м
run_test тестування/Число/чародія_текст.м
run_test тестування/Число/чародія_число.м
echo ""
run_test тестування/Дані/Дані.м
run_test тестування/Дані/виділити.м
run_test тестування/Дані/обнулено.м
run_test тестування/Дані/з_тексту.м
run_test тестування/Дані/з_послідовності.м
run_test тестування/Дані/зі_списку.м
run_test тестування/Дані/з_даних.м
run_test тестування/Дані/чародія_перебір.м
run_test тестування/Дані/чародія_текст.м
echo ""
run_test тестування/Послідовність/Послідовність.м
run_test тестування/Послідовність/з_тексту.м
run_test тестування/Послідовність/з_послідовності.м
run_test тестування/Послідовність/зі_списку.м
run_test тестування/Послідовність/з_даних.м
run_test тестування/Послідовність/чародія_перебір.м
run_test тестування/Послідовність/чародія_текст.м
echo ""
run_test тестування/Список/Список.м
run_test тестування/Список/з_тексту.м
run_test тестування/Список/з_послідовності.м
run_test тестування/Список/зі_списку.м
run_test тестування/Список/з_даних.м
run_test тестування/Список/чародія_перебір.м
run_test тестування/Список/чародія_текст.м
run_test тестування/Список/додати.м
run_test тестування/Список/забрати.м
run_test тестування/Список/позиція.м
run_test тестування/Список/знайти.м
run_test тестування/Список/знайти_позицію.м
run_test тестування/Список/відібрати.м
run_test тестування/Список/перетворити.м
run_test тестування/Список/обернути.м
run_test тестування/Список/містить.м
run_test тестування/Список/змінити_елемент.м
echo ""
run_test тестування/ПроміжокЧисел/ПроміжокЧисел.м
run_test тестування/ПроміжокЧисел/чародія_текст.м
run_test тестування/ПроміжокЧисел/створити_вручну.м
echo ""
run_test тестування/Текст/Текст.м
run_test тестування/Текст/додати.м
run_test тестування/Текст/інтерполяція.м
run_test тестування/Текст/чародія_перебір.м
run_test тестування/Текст/чародія_текст.м
run_test тестування/Текст/чародія_число.м
echo ""
run_test тестування/Словник/Словник.м
run_test тестування/Словник/чародія_перебір.м
run_test тестування/Словник/чародія_текст.м
run_test тестування/Словник/ключі.м
run_test тестування/Словник/значення.м
run_test тестування/Словник/містить.м
echo ""
run_test тестування/Дія/Дія.м
run_test тестування/Дія/назва.м
run_test тестування/Дія/створити_вручну.м
run_test тестування/Дія/чародія_текст.м
run_test тестування/Дія/позиційні.м
run_test тестування/Дія/іменовані.м
run_test тестування/Дія/позиційні_іменовані.м
run_test тестування/Дія/значення_за_замовчуванням.м
echo ""
run_test тестування/Клас/Клас.м
run_test тестування/Клас/назва.м
run_test тестування/Клас/створити_вручну.м
run_test тестування/Клас/лише_ознаки.м
run_test тестування/Клас/чародія.м
run_test тестування/Клас/чародія_текст.м
run_test тестування/Клас/ознаки_і_чародія.м
run_test тестування/Клас/метод.м
run_test тестування/Клас/метод1.м
echo ""
run_test тестування/Код/Код.м
run_test тестування/Код/створити_вручну.м
echo ""
run_test тестування/Модуль/Модуль.м
run_test тестування/Модуль/отримати_назву.м
run_test тестування/Модуль/створити_вручну.м
run_test тестування/Модуль/чародія_текст.м
run_test тестування/Модуль/дати1.м
echo ""
run_test тестування/Параметр/Параметр.м
run_test тестування/Параметр/створити_вручну.м
echo ""
run_test тестування/Ознака/Ознака.м
run_test тестування/Ознака/створити_вручну.м
echo ""
run_test тестування/ПеребірДаних/ПеребірДаних.м
run_test тестування/ПеребірДаних/створити_вручну.м
run_test тестування/ПеребірДаних/чародія_текст.м
run_test тестування/ПеребірДаних/ручний_перебір.м
echo ""
run_test тестування/ПеребірПослідовності/ПеребірПослідовності.м
run_test тестування/ПеребірПослідовності/створити_вручну.м
run_test тестування/ПеребірПослідовності/чародія_текст.м
run_test тестування/ПеребірПослідовності/ручний_перебір.м
echo ""
run_test тестування/ПеребірПроміжкаЧисел/ПеребірПроміжкаЧисел.м
run_test тестування/ПеребірПроміжкаЧисел/створити_вручну.м
run_test тестування/ПеребірПроміжкаЧисел/чародія_текст.м
run_test тестування/ПеребірПроміжкаЧисел/ручний_перебір.м
echo ""
run_test тестування/ПеребірСловника/ПеребірСловника.м
run_test тестування/ПеребірСловника/створити_вручну.м
run_test тестування/ПеребірСловника/чародія_текст.м
run_test тестування/ПеребірСловника/ручний_перебір.м
echo ""
run_test тестування/ПеребірСписку/ПеребірСписку.м
run_test тестування/ПеребірСписку/створити_вручну.м
run_test тестування/ПеребірСписку/чародія_текст.м
run_test тестування/ПеребірСписку/ручний_перебір.м
echo ""
run_test тестування/ПеребірТексту/ПеребірТексту.м
run_test тестування/ПеребірТексту/створити_вручну.м
run_test тестування/ПеребірТексту/чародія_текст.м
run_test тестування/ПеребірТексту/ручний_перебір.м
echo ""
run_test тестування/перебрати/перебрати.м
run_test тестування/перебрати/перебрати_без_назви.м
run_test тестування/перебрати/перестрибнути.м
run_test тестування/перебрати/перервати.м
echo ""
run_test тестування/поки/поки.м
run_test тестування/поки/перестрибнути.м
run_test тестування/поки/перервати.м
echo ""
run_test тестування/взяти_модуль/взяти_модуль.м
echo ""
run_test тестування/взяти_пак/взяти_пак.м
echo ""
run_test тестування/біб/фс/записати_прочитати.м
echo -e "\n---"
echo -e "Успішних: ${GREEN}$passed${NC}"
echo -e "Невдалих: ${RED}$failed${NC}"
echo -e "---"
if [ $failed -ne 0 ]; then
exit 1
fi