Система тестирования ядра (runtests.py)
Posted: Wed Dec 15, 2021 8:31 pm
Приветствую!
В ядре присутствует система тестирования операционной системы. Имеются как тесты с использованием qemu, так и тесты на UMKa (они скачиваются вместе с репозиторием UMKa, см. далее).
Тесты работают следующим образом:
qemu
1 Происходит поиск папок с тестами в папке test. Если папка содержит файл test.py, то она считается тестом.
2 Для каждого теста:
2.1 Происходит запуск функции run(root_dir, test_dir) каждого теста. Первым аргументом в функцию передаётся путь к kernel/trunk, а вторым - путь к папке с этим тестом (в которой лежит запускаемый test.py).
API предоставляемый для тестирования можно посмотреть в kernel/trunk/test/common/__init__.py.
UMKa (на стадии альфа)
1 Происходит загрузка образов, используемых при тестировании.
2 Происходит загрузка кода UMKa из репозитория.
3 Происходит переход на ветку trunk.
4 UMKa компилируется с использованием llvm-mingw или clang.
5 Запускаются все тесты для UMKa (под тестами понимаются все файлы с расширением ".t" из папки umka/test). В случае провала любого теста тестирование останавливается с надписью FAILURE.
Limitations:
- Пока тесты запускаются все, какие бы ни были нужны
- Пока загрузка происходит всех образов дисков для тестов (если use_umka == True)
- Пока компиляция Умки происходит при каждом запуске теста (если use_umka == True)
Проблемы/предложения/контрибьютинг приветствуются.
В ядре присутствует система тестирования операционной системы. Имеются как тесты с использованием qemu, так и тесты на UMKa (они скачиваются вместе с репозиторием UMKa, см. далее).
Тесты работают следующим образом:
qemu
1 Происходит поиск папок с тестами в папке test. Если папка содержит файл test.py, то она считается тестом.
2 Для каждого теста:
2.1 Происходит запуск функции run(root_dir, test_dir) каждого теста. Первым аргументом в функцию передаётся путь к kernel/trunk, а вторым - путь к папке с этим тестом (в которой лежит запускаемый test.py).
API предоставляемый для тестирования можно посмотреть в kernel/trunk/test/common/__init__.py.
UMKa (на стадии альфа)
1 Происходит загрузка образов, используемых при тестировании.
2 Происходит загрузка кода UMKa из репозитория.
3 Происходит переход на ветку trunk.
4 UMKa компилируется с использованием llvm-mingw или clang.
5 Запускаются все тесты для UMKa (под тестами понимаются все файлы с расширением ".t" из папки umka/test). В случае провала любого теста тестирование останавливается с надписью FAILURE.
Limitations:
- Пока тесты запускаются все, какие бы ни были нужны
- Пока загрузка происходит всех образов дисков для тестов (если use_umka == True)
- Пока компиляция Умки происходит при каждом запуске теста (если use_umka == True)
Проблемы/предложения/контрибьютинг приветствуются.