Skip to content

tests: Рефакторинг и добавление новых тестов#52

Merged
Stivo182 merged 12 commits intomainfrom
test/add-benchmark-tests
Mar 25, 2026
Merged

tests: Рефакторинг и добавление новых тестов#52
Stivo182 merged 12 commits intomainfrom
test/add-benchmark-tests

Conversation

@Stivo182
Copy link
Owner

@Stivo182 Stivo182 commented Mar 25, 2026

Summary by CodeRabbit

  • New Features

    • Benchmark cases now accept optional parameters for more flexible case creation.
  • Tests

    • Large expansion and reorganization of the test suite: many new focused modules covering case generation, execution, measurements, configuration validation, exports, event handlers, process management, serialization, and checkpoint/resume scenarios.
  • Refactor

    • Test names, lifecycle hooks and helpers standardized for clearer structure and maintainability.

@coderabbitai
Copy link

coderabbitai bot commented Mar 25, 2026

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

Walkthrough

Made benchmark case constructor accept optional Параметры (defaults to Неопределено and initializes to empty array when absent), renamed an internal log fixture variable, removed a legacy configuration test module, and reorganized/added many test modules with standardized lifecycle hooks and naming.

Changes

Cohort / File(s) Summary
Core Case Parameter Handling
src/BenchmarkOneScript/core/running/Классы/КейсБенчмарка.os
ПриСозданииОбъекта signature changed so Параметры is optional (= Неопределено); _Параметры is initialized to Новый Массив() when Параметры not provided; other parameter/defaulting logic unchanged.
Test Fixture
tests/fixtures/АппендерЛога.os
Internal variable renamed мСообщенияЛога_СообщенияЛога; all accesses and exported helpers updated to use _СообщенияЛога.
Removed Legacy Tests
tests/ТестыКонфигурации.os
Entire module removed (many exported lifecycle handlers, tests and module state deleted).
Generator / Executor / Process / Scenario / Descriptor / Connection tests
tests/ТестыГенератораКейсовБенчмарков.os, tests/ТестыИсполнителяБенчмарков.os, tests/ТестыМенеджераПроцессовБенчмарков.os, tests/ТестыСценарияЗапускаБенчмарка.os, tests/ТестыДескрипторовБенчмарков.os, tests/ТестыПодключенияБенчмарков.os
Added focused test modules with standardized lifecycle hooks (ПередВсеми/ПослеВсех etc.), many new exported test procedures and helpers for temp-file and scenario/connection handling.
Configuration / Columns / Merge tests
tests/ТестыВалидацииКонфигурацииБенчмарков.os, tests/ТестыОсновныхНастроекКонфигурацииБенчмарков.os, tests/ТестыИсполняющихСредКонфигурацииБенчмарков.os, tests/ТестыКолонокИЭкспортаКонфигурацииБенчмарков.os, tests/ТестыОбъединенияКонфигурацийБенчмарков.os
New modules validating numeric constraints, config extraction/overrides, execution environments, report columns/exporters, and configuration merge behaviors.
Event / Measurement / Benchmark measurement tests
tests/ТестыОбработчиковСобытийБенчмарков.os, tests/ТестыЗамеров.os, tests/ТестыЗамеровБенчмарков.os
Added/updated tests for event handler invocation, memory profiling presence/absence, per-operation timing/allocation calculations, and renamed/repurposed measurement tests.
Report / Export / Exporter tests
tests/ТестыОтчетаБенчмарков.os, tests/ТестыЭкспортеров.os, tests/ТестыЭкспортаРезультатовБенчмарков.os
Parameterized exporter tests (Markdown/Json/Html), export configuration helpers, artifact checks, and report sorting/format assertions.
Test refactors, naming, regions, helpers
many tests/*.os (see list below)
Standardized lifecycle hook names (ПередВсеми/ПослеВсех), prefixed underscored module variables, added #Область/#КонецОбласти regions, renamed many tests to ТестДолжен_*, introduced parameterized tests via &Параметры, whitespace/EOF fixes and many new helper functions. Files include (non-exhaustive): tests/ТестыЗапускателяФайловБенчмарков.os, tests/ТестыПодготовителяФайлаБенчмарка.os, tests/ТестыПарсераПараметровБенчмарковCLI.os, tests/ТестыПредставленияПоказателей.os, tests/ТестыПредставленияПоказателейБенчмарков.os, tests/ТестыСтатистикиБенчмарков.os, tests/ТестыСериализатораНастроекЗапускаБенчмарков.os, tests/ТестыСериализатораРезультатовБенчмарков.os, tests/ТестыМенеджераПроцессовБенчмарков.os, tests/ТестыКолонокИЭкспортаКонфигурацииБенчмарков.os, tests/ТестыОтчетаБенчмарков.os, tests/ТестыПодключенияБенчмарков.os, tests/ТестыИсточниковПараметровБенчмарков.os, tests/ТестыОбъединенияКонфигурацийБенчмарков.os, tests/ТестыПредставленияПоказателейБенчмарков.os, tests/ТестыСценарияЗапускаБенчмарка.os.
Language server config
.bsl-language-server.json
Updated diagnostics.parameters.Typo.userWordsToIgnore word list (added/removed specific Russian variants such as Несериализуемыми, Чекпоинта, Чекпоинту, etc.).

Sequence Diagram(s)

(omitted — changes are primarily tests, refactors and small signature tweak; no multi-component new control flow requiring sequence diagrams)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Poem

🐰 I hopped through code and nudged a param free,

Tests gained tidy names — "ТестДолжен" they be.
Hooks now wake and sleep in ordered rows,
Temp files vanish where the clean river flows.
A carrot for CI, and a happy dev — whee! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'tests: Рефакторинг и добавление новых тестов' accurately describes the main change—a comprehensive test refactoring and addition of new test files covering benchmark configuration, execution, reporting, and serialization scenarios.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch test/add-benchmark-tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
tests/ТестыЗамеров.os (1)

18-25: Проверьте ВыделеноБайт до вычисления коэффициента.

Если профилирование памяти здесь вернет 0, тест упадет с делением на ноль и спрячeт реальную причину сбоя. Лучше сначала сделать явную проверку, а потом считать коэффициент.

💡 Небольшое усиление диагностики
 	// Проверка
 	ВыделеноБайт = Результат.Запуски[0].Статистика.ВыделяемаяПамять;
+	Ожидаем.Что(ВыделеноБайт, "Выделяемая память").Больше(0);
 	Коэффициент = РазмерВБайтах / ВыделеноБайт;
 
 	Ожидаем.Что(Коэффициент).Между(0.99, 1);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыЗамеров.os` around lines 18 - 25, Перед вычислением Коэффициент
убедитесь, что ВыделеноБайт (из
Результат.Запуски[0].Статистика.ВыделяемаяПамять) не равен нулю: добавьте явную
проверку (например, Ожидаем.Что(ВыделеноБайт).Больше(0) или эквивалентное
утверждение) сразу после получения ВыделеноБайт и только затем вычисляйте
Коэффициент = РазмерВБайтах / ВыделеноБайт; это предотвратит деление на ноль и
сделает причину падения теста очевидной.
tests/ТестыСценарияЗапускаБенчмарка.os (1)

25-30: Используйте один экземпляр дескриптора и для сценария, и для кейсов.

КейсПустогоБенчмарка() каждый раз создает новую КоллекцияДескрипторовБенчмарков, поэтому кейсы в этих тестах не связаны с той коллекцией, которая передана в СценарийЗапускаБенчмарка. В итоге здесь хорошо покрывается сериализация идентификаторов, но хуже ловятся ошибки сопоставления КейсБенчмаркаДескрипторБенчмарка. Надежнее передавать в helper уже созданный ДескрипторБенчмарка.

Also applies to: 45-50, 66-73, 96-100

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыСценарияЗапускаБенчмарка.os` around lines 25 - 30, The test
creates separate КоллекцияДескрипторовБенчмарков instances for the
СценарийЗапускаБенчмарка and for each helper КейсПустогоБенчмарка, so cases are
not tied to the scenario's descriptor collection; fix it by creating a single
КоллекцияДескрипторовБенчмарков/ДескрипторБенчмарка instance and passing that
same descriptor collection or descriptor into both the СценарийЗапускаБенчмарка
constructor and into the helper that builds КейсБенчмарка (or change
КейсПустогоБенчмарка to accept a descriptor parameter), and update the other
test locations (lines ~45-50, 66-73, 96-100) to reuse the same descriptor
instance.
tests/ТестыИсполнителяБенчмарков.os (1)

118-121: Minor: Inconsistent indentation in method chain.

Line 119 is missing a tab before .УстановитьСтратегию compared to the similar pattern in lines 79-81.

🔧 Suggested fix for consistent indentation
 	Конфигурация
-	.УстановитьСтратегию(СтратегииЗапускаБенчмарка.ХолодныйЗапуск)
+		.УстановитьСтратегию(СтратегииЗапускаБенчмарка.ХолодныйЗапуск)
 		.УстановитьКоличествоИтераций(1)
 		.ДобавитьМониторингПамяти();
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыИсполнителяБенчмарков.os` around lines 118 - 121, The method chain
starting at Конфигурация has inconsistent indentation: add a leading tab before
`.УстановитьСтратегию(СтратегииЗапускаБенчмарка.ХолодныйЗапуск)` so the
`.УстановитьСтратегию`, `.УстановитьКоличествоИтераций(1)` and
`.ДобавитьМониторингПамяти()` calls align with the existing chained call style
used elsewhere; update the indentation for those chained methods to match the
pattern used on lines 79–81.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@tests/ТестыПодготовителяФайлаБенчмарка.os`:
- Around line 11-20: Текущие проверки ИмеетДлину(0)/ИмеетДлину(1) зависят от
глобального состояния модуля (_МенеджерВременныхФайлов), потому что менеджер
создаётся в ПередВсеми() и живёт до ПослеВсех(); исправьте тесты, чтобы
проверять дельту созданных временных файлов вместо абсолютной длины: в тесте
захватите текущее количество файлов из _МенеджерВременныхФайлов перед вызовом
методов ПодготовительФайлаБенчмарка, выполните операцию и затем сравните разницу
(новая длина минус старая) с ожидаемым значением; альтернативно, адаптируйте
ПодготовленныйФайл/ПодготовительФайлаБенчмарка чтобы возвращал количество или
список созданных временных файлов и проверяйте это значение напрямую (исходные
точки: функции/процедуры _МенеджерВременныхФайлов, ПодготовительФайлаБенчмарка,
и места проверок ИмеетДлину в тестах).

---

Nitpick comments:
In `@tests/ТестыЗамеров.os`:
- Around line 18-25: Перед вычислением Коэффициент убедитесь, что ВыделеноБайт
(из Результат.Запуски[0].Статистика.ВыделяемаяПамять) не равен нулю: добавьте
явную проверку (например, Ожидаем.Что(ВыделеноБайт).Больше(0) или эквивалентное
утверждение) сразу после получения ВыделеноБайт и только затем вычисляйте
Коэффициент = РазмерВБайтах / ВыделеноБайт; это предотвратит деление на ноль и
сделает причину падения теста очевидной.

In `@tests/ТестыИсполнителяБенчмарков.os`:
- Around line 118-121: The method chain starting at Конфигурация has
inconsistent indentation: add a leading tab before
`.УстановитьСтратегию(СтратегииЗапускаБенчмарка.ХолодныйЗапуск)` so the
`.УстановитьСтратегию`, `.УстановитьКоличествоИтераций(1)` and
`.ДобавитьМониторингПамяти()` calls align with the existing chained call style
used elsewhere; update the indentation for those chained methods to match the
pattern used on lines 79–81.

In `@tests/ТестыСценарияЗапускаБенчмарка.os`:
- Around line 25-30: The test creates separate КоллекцияДескрипторовБенчмарков
instances for the СценарийЗапускаБенчмарка and for each helper
КейсПустогоБенчмарка, so cases are not tied to the scenario's descriptor
collection; fix it by creating a single
КоллекцияДескрипторовБенчмарков/ДескрипторБенчмарка instance and passing that
same descriptor collection or descriptor into both the СценарийЗапускаБенчмарка
constructor and into the helper that builds КейсБенчмарка (or change
КейсПустогоБенчмарка to accept a descriptor parameter), and update the other
test locations (lines ~45-50, 66-73, 96-100) to reuse the same descriptor
instance.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b728d90f-68cb-4145-a994-ee2538b012c2

📥 Commits

Reviewing files that changed from the base of the PR and between 2990c61 and 662e438.

📒 Files selected for processing (17)
  • src/BenchmarkOneScript/core/running/Классы/КейсБенчмарка.os
  • tests/fixtures/АппендерЛога.os
  • tests/ТестыБенчмарков.os
  • tests/ТестыГенератораКейсовБенчмарков.os
  • tests/ТестыЗамеров.os
  • tests/ТестыЗапускателяФайловБенчмарков.os
  • tests/ТестыИсполнителяБенчмарков.os
  • tests/ТестыКонфигурации.os
  • tests/ТестыМенеджераПроцессовБенчмарков.os
  • tests/ТестыПарсераПараметровБенчмарковCLI.os
  • tests/ТестыПодготовителяФайлаБенчмарка.os
  • tests/ТестыПредставленияПоказателей.os
  • tests/ТестыСериализаторНастроекЗапускаБенчмарков.os
  • tests/ТестыСериализаторРезультатовБенчмарков.os
  • tests/ТестыСтатистики.os
  • tests/ТестыСценарияЗапускаБенчмарка.os
  • tests/ТестыЭкспортеров.os

Comment on lines +11 to +20
&Инициализация
Процедура ПередВсеми() Экспорт
_МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов();
_ПодготовительФайлаБенчмарка = Новый ПодготовительФайлаБенчмарка(_МенеджерВременныхФайлов);
КонецПроцедуры

&После
Процедура ПослеЗапускаТеста() Экспорт
&Завершение
Процедура ПослеВсех() Экспорт

МенеджерВременныхФайлов.Удалить();
_МенеджерВременныхФайлов.Удалить();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Изолируйте проверки количества временных файлов от состояния модуля.

_МенеджерВременныхФайлов живет до ПослеВсех(), поэтому ИмеетДлину(0) и ИмеетДлину(1) начинают зависеть от порядка выполнения и от того, сколько файлов уже накопил модуль. Здесь безопаснее проверять дельту внутри самого теста или сам ПодготовленныйФайл, а не абсолютную длину общего списка.

💡 Вариант с проверкой дельты
 	// Подготовка
 	ПутьКФайлу = "./tests/fixtures/benchmarks/Классы/ПустойБенчмарк.os";
+	КоличествоФайловДо = _МенеджерВременныхФайлов.Файлы().Количество();
 
 	// Действие
 	ПодготовленныйФайл = _ПодготовительФайлаБенчмарка.Подготовить(ПутьКФайлу);
 
 	// Проверка
 	Ожидаем.Что(ПодготовленныйФайл).Равно(ПутьКФайлу);
-	Ожидаем.Что(_МенеджерВременныхФайлов.Файлы()).ИмеетДлину(0);
+	Ожидаем.Что(_МенеджерВременныхФайлов.Файлы()).ИмеетДлину(КоличествоФайловДо);
 	// Подготовка
 	ПутьКФайлу = "./tests/fixtures/АлгоритмБезАннотации.os";
+	КоличествоФайловДо = _МенеджерВременныхФайлов.Файлы().Количество();
 
 	// Действие
 	ПодготовленныйФайл = _ПодготовительФайлаБенчмарка.Подготовить(ПутьКФайлу);
 
 	// Проверка
 	Ожидаем.Что(ФС.ФайлСуществует(ПодготовленныйФайл)).Равно(Истина);
-	Ожидаем.Что(_МенеджерВременныхФайлов.Файлы()).ИмеетДлину(1);
+	Ожидаем.Что(_МенеджерВременныхФайлов.Файлы()).ИмеетДлину(КоличествоФайловДо + 1);

Also applies to: 31-35, 46-55

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыПодготовителяФайлаБенчмарка.os` around lines 11 - 20, Текущие
проверки ИмеетДлину(0)/ИмеетДлину(1) зависят от глобального состояния модуля
(_МенеджерВременныхФайлов), потому что менеджер создаётся в ПередВсеми() и живёт
до ПослеВсех(); исправьте тесты, чтобы проверять дельту созданных временных
файлов вместо абсолютной длины: в тесте захватите текущее количество файлов из
_МенеджерВременныхФайлов перед вызовом методов ПодготовительФайлаБенчмарка,
выполните операцию и затем сравните разницу (новая длина минус старая) с
ожидаемым значением; альтернативно, адаптируйте
ПодготовленныйФайл/ПодготовительФайлаБенчмарка чтобы возвращал количество или
список созданных временных файлов и проверяйте это значение напрямую (исходные
точки: функции/процедуры _МенеджерВременныхФайлов, ПодготовительФайлаБенчмарка,
и места проверок ИмеетДлину в тестах).

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (8)
tests/ТестыПредставленияПоказателей.os (2)

150-150: Унифицируйте имя теста с остальными (Форматировать vs Формировать).

На Line 150 имя ТестДолжен_ФормироватьФиксированнуюСтроку выбивается из общего шаблона именования в файле.

✏️ Вариант переименования
-Процедура ТестДолжен_ФормироватьФиксированнуюСтроку() Экспорт
+Процедура ТестДолжен_ФорматироватьФиксированнуюСтроку() Экспорт
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыПредставленияПоказателей.os` at line 150, Переименуйте процедуру
ТестДолжен_ФормироватьФиксированнуюСтроку в соответствии с остальными тестами,
например в ТестДолжен_ФорматироватьФиксированнуюСтроку; обновите все ссылки на
эту процедуру (вызовы, регистрация в тест-раннере или комментарии) чтобы
сохранить консистентное именование и избежать ошибок при запуске тестов.

93-103: Вынесите расчёт РезультатСМинусом внутрь условия.

На Line 93-96 вычисление выполняется даже для 0, хотя проверка пропускается. Лучше слегка упростить тест.

♻️ Небольшое упрощение
-	РезультатСМинусом = ПредставленияПоказателейБенчмарков.ПредставлениеЧисла(
-		-ЧислоДляПроверки,
-		ЕдиницаИзмерения
-	);
-
 	// Проверка
 	Ожидаем.Что(Результат).Равно(ОжидаемоеПредставление);
 	
 	Если ЧислоДляПроверки <> 0 Тогда
+		РезультатСМинусом = ПредставленияПоказателейБенчмарков.ПредставлениеЧисла(
+			-ЧислоДляПроверки,
+			ЕдиницаИзмерения
+		);
 		Ожидаем.Что(РезультатСМинусом).Равно("-" + ОжидаемоеПредставление);
 	КонецЕсли;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыПредставленияПоказателей.os` around lines 93 - 103, Расчёт
РезультатСМинусом сейчас выполняется всегда (вызов
ПредставленияПоказателейБенчмарков.ПредставлениеЧисла с -ЧислоДляПроверки), хотя
проверка использует только ненулевые ЧислоДляПроверки; переместите вычисление
РезультатСМинусом внутрь блока Если ЧислоДляПроверки <> 0 Тогда и используйте
там ПредставленияПоказателейБенчмарков.ПредставлениеЧисла(-ЧислоДляПроверки,
ЕдиницаИзмерения), оставив существующую проверку
Ожидаем.Что(РезультатСМинусом).Равно("-" + ОжидаемоеПредставление); таким
образом вычисление пропустится при нуле и тест станет проще.
tests/ТестыИсточниковПараметров.os (1)

89-94: Свести дублирование инициализации конфигурации в один helper.

В двух новых тестах повторяется одинаковая подготовка типа/конфигурации. Лучше вынести в служебную функцию, чтобы упростить поддержку и снизить риск расхождений при будущих изменениях.

♻️ Proposed refactor
+Функция ПолучитьКонфигурациюСАннотациями() Экспорт
+	ТипБенчмарка = Тип("БенчмаркСАннотациямиКонфигурации");
+	Возврат Новый КонфигурацияБенчмарков(ТипБенчмарка);
+КонецФункции
+
 Процедура ТестДолжен_УстановитьИсточникПараметровВКонфигурации() Экспорт
 	// Подготовка
-	Тип = Тип("БенчмаркСАннотациямиКонфигурации");
-
-	Конфигурация = Новый КонфигурацияБенчмарков(Тип)
+	Конфигурация = ПолучитьКонфигурациюСАннотациями()
 		.ОчиститьИсточникиПараметров();
@@
 Процедура ТестДолжен_ОчиститьИсточникиПараметровВКонфигурации() Экспорт
 	// Подготовка
-	Тип = Тип("БенчмаркСАннотациямиКонфигурации");
-
-	Конфигурация = Новый КонфигурацияБенчмарков(Тип)
+	Конфигурация = ПолучитьКонфигурациюСАннотациями()
 		.ДобавитьИсточникПараметров("ОбщееЗначение", "Получить");

Also applies to: 110-115

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыИсточниковПараметров.os` around lines 89 - 94, Tests duplicate the
same setup creating Тип("БенчмаркСАннотациямиКонфигурации") and initializing
Конфигурация = Новый КонфигурацияБенчмарков(Тип).ОчиститьИсточникиПараметров();
— extract this into a shared helper function (e.g., CreateBenchmarkConfig или
InitBenchmarkConfig) and replace the repeated blocks in both tests with a call
to that helper; ensure the helper returns the initialized Конфигурация (and
optionally Тип) and update tests to use the returned values so callers reference
the same symbols (Тип, КонфигурацияБенчмарков, ОчиститьИсточникиПараметров).
tests/ТестыВалидацииКонфигурацииБенчмарков.os (1)

11-23: Unused _МенеджерВременныхФайлов can be removed.

The temp files manager is declared and initialized but never used in any test procedure in this module. All tests only validate КонфигурацияБенчмарков without creating temporary files.

🧹 Proposed cleanup
-#Использовать tempfiles
 `#Использовать` "helpers"
 `#Использовать` "fixtures/benchmarks"
 
-Перем _МенеджерВременныхФайлов; // МенеджерВременныхФайлов
-
-#Область ОбработчикиСобытий
-
-&Инициализация
-Процедура ПередВсеми() Экспорт
-	_МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов();
-КонецПроцедуры
-
-&Завершение
-Процедура ПослеВсех() Экспорт
-	_МенеджерВременныхФайлов.Удалить();
-КонецПроцедуры
-
-#КонецОбласти
-
 `#Область` Тесты
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыВалидацииКонфигурацииБенчмарков.os` around lines 11 - 23, Remove
the unused temporary files manager: delete the module-level declaration
"_МенеджерВременныхФайлов" and the setup/teardown code that instantiates and
calls Удалить() in ПередВсеми() and ПослеВсех(); specifically remove the "Новый
МенеджерВременныхФайлов()" call in ПередВсеми and the
"_МенеджерВременныхФайлов.Удалить()" call in ПослеВсех() (or alternatively, if
you intend to use it later, wire it into tests that create temp files), leaving
only the tests that validate КонфигурацияБенчмарков.
tests/ТестыКолонокИЭкспортаКонфигурацииБенчмарков.os (1)

11-23: Unused _МенеджерВременныхФайлов.

Same as in the validation tests module - temp files manager is not used in any test procedure.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыКолонокИЭкспортаКонфигурацииБенчмарков.os` around lines 11 - 23,
Переменная и менеджер _МенеджерВременныхФайлов создаются в ПередВсеми и
удаляются в ПослеВсех, но нигде не используются в тестах; удалите объявление
Перем _МенеджерВременныхФайлов и вызовы в процедурах ПередВсеми/ПослеВсех (или,
если менеджер действительно нужен, используйте его в тестах), обновив процедуры
ПередВсеми и ПослеВсех (имена: ПередВсеми, ПослеВсех, класс:
МенеджерВременныхФайлов) соответственно — либо полностью убрать код
инициализации/удаления, либо подключить менеджер к логике тестов.
tests/ТестыОбъединенияКонфигурацииБенчмарков.os (1)

11-23: Unused _МенеджерВременныхФайлов.

The temp files manager is not used in any test procedure - all tests only manipulate in-memory configuration objects.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыОбъединенияКонфигурацииБенчмарков.os` around lines 11 - 23,
Переменная и вызовы менеджера временных файлов не используются; удалите
объявление "_МенеджерВременныхФайлов", удалите или закомментируйте процедуры
"&Инициализация Процедура ПередВсеми() Экспорт" и "&Завершение Процедура
ПослеВсех() Экспорт" вместе с созданием и вызовом _МенеджерВременныхФайлов =
Новый МенеджерВременныхФайлов() и _МенеджерВременныхФайлов.Удалить(), либо если
нужен менеджер — фактически использовать экземпляр в тестах; проверяйте
упоминания класса МенеджерВременныхФайлов и функции ПередВсеми/ПослеВсех при
правке, чтобы не оставить невостребованные ссылки.
tests/ТестыОтчетаБенчмарков.os (1)

82-84: Consider adding skip reason for conditional test exclusion.

Tests silently return when running on OneScript1. Consider using a framework-provided skip mechanism or logging to make test results clearer when these tests are bypassed.

Also applies to: 122-124

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыОтчетаБенчмарков.os` around lines 82 - 84, The conditional
currently just returns when ТестированиеБенчмарков.ЭтоOneScript1() is true,
which hides that the test was intentionally skipped; replace the silent return
with the test framework's skip/ignore mechanism (or at minimum a clear log
message) so test reports show a skip reason — locate the checks using
ТестированиеБенчмарков.ЭтоOneScript1() (the blocks at the shown occurrence and
the similar one around lines 122-124) and call the framework skip function or
emit a descriptive log such as "Skipping benchmark tests on OneScript1" instead
of plain Возврат.
tests/ТестыОсновныхНастроекКонфигурацииБенчмарков.os (1)

11-23: Consider removing unused _МенеджерВременныхФайлов.

The temporary files manager is initialized and cleaned up but never used by any test in this module. This appears to be dead code.

🧹 Remove unused code
-Перем _МенеджерВременныхФайлов; // МенеджерВременныхФайлов
-
 `#Область` ОбработчикиСобытий
 
-&Инициализация
-Процедура ПередВсеми() Экспорт
-	_МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов();
-КонецПроцедуры
-
-&Завершение
-Процедура ПослеВсех() Экспорт
-	_МенеджерВременныхФайлов.Удалить();
-КонецПроцедуры
-
-#КонецОбласти
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыОсновныхНастроекКонфигурацииБенчмарков.os` around lines 11 - 23,
The _МенеджерВременныхФайлов variable and its lifecycle handlers (ПередВсеми and
ПослеВсех) are unused and should be removed; delete the declaration "Перем
_МенеджерВременныхФайлов;", the initialization in procedure ПередВсеми (new
МенеджерВременныхФайлов()) and the cleanup call in procedure ПослеВсех
(._Удалить()), or alternatively wire actual usage into tests—prefer removing
these three places to eliminate dead code.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@tests/ТестыКолонокИЭкспортаКонфигурацииБенчмарков.os`:
- Around line 227-234: Тест добавляет в переменную Процентили произвольное
значение (33) но затем проверяет только значения из
КолонкаОтчетаБенчмарковПроцентиль.ПроцентилиПоУмолчанию(), поэтому добавленный
процентиль игнорируется; исправьте цикл: итерацию нужно выполнять не по
ПроцентилиПоУмолчанию(), а по самой переменной Процентили (та же логика проверок
с КолонкиОтчетаБенчмарков.Процентиль(Процентиль),
ТаблицаОтчета.Колонки.Найти(ИмяКолонки) и ТаблицаОтчета[0][ИмяКолонки]).
Обновите цикл "Для Каждого Процентиль Из ..." чтобы использовать Процентили
вместо вызова ПроцентилиПоУмолчанию().

---

Nitpick comments:
In `@tests/ТестыВалидацииКонфигурацииБенчмарков.os`:
- Around line 11-23: Remove the unused temporary files manager: delete the
module-level declaration "_МенеджерВременныхФайлов" and the setup/teardown code
that instantiates and calls Удалить() in ПередВсеми() and ПослеВсех();
specifically remove the "Новый МенеджерВременныхФайлов()" call in ПередВсеми and
the "_МенеджерВременныхФайлов.Удалить()" call in ПослеВсех() (or alternatively,
if you intend to use it later, wire it into tests that create temp files),
leaving only the tests that validate КонфигурацияБенчмарков.

In `@tests/ТестыИсточниковПараметров.os`:
- Around line 89-94: Tests duplicate the same setup creating
Тип("БенчмаркСАннотациямиКонфигурации") and initializing Конфигурация = Новый
КонфигурацияБенчмарков(Тип).ОчиститьИсточникиПараметров(); — extract this into a
shared helper function (e.g., CreateBenchmarkConfig или InitBenchmarkConfig) and
replace the repeated blocks in both tests with a call to that helper; ensure the
helper returns the initialized Конфигурация (and optionally Тип) and update
tests to use the returned values so callers reference the same symbols (Тип,
КонфигурацияБенчмарков, ОчиститьИсточникиПараметров).

In `@tests/ТестыКолонокИЭкспортаКонфигурацииБенчмарков.os`:
- Around line 11-23: Переменная и менеджер _МенеджерВременныхФайлов создаются в
ПередВсеми и удаляются в ПослеВсех, но нигде не используются в тестах; удалите
объявление Перем _МенеджерВременныхФайлов и вызовы в процедурах
ПередВсеми/ПослеВсех (или, если менеджер действительно нужен, используйте его в
тестах), обновив процедуры ПередВсеми и ПослеВсех (имена: ПередВсеми, ПослеВсех,
класс: МенеджерВременныхФайлов) соответственно — либо полностью убрать код
инициализации/удаления, либо подключить менеджер к логике тестов.

In `@tests/ТестыОбъединенияКонфигурацииБенчмарков.os`:
- Around line 11-23: Переменная и вызовы менеджера временных файлов не
используются; удалите объявление "_МенеджерВременныхФайлов", удалите или
закомментируйте процедуры "&Инициализация Процедура ПередВсеми() Экспорт" и
"&Завершение Процедура ПослеВсех() Экспорт" вместе с созданием и вызовом
_МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов() и
_МенеджерВременныхФайлов.Удалить(), либо если нужен менеджер — фактически
использовать экземпляр в тестах; проверяйте упоминания класса
МенеджерВременныхФайлов и функции ПередВсеми/ПослеВсех при правке, чтобы не
оставить невостребованные ссылки.

In `@tests/ТестыОсновныхНастроекКонфигурацииБенчмарков.os`:
- Around line 11-23: The _МенеджерВременныхФайлов variable and its lifecycle
handlers (ПередВсеми and ПослеВсех) are unused and should be removed; delete the
declaration "Перем _МенеджерВременныхФайлов;", the initialization in procedure
ПередВсеми (new МенеджерВременныхФайлов()) and the cleanup call in procedure
ПослеВсех (._Удалить()), or alternatively wire actual usage into tests—prefer
removing these three places to eliminate dead code.

In `@tests/ТестыОтчетаБенчмарков.os`:
- Around line 82-84: The conditional currently just returns when
ТестированиеБенчмарков.ЭтоOneScript1() is true, which hides that the test was
intentionally skipped; replace the silent return with the test framework's
skip/ignore mechanism (or at minimum a clear log message) so test reports show a
skip reason — locate the checks using ТестированиеБенчмарков.ЭтоOneScript1()
(the blocks at the shown occurrence and the similar one around lines 122-124)
and call the framework skip function or emit a descriptive log such as "Skipping
benchmark tests on OneScript1" instead of plain Возврат.

In `@tests/ТестыПредставленияПоказателей.os`:
- Line 150: Переименуйте процедуру ТестДолжен_ФормироватьФиксированнуюСтроку в
соответствии с остальными тестами, например в
ТестДолжен_ФорматироватьФиксированнуюСтроку; обновите все ссылки на эту
процедуру (вызовы, регистрация в тест-раннере или комментарии) чтобы сохранить
консистентное именование и избежать ошибок при запуске тестов.
- Around line 93-103: Расчёт РезультатСМинусом сейчас выполняется всегда (вызов
ПредставленияПоказателейБенчмарков.ПредставлениеЧисла с -ЧислоДляПроверки), хотя
проверка использует только ненулевые ЧислоДляПроверки; переместите вычисление
РезультатСМинусом внутрь блока Если ЧислоДляПроверки <> 0 Тогда и используйте
там ПредставленияПоказателейБенчмарков.ПредставлениеЧисла(-ЧислоДляПроверки,
ЕдиницаИзмерения), оставив существующую проверку
Ожидаем.Что(РезультатСМинусом).Равно("-" + ОжидаемоеПредставление); таким
образом вычисление пропустится при нуле и тест станет проще.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a53599cd-8577-444e-962a-48b090d1f5ee

📥 Commits

Reviewing files that changed from the base of the PR and between 86611a4 and 2ff5706.

📒 Files selected for processing (27)
  • tests/ТестыВалидацииКонфигурацииБенчмарков.os
  • tests/ТестыГенератораКейсовБенчмарков.os
  • tests/ТестыДескрипторовБенчмарков.os
  • tests/ТестыЗамеров.os
  • tests/ТестыЗапускаБенчмарков.os
  • tests/ТестыЗапускателяФайловБенчмарков.os
  • tests/ТестыИсполнителяБенчмарков.os
  • tests/ТестыИсполняющихСредКонфигурацииБенчмарков.os
  • tests/ТестыИсточниковПараметров.os
  • tests/ТестыКолонокИЭкспортаКонфигурацииБенчмарков.os
  • tests/ТестыКонфигурации.os
  • tests/ТестыМенеджераПроцессовБенчмарков.os
  • tests/ТестыОбработчиковСобытийБенчмарков.os
  • tests/ТестыОбъединенияКонфигурацииБенчмарков.os
  • tests/ТестыОсновныхНастроекКонфигурацииБенчмарков.os
  • tests/ТестыОтчетаБенчмарков.os
  • tests/ТестыПарсераПараметровБенчмарковCLI.os
  • tests/ТестыПодготовителяФайлаБенчмарка.os
  • tests/ТестыПодключенияБенчмарков.os
  • tests/ТестыПредставленияПоказателей.os
  • tests/ТестыСериализаторНастроекЗапускаБенчмарков.os
  • tests/ТестыСериализаторРезультатовБенчмарков.os
  • tests/ТестыСтатистики.os
  • tests/ТестыСтратегииХолодныйЗапуск.os
  • tests/ТестыСценарияЗапускаБенчмарка.os
  • tests/ТестыЭкспортеров.os
  • tests/ТестыЭталонов.os
💤 Files with no reviewable changes (1)
  • tests/ТестыКонфигурации.os
✅ Files skipped from review due to trivial changes (3)
  • tests/ТестыСтратегииХолодныйЗапуск.os
  • tests/ТестыЭталонов.os
  • tests/ТестыИсполняющихСредКонфигурацииБенчмарков.os
🚧 Files skipped from review as they are similar to previous changes (8)
  • tests/ТестыСериализаторНастроекЗапускаБенчмарков.os
  • tests/ТестыПарсераПараметровБенчмарковCLI.os
  • tests/ТестыМенеджераПроцессовБенчмарков.os
  • tests/ТестыЭкспортеров.os
  • tests/ТестыИсполнителяБенчмарков.os
  • tests/ТестыСериализаторРезультатовБенчмарков.os
  • tests/ТестыГенератораКейсовБенчмарков.os
  • tests/ТестыЗапускателяФайловБенчмарков.os

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (5)
tests/ТестыПредставленияПоказателейБенчмарков.os (1)

149-150: Унифицируйте нейминг теста с остальными ТестДолжен_Форматировать*.

На Line 150 используется ТестДолжен_ФормироватьФиксированнуюСтроку; для консистентности лучше ТестДолжен_ФорматироватьФиксированнуюСтроку.

Предлагаемый минимальный diff
-Процедура ТестДолжен_ФормироватьФиксированнуюСтроку() Экспорт
+Процедура ТестДолжен_ФорматироватьФиксированнуюСтроку() Экспорт
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыПредставленияПоказателейБенчмарков.os` around lines 149 - 150,
Rename the test procedure to match existing naming convention: change the
exported procedure declaration and any references from
"ТестДолжен_ФормироватьФиксированнуюСтроку" to
"ТестДолжен_ФорматироватьФиксированнуюСтроку" (update the procedure header and
any calls/registrations/export entries that reference the old name) so the test
name is consistent with other "ТестДолжен_Форматировать*" tests.
tests/ТестыСериализатораРезультатовБенчмарков.os (1)

155-161: Немного уточнить комментарии секций для лучшей читаемости.

На Line 155 блок помечен как // Действие, но фактически это извлечение данных перед проверками. Лучше переименовать, чтобы не сбивать при чтении.

Предлагаемое уточнение комментариев
-	// Действие
+	// Подготовка данных для проверки конфигурации
 	// Конфигурация
 	Конфигурация = РезультатПрочитанный.Конфигурация;
 	ИсполняющиеСреды = Конфигурация.ИсполняющиеСреды();

-	// Проверка
+	// Проверка конфигурации
 	Ожидаем.Что(Конфигурация, "Конфигурация").ИмеетТип("КонфигурацияБенчмарков");
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыСериализатораРезультатовБенчмарков.os` around lines 155 - 161,
Поменяй метку секции комментария "// Действие" на более точную, например "//
Подготовка" или "// Подготовка данных", поскольку в этом блоке выполняется
извлечение Конфигурация из РезультатПрочитанный и инициализация
ИсполняющиеСреды; обнови соседние секционные комментарии так же, чтобы они
соответствовали фазам Arrange/Act/Assert (например, "// Проверка" оставить для
вызова Ожидаем.Что и метода ИмеетТип), чтобы чтение теста с использованием
переменных Конфигурация, РезультатПрочитанный, ИсполняющиеСреды и проверкой
через Ожидаем.Что было однозначным.
tests/ТестыИсточниковПараметровБенчмарков.os (2)

87-124: Добавьте тест на идемпотентность ДобавитьИсточникПараметров.

Сейчас проверены только “добавить один” и “очистить”, но не проверяется поведение при повторном добавлении той же пары (ИмяПоля, Источник). Это важный регрессионный кейс, т.к. метод де-дуплицирует записи.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыИсточниковПараметровБенчмарков.os` around lines 87 - 124, Добавьте
тест проверяющий идемпотентность метода ДобавитьИсточникПараметров у класса
КонфигурацияБенчмарков: создайте Конфигурация = Новый
КонфигурацияБенчмарков(Тип).ОчиститьИсточникиПараметров(), вызовите дважды
Конфигурация.ДобавитьИсточникПараметров("ОбщееЗначение","Получить"), затем
получите ИсточникиПараметров = Конфигурация.ИсточникиПараметров() и assert'ы что
длина равна 1 и что ИсточникиПараметров[0].ИмяПоля и .Источник равны ожидаемым;
оставьте также существующие тесты ОчиститьИсточникиПараметров без изменений.

127-373: Снизьте дублирование setup-блока в тестах запуска.

Во многих тестах повторяется одинаковая подготовка (ПараметрыЗапуска/Конфигурация/Дескриптор). Вынесение в одну служебную функцию упростит поддержку и локальные правки.

Пример направления рефакторинга
+Функция ПодготовитьСценарий(ИмяБенчмарка, ОчищатьИсточникиПолей = Истина)
+	ПараметрыЗапуска = ПолучитьПараметрыЗапуска(ОчищатьИсточникиПолей);
+	Конфигурация = ПараметрыЗапуска.Конфигурация;
+	Дескриптор = ПараметрыЗапуска.Дескрипторы.НайтиПоИмени(ИмяБенчмарка);
+	Возврат Новый Структура("Конфигурация, Дескриптор", Конфигурация, Дескриптор);
+КонецФункции
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыИсточниковПараметровБенчмарков.os` around lines 127 - 373, В
тестах повторяется подготовка: вызов ПолучитьПараметрыЗапуска, извлечение
Конфигурация и поиск Дескриптора; создайте вспомогательную процедуру (например
ПолучитьСтандартныеПараметрыЗапуска или SetupПараметровЗапуска) которая вернёт
структуру с ПараметрыЗапуска, Конфигурация и Дескриптор, и замените в тестах
повторяющиеся блоки на один вызов этой процедуры (обновите тесты:
ТестДолжен_ЗапуститьСИсточникомПараметровДляОбщегоПоля,
ТестДолжен_ЗапуститьСНесколькимиИсточникамиПараметровДляОбщегоПоля,
ТестДолжен_ЗапуститьСИсточникомПараметровДляОбщегоПоляИзСтруктуры и т.д.),
сохранив семантику (передача параметров в Конфигурацию и последующие действия) и
не меняя имён проверок/ожиданий.
tests/ТестыОбъединенияКонфигурацийБенчмарков.os (1)

166-166: Избегайте захардкоженного дефолта 6 в проверке прогревов.

На Line 166 тест привязан к текущему значению по умолчанию, поэтому станет ложнопадающим при легитимной смене дефолта в КонфигурацияБенчмарков.

💡 Предложение
 	// Проверка
+	ОжидаемоеКоличествоПрогревовПоУмолчанию = Новый КонфигурацияБенчмарков().КоличествоПрогревочныхИтераций();
+
 	ИсточникиПараметров = КонфигурацияПриемник.ИсточникиПараметров();
 	ОбработчикиСобытияПередВсеми = КонфигурацияПриемник.ОбработчикиСобытия(СобытияБенчмарков.ПередВсеми);
 	ОбработчикиСобытияПослеВсех = КонфигурацияПриемник.ОбработчикиСобытия(СобытияБенчмарков.ПослеВсех);
@@
-	Ожидаем.Что(КонфигурацияПриемник.КоличествоПрогревочныхИтераций(), "Количество прогревочных итераций").Равно(6);
+	Ожидаем.Что(КонфигурацияПриемник.КоличествоПрогревочныхИтераций(), "Количество прогревочных итераций").Равно(ОжидаемоеКоличествоПрогревовПоУмолчанию);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыОбъединенияКонфигурацийБенчмарков.os` at line 166, Не привязывайте
тест к хардкодному значению 6: вместо сравнения
КонфигурацияПриемник.КоличествоПрогревочныхИтераций() с литералом 6, получите
ожидаемое значение из места, где хранится дефолт (например метод/поле в
КонфигурацияБенчмарков — используйте что-то вроде
КонфигурацияБенчмарков.КоличествоПрогревочныхИтерацийПоУмолчанию() или другой
доступный accessor) и сравнивайте
КонфигурацияПриемник.КоличествоПрогревочныхИтераций() с этим значением; если
такого метода нет, замените на проверку, которая валидирует семантику (например
>0) вместо фиксированного числа.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@tests/ТестыЗамеровБенчмарков.os`:
- Around line 17-20: The benchmark configuration created via Новый
КонфигурацияБенчмарков(Тип) that calls .УстановитьКоличествоИтераций(.),
.УстановитьКоличествоПрогревочныхИтераций(.), and
.УстановитьКоличествоВызововЗаИтерацию(.) must also enable memory tracking
because tests later assert memory metrics (ВыделяемаяПамять / этап Память);
update both occurrences of that configuration (the blocks starting at the shown
snippet and the second block around lines 141–144) to call
.ДобавитьМониторингПамяти() on the same configuration chain so memory sampling
is actually collected before assertions run.

In `@tests/ТестыОбъединенияКонфигурацийБенчмарков.os`:
- Around line 21-23: Сделайте процедуру ПослеВсех безопасной при частичной
инициализации: в теле процедуры ПослеВсех проверяйте существование/непустоту
переменной _МенеджерВременныхФайлов и оборачивайте вызов
_МенеджерВременныхФайлов.Удалить() в защищённый блок (или условие), чтобы при
сбое в ПередВсеми() вызов очистки не падал и не маскировал первичную ошибку;
используйте те же имена процедур/переменных (ПослеВсех, ПередВсеми,
_МенеджерВременныхФайлов) для поиска и правки.

---

Nitpick comments:
In `@tests/ТестыИсточниковПараметровБенчмарков.os`:
- Around line 87-124: Добавьте тест проверяющий идемпотентность метода
ДобавитьИсточникПараметров у класса КонфигурацияБенчмарков: создайте
Конфигурация = Новый КонфигурацияБенчмарков(Тип).ОчиститьИсточникиПараметров(),
вызовите дважды
Конфигурация.ДобавитьИсточникПараметров("ОбщееЗначение","Получить"), затем
получите ИсточникиПараметров = Конфигурация.ИсточникиПараметров() и assert'ы что
длина равна 1 и что ИсточникиПараметров[0].ИмяПоля и .Источник равны ожидаемым;
оставьте также существующие тесты ОчиститьИсточникиПараметров без изменений.
- Around line 127-373: В тестах повторяется подготовка: вызов
ПолучитьПараметрыЗапуска, извлечение Конфигурация и поиск Дескриптора; создайте
вспомогательную процедуру (например ПолучитьСтандартныеПараметрыЗапуска или
SetupПараметровЗапуска) которая вернёт структуру с ПараметрыЗапуска,
Конфигурация и Дескриптор, и замените в тестах повторяющиеся блоки на один вызов
этой процедуры (обновите тесты:
ТестДолжен_ЗапуститьСИсточникомПараметровДляОбщегоПоля,
ТестДолжен_ЗапуститьСНесколькимиИсточникамиПараметровДляОбщегоПоля,
ТестДолжен_ЗапуститьСИсточникомПараметровДляОбщегоПоляИзСтруктуры и т.д.),
сохранив семантику (передача параметров в Конфигурацию и последующие действия) и
не меняя имён проверок/ожиданий.

In `@tests/ТестыОбъединенияКонфигурацийБенчмарков.os`:
- Line 166: Не привязывайте тест к хардкодному значению 6: вместо сравнения
КонфигурацияПриемник.КоличествоПрогревочныхИтераций() с литералом 6, получите
ожидаемое значение из места, где хранится дефолт (например метод/поле в
КонфигурацияБенчмарков — используйте что-то вроде
КонфигурацияБенчмарков.КоличествоПрогревочныхИтерацийПоУмолчанию() или другой
доступный accessor) и сравнивайте
КонфигурацияПриемник.КоличествоПрогревочныхИтераций() с этим значением; если
такого метода нет, замените на проверку, которая валидирует семантику (например
>0) вместо фиксированного числа.

In `@tests/ТестыПредставленияПоказателейБенчмарков.os`:
- Around line 149-150: Rename the test procedure to match existing naming
convention: change the exported procedure declaration and any references from
"ТестДолжен_ФормироватьФиксированнуюСтроку" to
"ТестДолжен_ФорматироватьФиксированнуюСтроку" (update the procedure header and
any calls/registrations/export entries that reference the old name) so the test
name is consistent with other "ТестДолжен_Форматировать*" tests.

In `@tests/ТестыСериализатораРезультатовБенчмарков.os`:
- Around line 155-161: Поменяй метку секции комментария "// Действие" на более
точную, например "// Подготовка" или "// Подготовка данных", поскольку в этом
блоке выполняется извлечение Конфигурация из РезультатПрочитанный и
инициализация ИсполняющиеСреды; обнови соседние секционные комментарии так же,
чтобы они соответствовали фазам Arrange/Act/Assert (например, "// Проверка"
оставить для вызова Ожидаем.Что и метода ИмеетТип), чтобы чтение теста с
использованием переменных Конфигурация, РезультатПрочитанный, ИсполняющиеСреды и
проверкой через Ожидаем.Что было однозначным.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 89471d3b-4919-4538-b675-bf1fc2e43b5a

📥 Commits

Reviewing files that changed from the base of the PR and between 2ff5706 and 7a9c480.

📒 Files selected for processing (10)
  • tests/ТестыЗамеровБенчмарков.os
  • tests/ТестыИсточниковПараметровБенчмарков.os
  • tests/ТестыОбъединенияКонфигурацийБенчмарков.os
  • tests/ТестыПредставленияПоказателейБенчмарков.os
  • tests/ТестыСериализатораНастроекЗапускаБенчмарков.os
  • tests/ТестыСериализатораРезультатовБенчмарков.os
  • tests/ТестыСтатистикиБенчмарков.os
  • tests/ТестыСтратегииХолодногоЗапуска.os
  • tests/ТестыЭкспортаРезультатовБенчмарков.os
  • tests/ТестыЭталоновБенчмарков.os
✅ Files skipped from review due to trivial changes (1)
  • tests/ТестыСтратегииХолодногоЗапуска.os

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (7)
tests/ТестыИсполнителяБенчмарков.os (2)

77-95: Можно вынести повторяющийся setup в helper для снижения дублирования.

Блоки создания Тип/Конфигурация/Исполнитель повторяются; небольшой helper упростит поддержку тестов при будущих изменениях конфигурации.

Also applies to: 116-133

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыИсполнителяБенчмарков.os` around lines 77 - 95, Повторяющийся
setup в тесте (создание Тип, Конфигурация через КонфигурацияБенчмарков и вызов
ТестированиеБенчмарков.НастроитьКонфигурациюПодТесты, а затем создание
ИсполнительБенчмарков) нужно вынести в helper-функцию (например
CreateBenchmarkRunner или PrepareBenchmarkWithCheckpoint) которая возвращает
подготовленный ИсполнительБенчмарков и/или результат первого запуска; замените
повторяющиеся блоки на вызовы этого helper и используйте методы
УстановитьЧекпоинт и Запустить на возвращаемом исполнителе, чтобы убрать
дублирование и упростить поддержку теста (применить аналогично для блока
116-133).

46-63: Сделайте число итераций явным для детерминизма теста checkpoint.

Сейчас утверждение Результат.Чекпоинт = Неопределено зависит от дефолтной конфигурации. Лучше явно зафиксировать 1 итерацию в этом тесте (Line 46), чтобы поведение не менялось при изменении дефолтов.

💡 Предлагаемое изменение
-	Конфигурация.УстановитьСтратегию(СтратегииЗапускаБенчмарка.ХолодныйЗапуск);
+	Конфигурация
+		.УстановитьСтратегию(СтратегииЗапускаБенчмарка.ХолодныйЗапуск)
+		.УстановитьКоличествоИтераций(1);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыИсполнителяБенчмарков.os` around lines 46 - 63, Тест полагается на
дефолтное число итераций, поэтому сделайте количество итераций явным: до
создания ИсполнительБенчмарков или перед запуском вызова Исполнитель.Запустить
установите в объекте Конфигурация конкретное значение итераций (например,
установить свойство/параметр КоличествоИтераций = 1 или вызвать соответствующий
метод конфигурации) так, чтобы НомерИтерации и ожидаемое поведение Чекпоинта
детерминированно соответствовали 1 итерации при проверке Результат.Чекпоинт;
убедитесь, что изменение производится рядом с существующими строками, где
используется Конфигурация и УстановитьСтратегию.
tests/ТестыОсновныхНастроекКонфигурацииБенчмарков.os (3)

117-119: Добавьте поведенческие проверки, а не только echo-проверку конфигурации.

В этих тестах в основном проверяется, что значение осталось в Результат.Конфигурация; это может пройти даже если движок не применяет настройки к выполнению. Стоит дополнить проверками по Результат.Запуски[0].Замеры (фактическое влияние на запуск).

Also applies to: 138-140, 159-163

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыОсновныхНастроекКонфигурацииБенчмарков.os` around lines 117 - 119,
Текущие проверки утверждают только, что значение сохранено в
Результат.Конфигурация (например, Проверки вокруг
Результат.Конфигурация.КоличествоПрогревочныхИтераций()), но не подтверждают,
что настройка реально влияла на выполнение; добавьте поведенческие
ассерт-правила, которые проверяют фактические замеры в
Результат.Запуски[0].Замеры (например, длину массива замеров, наличие N
прогревочных итераций или изменение времени/показателей до/после прогрева) чтобы
убедиться, что КоличествоПрогревочныхИтераций применено при запуске; повторите
аналогичную правку для блоков, указанных в комментарии (строки 138-140 и
159-163).

39-41: Уберите зависимость от порядка строк в отчете.

Сейчас проверки привязаны к индексам строк, из‑за чего тесты могут стать flaky при изменении сортировки/порядка формирования отчета. Лучше проверять множество значений параметра, а не позиции.

🔧 Вариант правки (order-independent assertions)
-	Ожидаем.Что(Результат.Отчет.Таблица[0][КолонкиОтчетаБенчмарков.Параметр("Значение")]).Равно(10);
-	Ожидаем.Что(Результат.Отчет.Таблица[1][КолонкиОтчетаБенчмарков.Параметр("Значение")]).Равно(100);
+	ЗначенияПараметра = Новый Массив;
+	Для Каждого СтрокаОтчета Из Результат.Отчет.Таблица Цикл
+		ЗначенияПараметра.Добавить(СтрокаОтчета[КолонкиОтчетаБенчмарков.Параметр("Значение")]);
+	КонецЦикла;
+	Ожидаем.Что(ЗначенияПараметра).Содержит(10);
+	Ожидаем.Что(ЗначенияПараметра).Содержит(100);
+	Ожидаем.Что(ЗначенияПараметра).ИмеетДлину(2);

Also applies to: 62-64

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыОсновныхНастроекКонфигурацииБенчмарков.os` around lines 39 - 41,
Текущие проверки привязаны к индексам строк в Результат.Отчет.Таблица
(используют [0] и [1]), что делает тест флейким; замените их на независимую от
порядка проверку: пройдите по всем строкам таблицы, соберите значения через
КолонкиОтчетаБенчмарков.Парамет("Значение") в коллекцию и затем assert-ьте
наличие ожидаемых элементов (10 и 100) либо сравните множества/многомножества с
ожидаемым набором; используйте существующие проверки Ожидаем.Что для проверки
"содержит" или "равно множеству" вместо обращения к конкретным индексам.

225-270: Разбейте большую helper-процедуру на тематические проверки.

ПроверитьКонфигурациюБенчмаркаСАннотациямиКонфигурации делает слишком много сразу (стратегии, экспортеры, среды, колонки, параметры, источники). Декомпозиция упростит диагностику падений и сопровождение.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыОсновныхНастроекКонфигурацииБенчмарков.os` around lines 225 - 270,
Текущая процедура ПроверитьКонфигурациюБенчмаркаСАннотациямиКонфигурации
выполняет много разнородных проверок — разбей её на несколько тематических
процедур/тестов: выделите отдельные процедуры/тесты ПроверитьСтратегиюИНастройки
(проверки Конфигурация.Стратегия, СортировкаОтчета, ТребуетсяМониторингПамяти,
КоличествоИтераций и т.д.), ПроверитьЭкспортеры (используя КоллекцияЭкспортеры и
ФункцияПоискаЭкспортера), ПроверитьИсполняющиеСреды (проверки
ИсполняющиеСреды[*].Версия/Наименование/ЭтоЭталон), ПроверитьКолонки (проверки
Колонки содержит Мин/Макс), ПроверитьПараметры (проверки Параметры и их
Значение) и ПроверитьИсточникиПараметров (проверка ИсточникиПараметров), оставив
общий сбор данных (Экспортеры, КоллекцияЭкспортеры, ИсполняющиеСреды, Колонки,
Параметры, ИсточникиПараметров) в небольшом setup-блоке; обновите вызовы в
тестовой структуре так, чтобы каждый тематический чек вызывался отдельно от
главной процедуры для лучшей изолированности и читаемости.
tests/ТестыОбъединенияКонфигурацийБенчмарков.os (1)

146-148: Рассмотрите возможность добавить комментарий, поясняющий формулу расчёта прогревочных итераций.

Значение 6 в строке 148 предположительно рассчитывается автоматически на основе КоличествоИтераций = 222. Без комментария сложно понять, почему ожидается именно это значение, и тест станет хрупким при изменении формулы.

💡 Предложение
+	// Примечание: КоличествоПрогревочныхИтераций рассчитывается автоматически
+	// на основе КоличествоИтераций по формуле: ceil(КоличествоИтераций * 0.027) или аналогичной
 	Ожидаем.Что(КонфигурацияПриемник.КоличествоПрогревочныхИтераций(), "Количество прогревочных итераций").Равно(6);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыОбъединенияКонфигурацийБенчмарков.os` around lines 146 - 148,
Добавьте поясняющий комментарий рядом с проверкой
КонфигурацияПриемник.КоличествоПрогревочныхИтераций(), объясняющий точную
формулу или правило, по которому рассчитывается ожидаемое значение 6 (например:
"прогревочные итерации = max(1, round(КоличествоИтераций / N))" или другая
используемая формула), укажите входные значения (КоличествоИтераций = 222) и
источник правила (функция/конфиг/документация), и при необходимости добавьте
ссылку на место в коде/конфиге где эта формула реализована (например имя
метода/константы, отвечающей за расчёт) чтобы при изменении формулы тест было
легко обновить.
tests/ТестыКолонокИЭкспортаКонфигурацииБенчмарков.os (1)

1-269: Add lifecycle cleanup for benchmark artifacts to prevent inter-test contamination.

The reviewed file has 8 tests that call Бенчмаркинг.Запустить() without explicitly setting artifact directories, meaning they will create artifacts in the default location (.\BenchmarkArtifacts). Unlike other neighboring test modules (ТестыЭкспортаРезультатовБенчмарков.os, ТестыЗапускаБенчмарков.os, ТестыОтчетаБенчмарков.os, etc.), this file lacks an &После / ПослеЗапускаТеста() cleanup hook. This creates potential test pollution where artifacts from one test run remain and may affect subsequent test execution. Add the cleanup procedure:

&После
Процедура ПослеЗапускаТеста() Экспорт
	ФС.УдалитьФайлы(".\BenchmarkArtifacts");
КонецПроцедуры
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыКолонокИЭкспортаКонфигурацииБенчмарков.os` around lines 1 - 269,
Add a lifecycle cleanup that removes the default artifact directory after each
test run to avoid cross-test contamination: implement an &После exported
procedure named ПослеЗапускаТеста that runs once after tests and calls the
filesystem remover (e.g., invoke ФС.УдалитьФайлы on ".\BenchmarkArtifacts");
place it in this test file alongside existing tests so runs that call
Бенчмаркинг.Запустить() will not leave artifacts behind.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@tests/ТестыКолонокИЭкспортаКонфигурацииБенчмарков.os`:
- Around line 65-86: Текущий тест (Процедура
ТестДолжен_НеДублироватьКолонкуПриПовторномДобавлении) лишь проверяет наличие
колонки и значение, но не что она уникальна; добавьте явную проверку что имя
колонки встречается ровно один раз в результатной структуре столбцов: пройдитесь
по ТаблицаОтчета.Колонки (или используйте доступный метод поиска всех
совпадений) и посчитайте вхождения ИмяКолонки, затем добавьте утверждение
Ожидаем.Что(КоличествоВхождений).Равно(1); это изменение относится к проверке
после Результат = Бенчмаркинг.Запустить(Тип, Конфигурация) и затрагивает логику
вокруг КонфигурацияБенчмарков.ДобавитьКолонку и проверки на
ТаблицаОтчета.Колонки.Найти.

---

Nitpick comments:
In `@tests/ТестыИсполнителяБенчмарков.os`:
- Around line 77-95: Повторяющийся setup в тесте (создание Тип, Конфигурация
через КонфигурацияБенчмарков и вызов
ТестированиеБенчмарков.НастроитьКонфигурациюПодТесты, а затем создание
ИсполнительБенчмарков) нужно вынести в helper-функцию (например
CreateBenchmarkRunner или PrepareBenchmarkWithCheckpoint) которая возвращает
подготовленный ИсполнительБенчмарков и/или результат первого запуска; замените
повторяющиеся блоки на вызовы этого helper и используйте методы
УстановитьЧекпоинт и Запустить на возвращаемом исполнителе, чтобы убрать
дублирование и упростить поддержку теста (применить аналогично для блока
116-133).
- Around line 46-63: Тест полагается на дефолтное число итераций, поэтому
сделайте количество итераций явным: до создания ИсполнительБенчмарков или перед
запуском вызова Исполнитель.Запустить установите в объекте Конфигурация
конкретное значение итераций (например, установить свойство/параметр
КоличествоИтераций = 1 или вызвать соответствующий метод конфигурации) так,
чтобы НомерИтерации и ожидаемое поведение Чекпоинта детерминированно
соответствовали 1 итерации при проверке Результат.Чекпоинт; убедитесь, что
изменение производится рядом с существующими строками, где используется
Конфигурация и УстановитьСтратегию.

In `@tests/ТестыКолонокИЭкспортаКонфигурацииБенчмарков.os`:
- Around line 1-269: Add a lifecycle cleanup that removes the default artifact
directory after each test run to avoid cross-test contamination: implement an
&После exported procedure named ПослеЗапускаТеста that runs once after tests and
calls the filesystem remover (e.g., invoke ФС.УдалитьФайлы on
".\BenchmarkArtifacts"); place it in this test file alongside existing tests so
runs that call Бенчмаркинг.Запустить() will not leave artifacts behind.

In `@tests/ТестыОбъединенияКонфигурацийБенчмарков.os`:
- Around line 146-148: Добавьте поясняющий комментарий рядом с проверкой
КонфигурацияПриемник.КоличествоПрогревочныхИтераций(), объясняющий точную
формулу или правило, по которому рассчитывается ожидаемое значение 6 (например:
"прогревочные итерации = max(1, round(КоличествоИтераций / N))" или другая
используемая формула), укажите входные значения (КоличествоИтераций = 222) и
источник правила (функция/конфиг/документация), и при необходимости добавьте
ссылку на место в коде/конфиге где эта формула реализована (например имя
метода/константы, отвечающей за расчёт) чтобы при изменении формулы тест было
легко обновить.

In `@tests/ТестыОсновныхНастроекКонфигурацииБенчмарков.os`:
- Around line 117-119: Текущие проверки утверждают только, что значение
сохранено в Результат.Конфигурация (например, Проверки вокруг
Результат.Конфигурация.КоличествоПрогревочныхИтераций()), но не подтверждают,
что настройка реально влияла на выполнение; добавьте поведенческие
ассерт-правила, которые проверяют фактические замеры в
Результат.Запуски[0].Замеры (например, длину массива замеров, наличие N
прогревочных итераций или изменение времени/показателей до/после прогрева) чтобы
убедиться, что КоличествоПрогревочныхИтераций применено при запуске; повторите
аналогичную правку для блоков, указанных в комментарии (строки 138-140 и
159-163).
- Around line 39-41: Текущие проверки привязаны к индексам строк в
Результат.Отчет.Таблица (используют [0] и [1]), что делает тест флейким;
замените их на независимую от порядка проверку: пройдите по всем строкам
таблицы, соберите значения через КолонкиОтчетаБенчмарков.Парамет("Значение") в
коллекцию и затем assert-ьте наличие ожидаемых элементов (10 и 100) либо
сравните множества/многомножества с ожидаемым набором; используйте существующие
проверки Ожидаем.Что для проверки "содержит" или "равно множеству" вместо
обращения к конкретным индексам.
- Around line 225-270: Текущая процедура
ПроверитьКонфигурациюБенчмаркаСАннотациямиКонфигурации выполняет много
разнородных проверок — разбей её на несколько тематических процедур/тестов:
выделите отдельные процедуры/тесты ПроверитьСтратегиюИНастройки (проверки
Конфигурация.Стратегия, СортировкаОтчета, ТребуетсяМониторингПамяти,
КоличествоИтераций и т.д.), ПроверитьЭкспортеры (используя КоллекцияЭкспортеры и
ФункцияПоискаЭкспортера), ПроверитьИсполняющиеСреды (проверки
ИсполняющиеСреды[*].Версия/Наименование/ЭтоЭталон), ПроверитьКолонки (проверки
Колонки содержит Мин/Макс), ПроверитьПараметры (проверки Параметры и их
Значение) и ПроверитьИсточникиПараметров (проверка ИсточникиПараметров), оставив
общий сбор данных (Экспортеры, КоллекцияЭкспортеры, ИсполняющиеСреды, Колонки,
Параметры, ИсточникиПараметров) в небольшом setup-блоке; обновите вызовы в
тестовой структуре так, чтобы каждый тематический чек вызывался отдельно от
главной процедуры для лучшей изолированности и читаемости.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 8186ef31-a988-494f-8bb9-ee3015853fad

📥 Commits

Reviewing files that changed from the base of the PR and between 7a9c480 and 3dcd564.

📒 Files selected for processing (13)
  • .bsl-language-server.json
  • src/BenchmarkOneScript/core/running/Классы/КейсБенчмарка.os
  • tests/ТестыВалидацииКонфигурацииБенчмарков.os
  • tests/ТестыГенератораКейсовБенчмарков.os
  • tests/ТестыЗамеровБенчмарков.os
  • tests/ТестыИсполнителяБенчмарков.os
  • tests/ТестыКолонокИЭкспортаКонфигурацииБенчмарков.os
  • tests/ТестыМенеджераПроцессовБенчмарков.os
  • tests/ТестыОбъединенияКонфигурацийБенчмарков.os
  • tests/ТестыОсновныхНастроекКонфигурацииБенчмарков.os
  • tests/ТестыПредставленияПоказателейБенчмарков.os
  • tests/ТестыСценарияЗапускаБенчмарка.os
  • tests/ТестыЭкспортаРезультатовБенчмарков.os
✅ Files skipped from review due to trivial changes (2)
  • tests/ТестыГенератораКейсовБенчмарков.os
  • tests/ТестыСценарияЗапускаБенчмарка.os
🚧 Files skipped from review as they are similar to previous changes (5)
  • src/BenchmarkOneScript/core/running/Классы/КейсБенчмарка.os
  • tests/ТестыВалидацииКонфигурацииБенчмарков.os
  • tests/ТестыЭкспортаРезультатовБенчмарков.os
  • tests/ТестыМенеджераПроцессовБенчмарков.os
  • tests/ТестыПредставленияПоказателейБенчмарков.os

Comment on lines +65 to +86
Процедура ТестДолжен_НеДублироватьКолонкуПриПовторномДобавлении() Экспорт

// Подготовка
Тип = Тип("ПустойБенчмарк");

ИмяКолонки = КолонкиОтчетаБенчмарков.Мин;

Конфигурация = Новый КонфигурацияБенчмарков(Тип);
Конфигурация.ДобавитьКолонку(ИмяКолонки);
Конфигурация.ДобавитьКолонку(ИмяКолонки);

ТестированиеБенчмарков.НастроитьКонфигурациюПодТесты(Конфигурация);

// Действие
Результат = Бенчмаркинг.Запустить(Тип, Конфигурация);

// Проверка
ТаблицаОтчета = Результат.Отчет.Таблица;

Ожидаем.Что(ТаблицаОтчета.Колонки.Найти(ИмяКолонки)).Не_().ЭтоНеопределено();
Ожидаем.Что(ТаблицаОтчета[0][ИмяКолонки]).Заполнено();

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Тест недублирования не подтверждает отсутствие дубликата.

Сейчас проверяется только факт наличия колонки и значения. Если дубль попадёт в конфигурацию, этот тест может остаться зелёным. Добавьте явную проверку, что колонка встречается ровно один раз.

💡 Proposed fix
 	Ожидаем.Что(ТаблицаОтчета.Колонки.Найти(ИмяКолонки)).Не_().ЭтоНеопределено();
+	КоличествоКолонокСИменем = 0;
+	Для Каждого КолонкаТаблицы Из ТаблицаОтчета.Колонки Цикл
+		Если КолонкаТаблицы.Имя = ИмяКолонки Тогда
+			КоличествоКолонокСИменем = КоличествоКолонокСИменем + 1;
+		КонецЕсли;
+	КонецЦикла;
+	Ожидаем.Что(КоличествоКолонокСИменем).Равно(1);
 	Ожидаем.Что(ТаблицаОтчета[0][ИмяКолонки]).Заполнено();
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tests/ТестыКолонокИЭкспортаКонфигурацииБенчмарков.os` around lines 65 - 86,
Текущий тест (Процедура ТестДолжен_НеДублироватьКолонкуПриПовторномДобавлении)
лишь проверяет наличие колонки и значение, но не что она уникальна; добавьте
явную проверку что имя колонки встречается ровно один раз в результатной
структуре столбцов: пройдитесь по ТаблицаОтчета.Колонки (или используйте
доступный метод поиска всех совпадений) и посчитайте вхождения ИмяКолонки, затем
добавьте утверждение Ожидаем.Что(КоличествоВхождений).Равно(1); это изменение
относится к проверке после Результат = Бенчмаркинг.Запустить(Тип, Конфигурация)
и затрагивает логику вокруг КонфигурацияБенчмарков.ДобавитьКолонку и проверки на
ТаблицаОтчета.Колонки.Найти.

@sonar-openbsl-ru-qa-bot
Copy link

@Stivo182 Stivo182 merged commit c152222 into main Mar 25, 2026
29 of 30 checks passed
@Stivo182 Stivo182 deleted the test/add-benchmark-tests branch March 25, 2026 18:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant