Repository navigation
Изолированный набор транслирует события родителю по ходу исполнения - #35
Conversation
1commands отдает вывод дочернего прогона порциями, как успел прочитать: порция обычно заканчивается переводом строки, а может оборвать строку. Лог команды резал каждую порцию по переводам строк и печатал все части, поэтому каждый стык порций давал в консоли пустую строку, а оборванная строка распадалась надвое. Теперь лог печатает только целые строки: недописанный хвост каждого потока ждет следующей порции и дописывается командой после завершения прогона. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Раньше изолированный набор отдавал результаты родителю одним куском после завершения своей среды: пока шел дочерний прогон, в дереве была тишина, у вклеенных тестов было время доставки (0-1 мс) вместо времени выполнения, каждый из них помечался в дереве последним (└─), а авария дочернего процесса теряла результаты всего набора. Теперь изолированная среда транслирует события исполнения по ходу: состав набора на старте, начало и конец каждого теста, конец набора. На уровне "Поделка" сообщения передаются в памяти, на уровне "Процесс" - строками stdout с маркером, которые родитель разбирает по мере чтения. - Зеркала строятся по составу до первого теста - дерево знает последний тест. - Время выполнения измеряется в изолированной среде и переносится в результат. - Тесты, выполненные до аварии дочернего процесса, сохраняют результаты; прерванный тест ломается, набор ломается с выводом процесса. - Строка канала - чистый ASCII, BOM консоли в UTF-8 отбрасывается, а сообщения нумеруются: потерянное сообщение ломает набор, а не оставляет его зеленым. Сериализация результатов вынесена в ПереносРезультатов: JSON-отчет и канал событий пишут записи одним кодом. Чистое обнаружение изолированных наборов строит зеркала тем же ретранслятором. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (19)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. WalkthroughИзолированные прогоны теперь передают события и результаты выполнения родительскому прогону по мере работы. Изменения также добавляют перенос времени тестов, обработку порций вывода и проверки для потери сообщений и аварийного завершения дочернего процесса. ChangesРетрансляция событий изолированного прогона
Priority: ➖ Normal Estimated code review effort: 4 (Complex) | ~45 minutes Change: Feature Sequence Diagram(s)sequenceDiagram
participant Child as Изолированный прогон
participant Translator as ТрансляторСобытийИзоляции
participant Channel as КаналСобытийИзоляции
participant Relay as РетрансляторСобытийИзоляции
participant Publisher as Публикатор событий
Child->>Translator: События начала и конца теста
Translator->>Channel: Нумерованные сообщения с результатами
Channel->>Relay: Строки JSON через stdout
Relay->>Publisher: События и результаты тестов
Merge Risk: ⚪ Minimal · up to Isolated test suites now stream their progress to the parent run, and CLI output is reassembled into whole lines. The reviewed code shows no concrete defect that should block merging. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Пушистый кролик следит за строкой, Comment |
Строка канала событий изоляции пишется с ЭкранированиеСимволовJSON.СимволыВнеASCII, чтобы кодовая страница консоли не искажала имена наборов и тестов. До 2.2.0 ЗаписьJSON в этом режиме экранировала дважды: \u-последовательность, полученная от Newtonsoft, повторно проходила экранирование обратного слэша, и вместо "Н" в JSON попадало "\u041d". Прочитанное значение оставалось буквальным текстом "Н..." - кириллическое имя набора не совпадало с настоящим, и набор "не обнаруживался" в дочернем прогоне. Исправлено в OneScript 2.2.0 (EvilBeaver/OneScript#1714). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Что было не так
Изолированный набор (особенно на уровне
Процесс) отдавал результаты родителю одним куском после завершения своей среды:└─);Отдельно: консоль CLI рвала дерево пустыми строками на стыках порций вывода дочернего прогона (старый баг, стал заметнее с трансляцией).
Что сделано
Трансляция событий изолированного набора (второй коммит)
Поделка- в памяти, на уровнеПроцесс- строками stdout с маркером##oneunit:, которые родитель разбирает по мере чтения (ТрансляторСобытийИзоляции,КаналСобытийИзоляции,РетрансляторСобытийИзоляции).РезультатВыполненияТеста.ПеренестиВремяВыполнения), статистика берет его вместо своего замера.ПереносРезультатов: JSON-отчет и канал пишут записи одним кодом. Чистое обнаружение изолированных наборов строит зеркала тем же ретранслятором. JSON-отчет дочернего прогона для изолированного набора больше не нужен (для изолированного теста остался).Консоль CLI печатает вывод прогона целыми строками (первый коммит)
ЛогДляКомандыМенеджерапечатает только целые строки: недописанный хвост ждет следующей порции 1commands и дописывается после завершения прогона.Требуемая версия OneScript поднята до 2.2.0 (третий коммит)
ЭкранированиеСимволовJSON.СимволыВнеASCII, а до 2.2.0ЗаписьJSONв этом режиме экранировала дважды: обратный слэш каждой юникод-последовательности экранировался повторно, и кириллические имена возвращались из JSON буквальным текстом escape-последовательностей. Исправлено в к #1532: ОткрытьПоток для ЗаписьJSON EvilBeaver/OneScript#1714.packagedef:.ВерсияСреды("2.2.0")(CI «default» берет версию отсюда),release.yml: сборка релиза на 2.2.0.Проверка
chcp 65001- дерево целое (до исправления BOM в UTF-8 консоли события терялись).├─/└─в дереве на обоих уровнях, авария дочернего процесса посреди набора, устойчивость строки канала к кодировке и BOM, потеря сообщения канала ломает набор, склейка порций вывода в логе CLI.Параллельный запуск изолированных наборов, блокировки ресурсов и временные каталоги - отдельно, после релиза.
🤖 Generated with Claude Code
Summary by CodeRabbit