Repository navigation
Expand file tree
/
Copy pathrun_single_test.sh
More file actions
executable file
·84 lines (77 loc) · 4.6 KB
/
Copy pathrun_single_test.sh
File metadata and controls
executable file
·84 lines (77 loc) · 4.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/bin/bash
# Запуск одного регрессионного теста по имени
if [ $# -eq 0 ]; then
echo "Использование: $0 <имя_теста>"
echo ""
echo "Доступные тесты:"
echo " 001_setup - Базовая установка и проверка"
echo " 002_basic_functionality - Основная функциональность"
echo " 003_skip_parameters - Параметры пропуска"
echo " 004_edge_cases - Граничные случаи"
echo " 005_nested_calls_default - Вложенные вызовы (с пропуском)"
echo " 006_nested_calls_full - Вложенные вызовы (полный стек)"
echo " 007_error_recovery - Восстановление после ошибок"
echo " 008_subtransactions - Подтранзакции"
echo " 009_complex_nesting - Сложные вложения и временные таблицы"
echo " 010_loop - Нагрузочный тест с циклом"
echo " 011_triggers - Работа с триггерами"
echo " 012_stack_overflow - Переполнение стека"
echo " 013_query_length_limit - Длинные запросы"
echo " 014_cte_recursive - CTE и рекурсивные запросы"
echo " 015_after_trigger_error_cleanup - Очистка после ошибки AFTER"
echo " 016_swallowed_subxact_trigger_error - Перехваченные исключения"
echo " 017_lazy_materialize_deep - Глубокая вложенность (5+ уровней)"
echo " 018_subxact_only_cleanup - Очистка субтранзакций"
echo " 019_chained_extensions - Совместимость с другими хуками"
echo " 020_audit_trigger_realistic - Реалистичный audit-trigger"
echo " 022_columnar_basic - Совместимость с Citus columnar"
echo " 023_audit_after_update_pg_self_query - AFTER UPDATE STATEMENT + pg_self_query"
echo " 024_audit_after_delete_pg_self_query - AFTER DELETE STATEMENT + pg_self_query"
echo " 025_audit_nested_function_deepest_visible - UPDATE внутри функции (deepest frame)"
echo " 026_cursor_close_order - CLOSE курсоров не в порядке LIFO"
echo " 027_refcursor_outlives_caller - refcursor живет дольше вызвавшего SELECT"
echo " 028_cursor_closed_in_aborted_subxact - CLOSE внутри откатившейся субтранзакции"
echo " 029_failed_cursor_never_ends - FETCH курсора упал в субтранзакции (PORTAL_FAILED)"
echo " 030_idle_cursor_not_a_frame - простаивающий курсор не фрейм, FETCH - фрейм"
echo " 031_holdable_cursor_and_commit_drop - WITH HOLD и сброс курсоров на COMMIT"
echo " 032_subxact_snapshot_overflow - переполнение LIFO снимков субтранзакций (>256)"
echo ""
echo "Примеры:"
echo " $0 001_setup"
echo " $0 007_error_recovery"
exit 1
fi
TEST_NAME=$1
if [ ! -f "sql/${TEST_NAME}.sql" ]; then
echo "Ошибка: Тест ${TEST_NAME} не найден (sql/${TEST_NAME}.sql)"
exit 1
fi
echo "=== Запуск: ${TEST_NAME} ==="
echo ""
# pg_regress пересоздает базу перед прогоном, а CREATE EXTENSION делает только
# 001_setup, поэтому любой другой тест запускается вместе с ним.
if [ "${TEST_NAME}" = "001_setup" ]; then
REGRESS_LIST="001_setup"
else
REGRESS_LIST="001_setup ${TEST_NAME}"
fi
# PG_CONFIG и PGPORT из окружения передаются make явно: Makefile задает
# PG_CONFIG через "=", и переменная окружения сама по себе его не переопределяет.
rm -f regression.diffs
make installcheck REGRESS="${REGRESS_LIST}" ${PG_CONFIG:+PG_CONFIG="${PG_CONFIG}"} ${PGPORT:+PGPORT="${PGPORT}"}
rc=$?
echo ""
if [ -f "regression.diffs" ]; then
echo "=== ОШИБКА: найдены различия ==="
cat regression.diffs
exit 1
elif [ $rc -ne 0 ]; then
echo "=== ОШИБКА: make installcheck завершился с кодом $rc ==="
exit $rc
else
echo "=== ОК: тест прошел ==="
fi
if [ -f "results/${TEST_NAME}.out" ]; then
echo ""
echo "Результат: results/${TEST_NAME}.out ($(wc -l < results/${TEST_NAME}.out) строк)"
fi