Здесь описано что вообще есть в этом репозитории.
Как запускать тесты, как работает CI, какие есть автоматизации и как вообще вести разработку NodeKit.
NodeKit содержит два вида тестов Unit и Integration тесты.
Unit-тесты используются для того, чтобы протестировать узел, лес или граф изолированно от внешней среды.
То есть Unit-тесты это когда мы тестируем компоненты библиотеки заменяя входы и выходы заглушками. То есть тесты не идут в файловую систему, не идут на сервер. Короче для прогона тестов не нужны никакие внешние компоненты. Это важно, потому что такие тесты запускаются на CI без дополнительных действий.
Integration-тесты - как раз наоборот. Их задача проверить как библиотека (целиком или ее компоненты) работает со внешним миром.
Для этих целей специально для NodeKit написан небольшой web-сервер который лежит в папке TestServer.
Сейчас NodeKit использует Travis-CI.
Каждый созданный PR уходит собираться на Travis и во время сборки проходит несколько этапов:
- Сборка проекта - проверяется, что библиотека вообще собирается
- Деплой сервера - тестовый сервис деплоится на удаленный сервер и там запускается
- Тестирование - выполняется прогон всех тестов библиотеки. Затем результат тестирования грузится в CodeCov
Для всех внутренних действий используются скрипты из папки ci
prepare_srv_deploy.sh
- расшифровывает и добавляет на виртуальную машину ssh-секреты, для того, чтобы можно было провести деплойdeploy_server.sh
- выполняет деплой тестовго сериса на удаленный сервер и запускает его тамprepare_tests.sh
- делает подготовку для запуска тестов на удаленном сервере. В частности заменяетRoutes.base = http://localhost:8118/nkt
наRoutes.base = https://lastsprint.dev/nkt
в файлеInfrastrudture.swift
run_tests.sh
- запускает тестыcodecov_report.sh
- запускается после завершения тестирования. Загружает результаты тестов в CodeCov
Находится в папке TestServer в корне репозитория.
Это небольшой сервис написанный на Go.
Вместе с сервисом поставляется его бинарник TestServer/TestServer
так что для того, чтобы прогнать тесты локально достаточно просто запустить его: TestServer/TestServer
Если вы хотите его доработать, то здесь уже сложнее. Вам обязательно нужен установленный Go на вашем устройстве и желательно иметь какой-то умный редактор (наприемр я пользуюсь VSCode).
Почитать о том как быстро поставить компилятор для Go и начать им пользоваться можно тут