Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

467 / запуск тестов из внешних обработок #471

Merged
merged 8 commits into from
Jan 19, 2025

Conversation

alkoleft
Copy link
Member

@alkoleft alkoleft commented Dec 18, 2024

Описание изменений


  • Добавлены тесты
  • Изменения отражены в документации (при необходимости)

Close #467

Summary by CodeRabbit

  • Новые функции
    • Добавлены процедуры для обработки тестов: ИсполняемыеСценарии, ЗагрузитьТестыВременнойОбработки, ИсполняемыеСценарииВременнойОбработки, ВыполнитьТестыВременнойОбработки.
    • Введена функция МетаданныеОбработки для получения метаданных обработки модулей.
    • Добавлены функции для представления объектов и структур.
    • Обновлена функция СобратьОбработку, теперь возвращает имя создаваемого файла.
    • Добавлена новая процедура ПослеИнициализации для обработки событий.
  • Изменения
    • Обновлены ссылки на описание метаданных в нескольких модулях.
    • Изменены сигнатуры процедур для улучшения ясности и контекста.
    • Удалены устаревшие функции, упрощая логику обработки тестов.
    • Обновлены функции для обработки окружения, добавлены новые свойства.
    • Обновлены скрипты для улучшения логирования и форматирования вывода.
  • Конфигурация
    • Обновлены XML-файлы конфигурации для включения новых и удаления устаревших модулей.
    • Обновлены пути для хранения логов и улучшено форматирование вывода в скриптах.

Copy link

coderabbitai bot commented Dec 18, 2024

Caution

Review failed

The pull request is closed.

Walkthrough

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

Changes

Файл Изменения
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl Удаление функций обработки тестовых модулей, изменение вызова создания исполняемого тестового модуля
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl Добавление новых функций ИсполняемыйТестовыйМодуль, ИсполняемыеНаборыМодуля, обновление сигнатур существующих функций
exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl Обновление ссылки на служебный модуль метаданных
exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl Добавление функции МетаданныеОбработки, обновление ссылок на фабрику метаданных
exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl Обновление структуры метаданных, добавление новых параметров
exts/yaxunit/src/CommonModules/ЮТФабрикаСлужебный/Module.bsl Удаление функции ОписаниеМетаданныеМодуля, изменение логики в КонтекстыПриложения
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl Добавление новых процедур для обработки временных тестов
tests/src/Configuration/Configuration.mdo Замена модуля ЮТМетаданныеСлужебный на ЮТМетаданныеСлужебныйКлиентСервер
tools/local-test/scripts/lib/prepare-db.sh Изменение пути логирования и улучшение вывода
tools/local-test/scripts/lib/print.sh Обновление определения цветов и форматирования вывода
tools/local-test/scripts/run-tests.sh Улучшение форматирования вывода и логирования
tools/v8unpack/build-epf.bat Замена жестко заданного имени файла на параметризованный ввод

Sequence Diagram

sequenceDiagram
    participant TestModule as Тестовый Модуль
    participant ClientServer as ЮТИсполнительСлужебныйКлиентСервер
    participant EventHandler as ЮТСобытияСлужебный
    
    TestModule->>ClientServer: Создание исполняемого теста
    ClientServer-->>TestModule: Возвращает описание теста
    TestModule->>EventHandler: Вызов обработчиков событий
    EventHandler-->>TestModule: Выполнение предварительных и последующих действий
Loading

Poem

🐰 В мире тестов, где код танцует,
Кролик логику перекраивает, чуя,
Модули служебные летят,
Клиент-сервер радостно спешит,
Метаданные поют, тесты бегут! 🚀


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d0d801d and ba93f9a.

📒 Files selected for processing (5)
  • exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (8 hunks)
  • exts/yaxunit/src/CommonModules/ЮТОбщийСлужебный/Module.bsl (2 hunks)
  • exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl (5 hunks)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (2 hunks)

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

SonarQube Quality Gate failed! failed

bug 1 Bugs
vulnerability 0 Vulnerabilities
code_smell 4 Code Smells

No data Coverage
duplication_lt_3 0.00% Duplication


КонецФункции

Функция ИсполняемыеНаборыМодуля(ТестовыйМодуль) Экспорт
Copy link
Contributor

Choose a reason for hiding this comment

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

🔗Уменьшите когнитивную сложность "ИсполняемыеНаборыМодуля" с 21 до 15

CODE_SMELL Codesmell  CRITICAL Critical

brainoverload parameters  Why is this an issue?


Если ОписаниеТестовогоОбъекта.Метаданные.Тип = "ВнешняяОбработка" Тогда
#Если Клиент Тогда
Возврат ПолучитьФорму(СтрШаблон("ВнешняяОбработка %1.Форма", ОписаниеТестовогоОбъекта.Метаданные.Имя));
Copy link
Contributor

Choose a reason for hiding this comment

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

🔗Не рекомендуемое использование метода ПолучитьФорму

BUG Bug  MAJOR Major

error  Why is this an issue?

@alkoleft alkoleft changed the title feat: запуск тестов из внешних обработок 467 / запуск тестов из внешних обработок Dec 18, 2024
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: 3

🧹 Nitpick comments (21)
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (9)

21-57: Рекомендуется уделить внимание валидации параметра "ТестовыйМодуль".
Если в будущем появится необходимость вызывать функцию с невалидными объектами, лучше добавить проверку входных данных или обработку исключений для повышения надежности.


59-109: Оптимизировать формирование тестовых наборов.
В цикле (строки 70–94) при формировании списков тестов для разных контекстов может быть полезно вынести повторяющийся код в отдельную функцию. Это улучшит читаемость и облегчит дальнейшее сопровождение.


113-117: Описание параметра «ОписаниеТестовогоОбъекта» в комментариях.
Использование нового параметра «ОписаниеТестовогоОбъекта» вместо «ТестовыйМодуль» выглядит более наглядно, но в комментарии желательно уточнить его тип и назначение для улучшения документации.


147-147: Лог сброса буфера ошибок.
Строка «ОписаниеТестовогоОбъекта.Ошибки.Очистить();» важна для предотвращения накопления ошибок между наборами тестов, но стоит дополнительно прокомментировать её назначение для ясности будущим разработчикам.


Line range hint 237-252: Убедиться в согласованности настроек транзакции с окружением.
При запуске тестов на сервере или в толстом клиенте нужно гарантировать, что глобальные транзакции не конфликтуют с другими механизмами. Попробуйте дополнить документацию упоминанием об этом.


Line range hint 312-320: Учесть особые случаи пропуска теста.
Если у теста уже есть ошибки, метод сразу возвращает. Возможно, стоит логировать пропуск для статистики.


321-321: Проверка «Ошибка = ЮТМетодыСлужебный.ВыполнитьМетодОбъектаСПерехватомОшибки(...)».
Рекомендуется дополнительно обрабатывать ситуацию, когда метод не найден или внезапно возвращает недопустимый тип результата. Это повысит надёжность тестового движка.


343-359: Назначение процедуры «ОбработатьОшибкиЧтенияНабора».
В текущей версии, если в наборе много ошибок чтения, процедура добавляет только один тест с ошибкой и выходит по «Прервать». При необходимости собирать все ошибки чтения может потребоваться доработка.


362-371: Типовая логика формирования теста с ошибкой чтения.
Функция «ОписаниеТестаСОшибкойЧтения» формирует особый тест с целью отображения ошибки. При необходимости расширенного описания целесообразно ввести дополнительные поля, указывающие, какой именно тест сломан.

exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl (1)

181-183: Уместна ли дополнительная проверка перед созданием ИсполняемогоТестовогоМодуля?
При формировании «ИсполняемыхТестовыхМодулей» из исходных «ТестовыеМодули» можно проверить корректность структуры входных данных. Это поможет предупредить ошибки при выполнении тестов.

exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl (7)

85-87: Дополнить комментарий примером использования.
Вызов «ПередВсемиТестамиМодуля» имеет два параметра: «ТестовыйМодуль» и «ОписаниеТестовогоМодуля», что может сбивать с толку новых разработчиков. Желательно дать пример, как эти параметры применяются.


97-100: Уточнить формат «ОписаниеТестовогоМодуля».
Документация ссылается на «ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля», но для целостности хорошо бы упомянуть его ключевые поля, чтобы повысить понимание кода.


124-128: Добавить уточнение по контексту «ПослеКаждогоТеста».
Разработчикам пригодится комментарий о том, что событие срабатывает для каждого теста, вне зависимости от успешности его выполнения. Так легче понимать, когда происходит этот вызов.


151-153: Документировать отличия «ПослеВсехТестовМодуля» от «ПослеТестовогоНабора».
Чтобы избежать путаницы, добавьте небольшое описание, чем именно отличается логика «ПослеВсехТестовМодуля» от более локального события «ПослеТестовогоНабора».


258-258: Локализация сообщения об отклонённом модуле.
Строка «Загрузка модуля %1отклонена…» — стоит убедиться, что сообщение полноценно локализовано и содержит пробел после имени модуля.


400-410: Учесть, что «ОбработчикиСобытия» могут иметь несколько имён.
В строках 407–410 происходит разбиение строки по запятым для вызова нескольких обработчиков. Убедитесь, что нет лишних пробелов или символов-разделителей, которые могут вызвать ошибки при поиске методов.


Line range hint 416-454: Явное логирование отсутствующего обработчика.
Если обработчик «ОбработчикСобытияПереопределен» не найден, вызывается исключение. Рассмотрите возможность ведения расширенного лога о том, в каком именно модуле не найден метод. Это ускорит отладку.

exts/yaxunit/src/Configuration/Configuration.mdo (1)

102-102: Улучшение архитектуры обработки метаданных

Добавление модуля ЮТМетаданныеСлужебныйКлиентСервер улучшает архитектуру системы, позволяя обрабатывать метаданные как на клиенте, так и на сервере. Это соответствует лучшим практикам разработки клиент-серверных приложений.

tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (3)

21-29: Добавьте документацию к экспортной процедуре

Рекомендуется добавить описание назначения процедуры и параметров транзакции.

+// Процедура добавляет тестовые сценарии для выполнения тестов обработки
+// 
+// Параметры:
+//  Нет
 Процедура ИсполняемыеСценарии() Экспорт

31-48: Добавьте обработку исключений

Рекомендуется добавить обработку возможных исключений при загрузке сценариев.

 Процедура ЗагрузитьТестыОбработки() Экспорт
+	Попытка
 		Сценарии = СценарииОбработки();
 		
 		ЮТест.ОжидаетЧто(Сценарии)
 			.Заполнено()
 			.Свойство("Метаданные").Заполнено()
 			.Свойство("Метаданные.Сервер").ЭтоИстина()
 			.Свойство("Метаданные.КлиентУправляемоеПриложение").ЭтоЛожь()
 			.Свойство("Метаданные.КлиентОбычноеПриложение").ЭтоЛожь()
 			.Свойство("НаборыТестов").Заполнено()
 			.Свойство("НаборыТестов[0].Тесты").Заполнено()
 				.ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестУспешно")
 				.ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестОшибка")
 				.ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестСломан")
 			;
+	Исключение
+		ВызватьИсключение НСтр("ru='Ошибка при загрузке тестов обработки: %1'", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
+	КонецПопытки
 КонецПроцедуры

108-140: Рассмотрите возможность параметризации тестовых сценариев

Текущая реализация использует жестко закодированные тестовые процедуры. Рекомендуется:

  1. Вынести текст процедур в отдельный макет
  2. Добавить возможность параметризации тестовых сценариев
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9fcb7c3 and 075f578.

📒 Files selected for processing (17)
  • exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (7 hunks)
  • exts/yaxunit/src/CommonModules/ЮТЛогированиеСлужебный/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl (3 hunks)
  • exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйКлиентСервер/ЮТМетаданныеСлужебныйКлиентСервер.mdo (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl (7 hunks)
  • exts/yaxunit/src/CommonModules/ЮТТестыСлужебный/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl (2 hunks)
  • exts/yaxunit/src/CommonModules/ЮТФабрикаСлужебный/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТЧитательСлужебный/Module.bsl (2 hunks)
  • exts/yaxunit/src/Configuration/Configuration.mdo (1 hunks)
  • exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo (1 hunks)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/ОМ_ВыполнениеТестовОбработки.mdo (1 hunks)
  • tests/src/Configuration/Configuration.mdo (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/ОМ_ВыполнениеТестовОбработки.mdo
  • exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйКлиентСервер/ЮТМетаданныеСлужебныйКлиентСервер.mdo
🧰 Additional context used
📓 Learnings (1)
tests/src/Configuration/Configuration.mdo (1)
Learnt from: alkoleft
PR: bia-technologies/yaxunit#413
File: exts/yaxunit/src/DataProcessors/ЮТКонструкторДвижений/ObjectModule.bsl:1-189
Timestamp: 2024-11-12T06:11:37.980Z
Learning: Тестовые модули находятся в расширении `tests` в общих модулях, которые именуются по следующей схеме:

| Тип тестируемого объекта | Префикс | Пример                                      |
| ------------------------ | ------- | ------------------------------------------- |
| Общий модуль             | `ОМ_`     | ОМ_ОбщегоНазначения                         |
| Регистр бухгалтерии      | `РБ_`     | РБ_Хозрасчетный, РБ_Хозрасчетный_НЗ         |
| Регистр накопления       | `РН_`     | РН_ОстаткиНаСкладах, РН_ОстаткиНаСкладах_ММ |
| Регистр расчета          | `РР_`     | РР_Зарплата, РР_Зарплата_НЗ                 |
| Регистр сведений         | `РС_`     | РС_АдресныйКлассификатор                    |
| Бизнес процесс           | `БП_`     | БП_Согласование                             |
| Справочник               | `Спр_`    | Спр_Пользователи, Спр_Пользователи_МО       |
| План счетов              | `ПС_`     | ПС_Хозрасчетный                             |
| План видов расчета       | `ПВР_`    | ПВР_Зарплатный                              |
| План видов характеристик | `ПВХ_`    | ПВХ_Субконто, ПВХ_Субконто_ММ               |
| Документ                 | `Док_`    | Док_ПКО                                     |
| Перечисление             | `Пер_`    | Пер_СтатусСогласования                      |
| План обмена              | `ПО_`     | ПО_РИБ, ПО_РИБ_ММ                           |
| Задача                   | `Зад_`    | Зад_Задача                                  |
| Обработка                | `Обр_`    | Обр_ЗакрытиеМесяца, Обр_ЗакрытиеМесяца_МО   |
| Отчет                    | `Отч_`    | Отч_УниверсальныйОтчет                      |
🔇 Additional comments (18)
exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (4)

141-141: Убедитесь в корректности логики завершения тестов.
После вызова «ПослеВсехТестовМодуля» могут остаться незакрытые транзакции или несохранённые данные. Проверьте, что все ресурсы освобождаются и корректно обрабатываются.


Line range hint 199-229: Проверить корректность использования транзакций внутри тестов.
Есть риск, что при большом количестве тестов транзакция может остаться активной из-за неочевидного завершения цикла. Рекомендуется убедиться, что транзакция всегда завершается, вне зависимости от результата выполнения теста.


256-261: Единообразная обработка «КонтекстСломан».
В ветке Иначе (строки 261–264) также вызывается «ПослеКаждогоТеста». Убедитесь, что при поломке контекста не возникает дублирующего вызова или пропуска нужной логики.


373-387: Использование «ВнешняяОбработка» для загрузки формы.
Код (строки 379–384) предполагает разные ветви для клиента и сервера при создании внешней обработки. Проверьте, что все платформенные сценарии корректно учтены (например, тонкий клиент).

exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl (3)

110-114: Проверить соответствие фактического функционала описанию.
Параметр «Тест» в процедуре «ПередКаждымТестом» может иметь отличную структуру от ожидаемой. Если это критично, следует добавить проверки для предотвращения ошибок.


138-141: Исключительные ситуации при «ПослеТестовогоНабора».
Если набор завершается с критической ошибкой, следует ли процедуре всё равно вызываться? Уточните этот момент, так как некоторые API отрабатывают события иначе при критических сбоях.


Line range hint 278-300: Проверьте порядок вызова серверных обработчиков событий.
Логика (строки 282–296) разделяет, вызывается ли обработка на клиенте перед обработкой модуля или после. В некоторых сценариях может потребоваться более гибкий подход к разделению «до и после».

exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo (1)

30-30: Проверьте согласованность зависимостей после замены модуля.
Заменён «CommonModule.ЮТМетаданныеСлужебный» на «CommonModule.ЮТМетаданныеСлужебныйКлиентСервер». Убедитесь, что все вызовы старого модуля корректно перенесены в новый модуль и нигде не остались неактуальные вызовы.

exts/yaxunit/src/CommonModules/ЮТТестыСлужебный/Module.bsl (1)

208-208: Обновлена ссылка на метод в комментарии

Изменение отражает перенос функциональности из служебного модуля в основной модуль фабрики.

exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl (1)

34-34: Обновление ссылки на служебный модуль

Изменение ссылки с ЮТМетаданныеСлужебный на ЮТМетаданныеСлужебныйКлиентСервер для проверки описания объекта метаданных. Убедитесь, что все необходимые зависимости доступны.

✅ Verification successful

Изменение корректно реализовано

Проверка показала, что:

  • Метод ЭтоОписаниеОбъектаМетаданных теперь определен в модуле ЮТМетаданныеСлужебныйКлиентСервер
  • Все вызовы метода в кодовой базе уже используют новый модуль ЮТМетаданныеСлужебныйКлиентСервер
  • Изменение согласовано во всех зависимых модулях
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверка использования модуля в других местах кода

rg "ЮТМетаданныеСлужебный\.ЭтоОписаниеОбъектаМетаданных" -A 2

Length of output: 63


Script:

#!/bin/bash
# Поиск всех использований метода ЭтоОписаниеОбъектаМетаданных
rg "ЭтоОписаниеОбъектаМетаданных" -A 2

# Поиск файлов с упоминанием модулей ЮТМетаданныеСлужебный и ЮТМетаданныеСлужебныйКлиентСервер
rg -l "ЮТМетаданныеСлужебный|ЮТМетаданныеСлужебныйКлиентСервер"

# Проверка содержимого модуля ЮТМетаданныеСлужебныйКлиентСервер
fd -e bsl "ЮТМетаданныеСлужебныйКлиентСервер" --exec cat {}

Length of output: 2850

exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl (2)

147-148: Обновление источника метаданных

Изменение источника описания метаданных с ЮТФабрикаСлужебный на ЮТФабрика. Добавлено явное указание типа "ОбщийМодуль".


161-172: Добавлена новая функция для работы с метаданными обработки

Функция МетаданныеОбработки корректно реализует получение метаданных для внешних обработок с настройкой клиент-серверного поведения.

exts/yaxunit/src/CommonModules/ЮТФабрикаСлужебный/Module.bsl (1)

483-494: Улучшена логика определения контекстов приложения!

Изменения в функции КонтекстыПриложения повышают читаемость кода и упрощают логику определения доступных контекстов. Использование ЮТОкружение.ОписаниеОкружения() делает код более поддерживаемым.

tests/src/Configuration/Configuration.mdo (1)

36-36: Корректное добавление модуля тестирования

Модуль добавлен в соответствии с принятыми соглашениями об именовании (префикс ОМ_ для тестовых модулей общих модулей).

exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl (1)

288-288: Корректное использование клиент-серверного модуля

Изменение соответствует архитектурному решению по использованию клиент-серверных модулей для работы с метаданными.

exts/yaxunit/src/CommonModules/ЮТЛогированиеСлужебный/Module.bsl (1)

132-132: Корректное обновление документации.

Комментарий обновлен в соответствии с перемещением функции ОписаниеМетаданныеМодуля из модуля ЮТФабрикаСлужебный в модуль ЮТФабрика.

exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl (2)

Line range hint 425-433: Улучшение документации метаданных модуля.

Добавлено описание нового поля Тип, которое позволяет различать типы модулей (общий модуль или внешняя обработка). Документация четко описывает поддерживаемые значения.


436-436: Проверьте значение по умолчанию для поля Тип.

Значение по умолчанию установлено как "ОбщийМодуль". Убедитесь, что это не вызовет проблем при работе с внешними обработками.

✅ Verification successful

Значение по умолчанию "ОбщийМодуль" для поля Тип корректно.

Анализ кода показывает, что:

  • Поле Тип используется для различения типов модулей и поддерживает два значения: "ОбщийМодуль" и "ВнешняяОбработка"
  • В методе ТестовыйМодуль есть корректная обработка обоих типов
  • При работе с внешними обработками тип явно переопределяется в методе МетаданныеОбработки
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Проверка использования поля Тип в коде

# Поиск использования ОписаниеМетаданныеМодуля().Тип
rg -A 5 "ОписаниеМетаданныеМодуля\(\)\.Тип"

# Поиск проверок на тип модуля
ast-grep --pattern 'if ($x = "ВнешняяОбработка") { $$$ }'

Length of output: 105


Script:

#!/bin/bash
# Поиск использования поля "Тип" в контексте описания модуля
rg -i "тип.*общиймодуль|общиймодуль.*тип" -A 5 -B 5

# Поиск всех проверок типа модуля
rg -i "тип\s*=\s*[\"'].*[\"']" -A 5 -B 5

# Поиск использования внешних обработок
rg -i "внешняяобработка|внешний\s*отчет" -A 5 -B 5

Length of output: 25779

@github-actions github-actions bot deleted a comment from coderabbitai bot Dec 18, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Dec 18, 2024
@github-actions github-actions bot deleted a comment from coderabbitai bot Dec 18, 2024
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: 16

🧹 Nitpick comments (15)
tools/local-test/scripts/test-it.sh (1)

Line range hint 41-53: Рекомендация по улучшению управления директориями

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

Пример реализации:

create_directories() {
    local dirs=(
        "${LOGS_PATH}"
        "${DB_PATH}"
        "${EXPORT_PATH}"
        "${BINARY_PATH}"
        "${TMP_PATH}"
        "${RESULT_PATH}"
    )
    
    for dir in "${dirs[@]}"; do
        mkdir -p "${dir}"
    done
}

cleanup_directories() {
    local dirs=(
        "${TMP_PATH:?}"
        "${RESULT_PATH:?}"
        "${LOGS_PATH:?}"
    )
    
    for dir in "${dirs[@]}"; do
        rm -rf "${dir}"/*
    done
}
tools/local-test/scripts/steps/convert-to-xml.sh (1)

1-10: Проверить наличие переменных окружения

Скрипт использует несколько переменных окружения ($LIB_PATH, $EXPORT_PATH, $EDT_PATH, $TMP_PATH, $ROOT_PATH, $LOGS_PATH), но не проверяет их наличие.

Рекомендую добавить проверки в начало скрипта:

+required_vars=("LIB_PATH" "EXPORT_PATH" "EDT_PATH" "TMP_PATH" "ROOT_PATH" "LOGS_PATH")
+for var in "${required_vars[@]}"; do
+    if [[ -z "${!var}" ]]; then
+        echo "Ошибка: Переменная $var не установлена"
+        exit 1
+    fi
+done
+
 PROJECT_NAME=$1
 PROJECT_PATH=$2
🧰 Tools
🪛 Shellcheck (0.10.0)

[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.

(SC2148)

tools/local-test/scripts/steps/run-filedb-test.sh (1)

10-14: Улучшите обработку вывода логов

Логирование улучшено, но есть возможность для оптимизации:

  1. Нет проверки существования директории для логов
  2. Возможно переполнение лог-файла при многократном запуске

Предлагаю следующие изменения:

+if [ ! -d "$LOGS_PATH" ]; then
+    mkdir -p "$LOGS_PATH"
+fi
+
+# Очистка старого лог-файла
+> "$LOGS_PATH/$JOB_NAME.log"
+
 echo "=========== Подготовка информационной базы ${BOLD}$JOB_NAME${RESET}"
 $ONEC_PATH/1cv8 CREATEINFOBASE File=$TEST_DB_PATH /DisableStartupDialogs /DisableStartupMessages /Out $LOGS_PATH/$JOB_NAME.log >> $LOGS_PATH/$JOB_NAME.log 2>&1
tools/local-test/scripts/lib/print.sh (3)

9-15: Добавьте документацию к функции print_state

Функция корректно обрабатывает статус выполнения команды, но требуется документация.

+# Выводит статус выполнения команды
+# Аргументы:
+#   $1 - описание выполненной операции
+# Возвращает:
+#   Ничего
 function print_state {
     if [[ $? -eq 0 ]]; then

18-34: Добавьте проверку входных параметров

Функции печати не проверяют наличие обязательного параметра сообщения.

Предлагаю добавить проверку, например для функции print_success:

 function print_success {
+    if [ -z "$1" ]; then
+        print_error "Отсутствует текст сообщения"
+        return 1
+    fi
     echo -e "  ${GREEN}🟢 ${RESET} $1"
 }

Аналогичную проверку следует добавить в остальные функции печати.


1-34: Рассмотрите возможность добавления тестов

Для обеспечения надёжности библиотеки печати рекомендуется добавить модульные тесты.

Я могу помочь с написанием тестов для проверки:

  • Корректности цветового оформления
  • Обработки ошибочных ситуаций
  • Форматирования вывода

Хотите, чтобы я создал issue для отслеживания этой задачи?

🧰 Tools
🪛 Shellcheck (0.10.0)

[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.

(SC2148)


[warning] 5-5: NC appears unused. Verify use (or export if used externally).

(SC2034)

tools/local-test/scripts/lib/run-tests.sh (1)

28-29: Рассмотрите добавление временных меток

Для улучшения отладки и анализа производительности рекомендуется добавить временные метки к сообщениям о начале и завершении тестирования.

Предлагаемые изменения:

-print_run "=========== Тестирование ${BOLD}$JOB_NAME${RESET}"
+print_run "=========== [$(date '+%Y-%m-%d %H:%M:%S')] Тестирование ${BOLD}$JOB_NAME${RESET}"

$ONEC_PATH/$APP ENTERPRISE $CONNECTION_STRING /DisableSplash /DisableStartupDialogs /DisableStartupMessages $RUN_MODE /C "RunUnitTests=$CONFIG" >> $LOGS_PATH/$JOB_NAME.log 2>&1

RESULT=$(head -n 1 $RESULT_PATH/exit-code-$JOB_NAME.txt)
RESULT=${RESULT:1:1}

if [[ "$RESULT" == "0" ]]; then
-    print_success "Тестирование ${BOLD}$JOB_NAME${RESET} завершилось успешно"
+    print_success "[$(date '+%Y-%m-%d %H:%M:%S')] Тестирование ${BOLD}$JOB_NAME${RESET} завершилось успешно"
else 
-    print_error "Тестирование ${BOLD}$JOB_NAME${RESET} завершилось с ошибкой"
+    print_error "[$(date '+%Y-%m-%d %H:%M:%S')] Тестирование ${BOLD}$JOB_NAME${RESET} завершилось с ошибкой"
fi

Also applies to: 35-37

tools/local-test/scripts/lib/prepare-db.sh (2)

4-6: Проверьте существование print.sh перед использованием

Добавьте проверку существования файла print.sh перед его подключением для предотвращения ошибок выполнения.

-. $LIB_PATH/print.sh
+if [ ! -f "$LIB_PATH/print.sh" ]; then
+    echo "Ошибка: Файл print.sh не найден в $LIB_PATH"
+    exit 1
+fi
+. "$LIB_PATH/print.sh"

Line range hint 1-32: Рекомендации по улучшению скрипта в целом

  1. Добавьте проверку входных параметров
  2. Используйте константы для часто используемых значений
  3. Добавьте очистку временных файлов
+#!/bin/bash
+set -euo pipefail
+
+if [ $# -ne 2 ]; then
+    echo "Использование: $0 <строка подключения> <имя задания>"
+    exit 1
+fi
+
 CONNECTION_STRING=$1
 JOB_NAME=$2
+
+# Очистка при выходе
+trap 'rm -f "$LOGS_PATH/$JOB_NAME.log"' EXIT
🧰 Tools
🪛 Shellcheck (0.10.0)

[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.

(SC2148)

tools/local-test/scripts/steps/build-artifacts.sh (2)

8-11: Рекомендуется добавить обработку ошибок

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

Предлагаю следующие изменения:

-if [[ -f $BINARY_PATH/configuration.cf ]]; then
+if [[ -f "$BINARY_PATH/configuration.cf" ]] && [[ -r "$BINARY_PATH/configuration.cf" ]]; then
     configuration_exists=1
     print_success "  Сборка конфигурации ${BOLD}не требуется${RESET}"
+else
+    print_state "  Проверка файла конфигурации ${BOLD}не удалась${RESET}"
 fi

Line range hint 13-21: Добавить валидацию расширений

Текущая реализация обработки расширений работает корректно, но рекомендуется добавить дополнительные проверки.

Предлагаю добавить проверку корректности файлов расширений:

 for key in "${extensions[@]}";do
+    if [[ ! -d "$BINARY_PATH" ]]; then
+        print_state "  Директория ${BOLD}$BINARY_PATH${RESET} не существует"
+        exit 1
+    fi
     if [[ -f $BINARY_PATH/$key.cfe ]]; then
         print_success "  Сборка $key ${BOLD}не требуется${RESET}"
     else
+        if [[ ! -f "$EXPORT_PATH/$key" ]]; then
+            print_state "  Исходный файл расширения ${BOLD}$key${RESET} не найден"
+            continue
+        fi
         extensions_set+=($key)
     fi
 done
🧰 Tools
🪛 Shellcheck (0.10.0)

[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.

(SC2148)


[warning] 4-4: Use "${var:?}" to ensure this never expands to /* .

(SC2115)


[warning] 19-19: Quote to prevent word splitting/globbing, or split robustly with mapfile or read -a.

(SC2206)

exts/yaxunit/src/CommonModules/ЮТФабрикаСлужебный/Module.bsl (1)

483-494: Уточнить корректность проверки среды и добавляемых контекстов
Проверка «Если ОбычноеПриложение» может работать корректно в большинстве сценариев, но стоит убедиться, что при появлении других типов окружения (например, тонкий клиент, веб-клиент и т.д.) условие по-прежнему будет действовать корректно. Кроме того, если впоследствии понадобится учитывать дополнительные режимы, возможно, стоит вынести логику по определению контекстов в отдельную функцию или структуру для гибкости.

exts/yaxunit/src/CommonModules/ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (2)

92-107: Рекомендуется добавить очистку временных файлов

Функция создает временный файл с уникальным именем, но не предусматривает его удаление после использования. Рекомендуется добавить механизм очистки временных файлов.


139-146: Рекомендуется добавить обработку ошибок при создании COM-объекта

При создании COM-объекта могут возникнуть ошибки. Рекомендуется добавить обработку исключений для более надежной работы.

 #Если НЕ ВебКлиент Тогда
+    Попытка
         WshShell = Новый COMОбъект("WScript.Shell");
         WshShell.CurrentDirectory = РабочийКаталог;
         Рез = WshShell.Run(ТекстКоманды, 0, -1);
         
         Возврат Рез;
+    Исключение
+        ВызватьИсключение "Ошибка при выполнении команды: " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
+    КонецПопытки
 #КонецЕсли
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)

108-140: Рекомендуется добавить документацию к тестовым процедурам

Для улучшения поддержки кода рекомендуется добавить описание назначения каждой тестовой процедуры и ожидаемых результатов.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 075f578 and 091b06e.

⛔ Files ignored due to path filters (1)
  • exts/yaxunit/src/CommonTemplates/ЮТV8UnpackWS/Template.bin is excluded by !**/*.bin
📒 Files selected for processing (34)
  • exts/yaxunit/src/CommonModules/ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (3 hunks)
  • exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (7 hunks)
  • exts/yaxunit/src/CommonModules/ЮТЛогированиеСлужебный/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl (3 hunks)
  • exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйКлиентСервер/ЮТМетаданныеСлужебныйКлиентСервер.mdo (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl (7 hunks)
  • exts/yaxunit/src/CommonModules/ЮТТестыСлужебный/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl (2 hunks)
  • exts/yaxunit/src/CommonModules/ЮТФабрикаСлужебный/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТЧитательСлужебный/Module.bsl (2 hunks)
  • exts/yaxunit/src/Configuration/Configuration.mdo (1 hunks)
  • exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo (1 hunks)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/ОМ_ВыполнениеТестовОбработки.mdo (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТТесты/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТФильтрацияСлужебный/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl (2 hunks)
  • tests/src/CommonModules/ТестовыеДанные/Module.bsl (1 hunks)
  • tests/src/Configuration/Configuration.mdo (1 hunks)
  • tools/local-test/scripts/lib/prepare-db.sh (1 hunks)
  • tools/local-test/scripts/lib/print.sh (1 hunks)
  • tools/local-test/scripts/lib/run-tests.sh (1 hunks)
  • tools/local-test/scripts/steps/build-artifacts.sh (2 hunks)
  • tools/local-test/scripts/steps/clean-outdated.sh (1 hunks)
  • tools/local-test/scripts/steps/convert-to-xml.sh (1 hunks)
  • tools/local-test/scripts/steps/run-filedb-test.sh (1 hunks)
  • tools/local-test/scripts/steps/run-serverdb-test.sh (1 hunks)
  • tools/local-test/scripts/test-it.sh (2 hunks)
  • tools/v8unpack/build-epf.bat (1 hunks)
  • tools/v8unpack/build-epf.sh (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • tools/v8unpack/build-epf.bat
🚧 Files skipped from review as they are similar to previous changes (10)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/ОМ_ВыполнениеТестовОбработки.mdo
  • exts/yaxunit/src/Configuration/Configuration.mdo
  • tests/src/Configuration/Configuration.mdo
  • exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйКлиентСервер/ЮТМетаданныеСлужебныйКлиентСервер.mdo
  • exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo
  • exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl
  • exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
  • exts/yaxunit/src/CommonModules/ЮТЛогированиеСлужебный/Module.bsl
  • exts/yaxunit/src/CommonModules/ЮТЧитательСлужебный/Module.bsl
  • exts/yaxunit/src/CommonModules/ЮТТестыСлужебный/Module.bsl
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/steps/run-serverdb-test.sh

[warning] 18-18: Quotes/backslashes in this variable will not be respected.

(SC2090)


[warning] 20-20: Quotes/backslashes in this variable will not be respected.

(SC2090)

tools/local-test/scripts/test-it.sh

[warning] 53-53: Use "${var:?}" to ensure this never expands to /* .

(SC2115)

tools/local-test/scripts/steps/clean-outdated.sh

[warning] 19-19: Use "${var:?}" to ensure this never expands to / .

(SC2115)

tools/local-test/scripts/steps/build-artifacts.sh

[warning] 4-4: Use "${var:?}" to ensure this never expands to /* .

(SC2115)

tools/local-test/scripts/lib/print.sh

[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.

(SC2148)


[warning] 5-5: NC appears unused. Verify use (or export if used externally).

(SC2034)

🔇 Additional comments (25)
tools/local-test/scripts/steps/clean-outdated.sh (1)

18-18: Улучшенное форматирование сообщений

Изменения в форматировании сообщений улучшают читаемость вывода скрипта. Использование переменных ${BOLD} и ${RESET} делает статус более заметным.

Also applies to: 21-21, 23-23

tools/local-test/scripts/steps/run-serverdb-test.sh (1)

6-7: Подключение библиотеки print.sh выполнено корректно

Корректное использование source для подключения функций логирования.

tools/local-test/scripts/test-it.sh (1)

41-43: Структура логирования реализована корректно

Добавление централизованного пути для логов и создание соответствующей директории следует общему паттерну скрипта и улучшает организацию выходных данных.

tools/local-test/scripts/steps/convert-to-xml.sh (2)

4-4: Подтверждаю добавление библиотеки печати

Добавление библиотеки print.sh улучшает согласованность вывода логов в системе.


7-7: Улучшение форматирования вывода

Замена прямых echo на функции print_info и print_run улучшает читаемость и унифицирует вывод логов.

Also applies to: 9-9

tools/local-test/scripts/steps/run-filedb-test.sh (1)

6-7: Проверьте наличие файла print.sh

Добавлена зависимость от файла print.sh. Убедитесь, что файл существует в указанном пути.

✅ Verification successful

Файл print.sh найден и содержит все необходимые функции

Файл print.sh существует по пути tools/local-test/scripts/lib/print.sh и содержит все требуемые функции для вывода сообщений:

  • print_state - для вывода состояния
  • print_error - для вывода ошибок
  • print_info - для вывода информационных сообщений

Импорт файла корректен и безопасен для использования.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if print.sh exists and contains required functions

# Check if print.sh exists
if [ -f "$LIB_PATH/print.sh" ]; then
    # Check for required functions
    grep -E "print_(state|error|info)" "$LIB_PATH/print.sh"
fi

Length of output: 22


Script:

#!/bin/bash
# Search for print.sh file in the repository
fd "print.sh" --type f

# If found, check its content
fd "print.sh" --type f --exec cat {}

Length of output: 785

tools/v8unpack/build-epf.sh (1)

Line range hint 1-5: Проверьте использование скрипта в CI/CD

Убедитесь, что все места вызова скрипта обновлены с учетом нового параметра.

tools/local-test/scripts/lib/run-tests.sh (2)

28-28: Улучшение читаемости вывода с помощью форматирования

Хорошее улучшение с использованием выделения жирным шрифтом для названия задачи. Это повышает читаемость вывода при параллельном выполнении нескольких тестов.

Also applies to: 35-35, 37-37


29-29: Проверьте ротацию лог-файлов

Перенаправление вывода в лог-файл - правильное решение, но стоит учесть:

  1. Возможное переполнение директории логов при частом запуске тестов
  2. Отсутствие механизма очистки старых логов

Рекомендуется добавить механизм очистки старых лог-файлов, например:

  • Удаление логов старше N дней
  • Ограничение максимального размера директории с логами
tools/local-test/scripts/lib/prepare-db.sh (1)

26-28: Проверьте наличие файла DisableSafeMode.epf

Добавьте проверку существования файла DisableSafeMode.epf перед его выполнением.

+if [ ! -f "$LIB_PATH/DisableSafeMode.epf" ]; then
+    print_state "Ошибка: Файл DisableSafeMode.epf не найден в ${BOLD}$LIB_PATH${RESET}"
+    exit 1
+fi
 $ONEC_PATH/1cv8 ENTERPRISE $BASE_ARGUMENTS /Execute $LIB_PATH/DisableSafeMode.epf  >> $LOGS_PATH/$JOB_NAME.log 2>&1
 SUCCESS=$?
+if [ $SUCCESS -ne 0 ]; then
+    print_state "Ошибка при снятии безопасного режима в ${BOLD}$JOB_NAME${RESET}"
+    exit $SUCCESS
+fi
 print_state "Снятие безопасного режима ${BOLD}$JOB_NAME${RESET}"
✅ Verification successful

Файл DisableSafeMode.epf существует в нужной директории

Файл DisableSafeMode.epf присутствует в директории tools/local-test/scripts/lib/, которая соответствует переменной $LIB_PATH в скрипте. Тем не менее, добавление проверки существования файла и обработки ошибок, как предложено в review comment, является хорошей практикой для повышения надежности скрипта.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверка наличия файла DisableSafeMode.epf
fd -t f "DisableSafeMode.epf" --exec file {}

Length of output: 82


Script:

#!/bin/bash
# Попробуем найти файл DisableSafeMode.epf без использования команды file
fd -t f "DisableSafeMode.epf"

# Также проверим с помощью find для надежности
find . -name "DisableSafeMode.epf" -type f

Length of output: 172

tests/src/CommonModules/ТестовыеДанные/Module.bsl (1)

38-38: Убедиться в правильном вызове новой функции получения метаданных
Переход с «ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля()» на «ЮТФабрика.ОписаниеМетаданныеМодуля()» может влиять на контекст возвращаемых данных. Рекомендуется проверить, не изменился ли при этом формат самой структуры метаданных и корректно ли она используется при последующих операциях.

tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl (1)

117-117: Проверить корректность переноса вызова «ОписаниеТиповЛюбаяСсылка»
Замена вызова «ЮТОбщий.ОписаниеТиповЛюбаяСсылка()» на «ЮТТипыДанныхСлужебный.ОписаниеТиповЛюбаяСсылка()» должна сохранять совместимость с предыдущей логикой. Убедитесь, что новый модуль возвращает ожидаемый набор типов, особенно при работе со ссылками на объекты метаданных.

tests/src/CommonModules/ОМ_ЮТТесты/Module.bsl (1)

34-34: Проверить использование «ОписаниеМетаданныеМодуля» в тестах
Изменение ссылки на «ЮТФабрика.ОписаниеМетаданныеМодуля()» предполагает новую точку получения данных о метаданных. Убедитесь, что тесты корректно инициализируются и что свойства метаданных (КлиентУправляемоеПриложение, КлиентОбычноеПриложение, Сервер) действительно соответствуют реальным условиям тестируемой среды.

exts/yaxunit/src/CommonModules/ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (1)

52-54: Корректное использование возвращаемого значения функции

Правильное изменение: теперь имя файла явно возвращается из функции СобратьОбработку и используется в вызывающем коде.

tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)

21-91: Корректная структура тестовых сценариев

Тесты хорошо структурированы, включают проверку различных статусов выполнения (успешно, ошибка, сломан) и корректно используют утверждения.

tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl (2)

152-152: Проверить согласованность использования ЮТФабрика

Изменен источник метаданных с ЮТФабрикаСлужебный на ЮТФабрика. Необходимо проверить согласованность этого изменения во всей кодовой базе.

✅ Verification successful

Let me generate one more verification to check for any remaining references to the old factory:


Let's check the specific usage context in the files where we found references:


Изменение согласовано с кодовой базой

Анализ показал, что метод ОписаниеМетаданныеМодуля() теперь последовательно используется через ЮТФабрика во всей кодовой базе. Старых вызовов через ЮТФабрикаСлужебный не обнаружено. Хотя модуль ЮТФабрикаСлужебный все еще существует, он используется для других целей (создание описаний тестов, ошибок и т.д.).

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск использования старого и нового способа получения метаданных
echo "Старый способ:"
rg "ЮТФабрикаСлужебный\.ОписаниеМетаданныеМодуля"

echo "Новый способ:"
rg "ЮТФабрика\.ОписаниеМетаданныеМодуля"

Length of output: 1830


Script:

#!/bin/bash
# Поиск любых упоминаний ЮТФабрикаСлужебный
rg "ЮТФабрикаСлужебный" -l

# Поиск определения модуля ЮТФабрикаСлужебный
fd "ЮТФабрикаСлужебный"

Length of output: 2877


Script:

#!/bin/bash
# Проверяем контекст использования ЮТФабрикаСлужебный в файлах
rg "ЮТФабрикаСлужебный" -B 2 -A 2 tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl
rg "ЮТФабрикаСлужебный" -B 2 -A 2 tests/src/CommonModules/ОМ_ЮТФильтрацияСлужебный/Module.bsl
rg "ЮТФабрикаСлужебный" -B 2 -A 2 tests/src/CommonModules/ОМ_ЮТИсполнительСлужебныйКлиент/Module.bsl

Length of output: 2433


93-93: Необходимо подтвердить изменение количества тестов

Количество ожидаемых тестов увеличено с 41 до 42. Пожалуйста, подтвердите, что это изменение соответствует фактическому добавлению нового теста.

✅ Verification successful

Let's gather more specific information about the test procedures in the module under review.


Let's check the actual test methods in this module to verify the count.


Let's try to get the full content of the module to analyze all test methods, as they might have a different naming pattern.


Изменение количества тестов подтверждено

В процедуре ЗагрузитьТесты() проверяется количество прочитанных наборов тестов из расширения tests:

Наборы = ЮТЧитательСлужебный.ЗагрузитьТесты(ПараметрыЗапуска);
ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests")
    .ИмеетДлину(42);

Изменение с 41 на 42 теста является корректным, так как это отражает фактическое количество тестовых наборов в расширении tests.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверка количества тестовых процедур
rg -l "Процедура\s+.*\(\s*\)\s+Экспорт" tests/

Length of output: 2722


Script:

#!/bin/bash
# Поиск экспортных процедур в модуле ОМ_ЮТЧитательСлужебный
rg "Процедура\s+.*\(\s*\)\s+Экспорт" tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl

Length of output: 430


Script:

#!/bin/bash
# Поиск тестовых методов в модуле
rg "Процедура\s+Тест.*\(\s*\)" tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl

Length of output: 240


Script:

#!/bin/bash
# Получение содержимого модуля
cat tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl

Length of output: 7353

exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (1)

21-57: Функция корректно обрабатывает контексты исполнения тестов.

Функция ИсполняемыйТестовыйМодуль правильно проверяет доступность контекстов исполнения и корректно обрабатывает ошибки режимов выполнения.

tests/src/CommonModules/ОМ_ЮТФильтрацияСлужебный/Module.bsl (1)

Line range hint 375-379: Корректное изменение источника метаданных.

Переход с ЮТФабрикаСлужебный на ЮТФабрика для получения описания метаданных модуля является правильным архитектурным решением.

exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl (2)

147-148: Улучшение типизации метаданных модуля.

Добавление явного указания типа "ОбщийМодуль" улучшает типизацию и облегчает дальнейшую обработку метаданных.


161-172: Добавлена поддержка метаданных внешних обработок.

Новая функция МетаданныеОбработки корректно реализует получение метаданных для внешних обработок.

✅ Verification successful

Функция МетаданныеОбработки корректно используется в тестах

Функция МетаданныеОбработки уже интегрирована в тестовый код и используется в модуле ОМ_ВыполнениеТестовОбработки для получения метаданных внешней обработки в контексте серверного вызова. Реализация соответствует требованиям и подтверждена тестовым покрытием.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверка использования новой функции в тестах

# Поиск тестов для внешних обработок
rg -l "МетаданныеОбработки" tests/

Length of output: 234


Script:

#!/bin/bash
# Проверим содержимое файла с тестами, чтобы увидеть как используется функция
rg -A 5 -B 5 "МетаданныеОбработки" tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl

Length of output: 837

exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl (1)

184-184: Улучшение архитектуры: перенос логики в общий модуль

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

exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl (2)

85-90: Улучшение согласованности интерфейса обработчиков событий

Добавление параметра ТестовыйМодуль во все обработчики событий улучшает:

  • Типобезопасность за счет явной передачи тестового модуля
  • Читаемость кода за счет явного указания зависимостей
  • Поддерживаемость за счет стандартизации интерфейса

Also applies to: 97-103, 110-117, 124-131, 138-144, 151-156


Line range hint 278-296: Улучшение механизма обработки событий

Доработка процедуры ВызватьОбработкуСобытияИсполненияТестов улучшает:

  • Поддержку обработчиков событий уровня тестового модуля
  • Порядок выполнения обработчиков
  • Обработку ошибок

Also applies to: 300-300

exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl (1)

Line range hint 425-436: Улучшение структуры метаданных модуля

Добавление поля Тип в описание метаданных модуля улучшает:

  • Типобезопасность за счет явного указания типа модуля
  • Документацию за счет четкого указания поддерживаемых значений
  • Расширяемость для будущих типов модулей

@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
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

🔭 Outside diff range comments (1)
tools/local-test/scripts/steps/run-serverdb-test.sh (1)

Line range hint 1-7: Улучшить безопасность и обработку ошибок при инициализации

Необходимо добавить защиту от ошибок и корректную обработку переменных:

-MODE=$1
-JOB_NAME=${MODE}Application-Server
-DB_NAME=DB_${MODE}Application
-CONNECTION_STRING=/S\"localhost\\$DB_NAME\"
+MODE="$1"
+JOB_NAME="${MODE}Application-Server"
+DB_NAME="DB_${MODE}Application"
+CONNECTION_STRING="/S\"localhost\\$DB_NAME\""

+if [ ! -f "$LIB_PATH/print.sh" ]; then
+    echo "Ошибка: Файл print.sh не найден"
+    exit 1
+fi
 . $LIB_PATH/print.sh
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 4-4: Quotes/backslashes will be treated literally. Use an array.

(SC2089)


[warning] 18-18: Quotes/backslashes in this variable will not be respected.

(SC2090)


[warning] 20-20: Quotes/backslashes in this variable will not be respected.

(SC2090)

♻️ Duplicate comments (6)
tools/local-test/scripts/steps/clean-outdated.sh (1)

19-20: ⚠️ Potential issue

Необходимо обеспечить безопасное использование rm

Текущая реализация команды rm может быть небезопасной, если переменные $EXPORT_PATH или $PROJECT_NAME окажутся пустыми или неопределенными.

Предлагаю следующие изменения для повышения безопасности:

-    rm -rf $EXPORT_PATH/$PROJECT_NAME
-    rm -rf $BINARY_PATH/$PROJECT_NAME.*
+    rm -rf "${EXPORT_PATH:?}/${PROJECT_NAME:?}"
+    rm -rf "${BINARY_PATH:?}/${PROJECT_NAME:?}."*
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 19-19: Use "${var:?}" to ensure this never expands to / .

(SC2115)

tools/local-test/scripts/test-it.sh (1)

53-53: ⚠️ Potential issue

Исправьте небезопасную очистку директории логов

Текущая реализация может привести к катастрофическим последствиям, если переменная $LOGS_PATH окажется пустой.

Необходимо применить следующее исправление:

-rm -rf $LOGS_PATH/*
+rm -rf "${LOGS_PATH:?}"/*

Это добавит проверку на пустое значение переменной и предотвратит потенциально опасное выполнение команды rm -rf /*.

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 53-53: Use "${var:?}" to ensure this never expands to /* .

(SC2115)

tools/local-test/scripts/steps/run-serverdb-test.sh (2)

13-16: ⚠️ Potential issue

Исправить код возврата при ошибке

Возврат значения 0 при ошибке создания базы данных может привести к некорректной работе CI/CD систем.

 if [ $SUCCESS -ne 0 ]; then
     print_error "Не удалось создать базу ${BOLD}$JOB_NAME${RESET}"
-    exit 0
+    exit 1
 fi

18-23: ⚠️ Potential issue

Исправить обработку переменных в командах

Текущая реализация может некорректно обрабатывать специальные символы в параметрах.

-if $LIB_PATH/prepare-db.sh $CONNECTION_STRING $JOB_NAME; then
+if "$LIB_PATH/prepare-db.sh" "$CONNECTION_STRING" "$JOB_NAME"; then
     print_info "Подготовлена база для ${BOLD}$JOB_NAME${RESET}"
-    $LIB_PATH/run-tests.sh $MODE $CONNECTION_STRING $JOB_NAME
+    "$LIB_PATH/run-tests.sh" "$MODE" "$CONNECTION_STRING" "$JOB_NAME"
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 18-18: Quotes/backslashes in this variable will not be respected.

(SC2090)


[warning] 20-20: Quotes/backslashes in this variable will not be respected.

(SC2090)

tools/local-test/scripts/steps/build-artifacts.sh (2)

4-4: ⚠️ Potential issue

Небезопасная операция удаления

Текущая реализация команды rm -rf $TEMP_DB_PATH/* может быть небезопасной, если переменная TEMP_DB_PATH окажется пустой.

-rm -rf $TEMP_DB_PATH/*
+[[ -n "${TEMP_DB_PATH}" ]] && rm -rf "${TEMP_DB_PATH:?}/"*
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 4-4: Use "${var:?}" to ensure this never expands to /* .

(SC2115)


29-42: ⚠️ Potential issue

Добавить проверку результатов выполнения команд

Рекомендуется добавить проверку кодов возврата после выполнения команд ibcmd для корректной обработки ошибок.

-$ONEC_PATH/ibcmd infobase create --db-path=$TEMP_DB_PATH --import=$EXPORT_PATH/configuration --apply --force >> $LOGS_PATH/configuration.log 2>&1
+if ! $ONEC_PATH/ibcmd infobase create --db-path=$TEMP_DB_PATH --import=$EXPORT_PATH/configuration --apply --force >> $LOGS_PATH/configuration.log 2>&1; then
+    print_state "Ошибка создания информационной базы"
+    exit 1
+fi
 print_state 'Создание информационной базы'

 if [[ $configuration_exists -eq 0 ]]; then
-    $ONEC_PATH/ibcmd infobase config save --db-path=$TEMP_DB_PATH $BINARY_PATH/configuration.cf >> $LOGS_PATH/configuration.log 2>&1
+    if ! $ONEC_PATH/ibcmd infobase config save --db-path=$TEMP_DB_PATH $BINARY_PATH/configuration.cf >> $LOGS_PATH/configuration.log 2>&1; then
+        print_state "Ошибка сохранения конфигурации"
+        exit 1
+    fi
     print_state 'Сохрание тестовой конфигурации'
 fi
🧹 Nitpick comments (10)
tools/local-test/scripts/steps/clean-outdated.sh (1)

21-21: Рекомендуется использовать кавычки при записи хеша

Для предотвращения проблем с специальными символами, рекомендуется заключить переменную в кавычки.

-    echo $current_hash > $hash_file_name
+    echo "$current_hash" > "$hash_file_name"
tools/local-test/scripts/test-it.sh (1)

43-43: Добавьте обработку ошибок при создании директории

Хотя команда mkdir -p безопасна, рекомендуется добавить проверку успешности создания директории для логов.

Предлагаю следующее улучшение:

-mkdir -p $LOGS_PATH
+if ! mkdir -p "$LOGS_PATH"; then
+    >&2 echo "Не удалось создать директорию для логов: $LOGS_PATH"
+    exit 1
+fi
tools/local-test/scripts/steps/run-serverdb-test.sh (1)

Line range hint 1-23: Добавить общие улучшения для скрипта

Рекомендуется добавить следующие улучшения для повышения надёжности скрипта:

  1. Добавить строгий режим в начало скрипта:
#!/bin/bash
set -euo pipefail
  1. Добавить проверку обязательных переменных:
if [ -z "${LIB_PATH:-}" ] || [ -z "${ONEC_PATH:-}" ] || [ -z "${LOGS_PATH:-}" ]; then
    echo "Ошибка: Не установлены обязательные переменные окружения"
    echo "Требуются: LIB_PATH, ONEC_PATH, LOGS_PATH"
    exit 1
fi
  1. Добавить проверку наличия первого аргумента:
if [ $# -lt 1 ]; then
    echo "Использование: $0 <режим>"
    exit 1
fi
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 4-4: Quotes/backslashes will be treated literally. Use an array.

(SC2089)


[warning] 18-18: Quotes/backslashes in this variable will not be respected.

(SC2090)


[warning] 20-20: Quotes/backslashes in this variable will not be respected.

(SC2090)

tools/local-test/scripts/steps/build-artifacts.sh (2)

15-20: Добавить обработку ошибок при проверке файлов

Рекомендуется добавить проверку доступности директории и прав на чтение файлов.

 for key in "${extensions[@]}";do
+    if [[ ! -d "$BINARY_PATH" ]]; then
+        print_state "Ошибка: директория $BINARY_PATH не существует"
+        exit 1
+    fi
     if [[ -f $BINARY_PATH/$key.cfe ]]; then
+        if [[ ! -r "$BINARY_PATH/$key.cfe" ]]; then
+            print_state "Ошибка: нет прав на чтение файла $BINARY_PATH/$key.cfe"
+            exit 1
+        fi
         print_success "  Сборка $key ${BOLD}не требуется${RESET}"
     else
         extensions_set+=($key)
     fi
 done
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 19-19: Quote to prevent word splitting/globbing, or split robustly with mapfile or read -a.

(SC2206)


1-3: Улучшить базовую структуру скрипта

Рекомендуется добавить следующие улучшения для повышения надежности скрипта:

  1. Добавить shebang line
  2. Использовать кавычки для всех переменных
+#!/bin/bash
-TEMP_DB_PATH=$TMP_PATH/file-db
+TEMP_DB_PATH="${TMP_PATH}/file-db"
-. $LIB_PATH/print.sh
+. "${LIB_PATH}/print.sh"
🧰 Tools
🪛 Shellcheck (0.10.0)

[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.

(SC2148)

tools/local-test/scripts/lib/print.sh (2)

1-34: Улучшите совместимость с различными терминалами

Текущая реализация может иметь проблемы совместимости:

  1. Использование echo -e не является переносимым между разными оболочками
  2. Юникод-символы могут некорректно отображаться в некоторых терминалах

Рекомендации:

  1. Используйте printf вместо echo -e
  2. Добавьте проверку поддержки Unicode в терминале
  3. Предусмотрите альтернативные ASCII-символы

Хотите, чтобы я предложил конкретную реализацию этих улучшений?

🧰 Tools
🪛 Shellcheck (0.10.0)

[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.

(SC2148)


[warning] 5-5: NC appears unused. Verify use (or export if used externally).

(SC2034)


9-34: Добавьте документацию к функциям

Добавьте комментарии к функциям, описывающие их назначение, параметры и примеры использования.

Пример:

# Выводит статус выполнения команды
# Параметры:
#   $1 - сообщение для вывода
# Возвращает:
#   0 - если предыдущая команда выполнилась успешно
#   1 - если предыдущая команда завершилась с ошибкой
# Пример:
#   ls /tmp && print_state "Чтение директории"
function print_state {
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (2)

31-48: Рекомендуется добавить негативные тесты.

Текущие проверки охватывают только позитивные сценарии. Рекомендуется добавить тесты на:

  • Некорректные входные данные
  • Отсутствующие метаданные
  • Ошибки при компиляции

108-140: Рекомендуется вынести текст тестовой обработки в отдельный макет.

Хранение текста обработки в коде усложняет его поддержку и читаемость.

-Текст =
-	"Процедура ИсполняемыеСценарии() Экспорт
-	|
-	|	ЮТТесты
-	|		.ДобавитьТест(""ТестУспешно"")
-	|		.ДобавитьТест(""ТестОшибка"")
-	|		.ДобавитьТест(""ТестСломан"")
-	|	;
-	|
-	|КонецПроцедуры
-	|...";
+Текст = ПолучитьМакет("МакетТестовойОбработки");
exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl (1)

416-445: Рекомендуется упростить логику вызова обработчика.

Метод ВызватьОбработчикТестовогоМодуля содержит сложную логику определения и вызова обработчика. Рекомендуется:

  1. Вынести логику разбора имени обработчика в отдельный метод
  2. Упростить условия вызова внешнего обработчика
-Процедура ВызватьОбработчикТестовогоМодуля(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ОбработчикСобытия, ОбработчикСобытияПереопределен)
+Процедура ВызватьОбработчикТестовогоМодуля(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ОбработчикСобытия, ОбработчикСобытияПереопределен)
+    ОписаниеОбработчика = РазобратьИмяОбработчика(ОбработчикСобытия, ОписаниеСобытия);
+    
+    Если НЕ ОписаниеОбработчика.МетодСуществует Тогда
+        Если ОбработчикСобытияПереопределен Тогда
+            ВызватьИсключение СтрШаблон("Не найден обработчик тестового модуля %1.%2", 
+                ОписаниеОбработчика.ПредставлениеОбъекта, 
+                ОписаниеОбработчика.ИмяМетода);
+        КонецЕсли;
+        Возврат;
+    КонецЕсли;
+    
+    ВыполнитьОбработчик(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ОписаниеОбработчика);
+КонецПроцедуры
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 091b06e and 03b4be1.

⛔ Files ignored due to path filters (1)
  • exts/yaxunit/src/CommonTemplates/ЮТV8UnpackWS/Template.bin is excluded by !**/*.bin
📒 Files selected for processing (34)
  • exts/yaxunit/src/CommonModules/ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (3 hunks)
  • exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (7 hunks)
  • exts/yaxunit/src/CommonModules/ЮТЛогированиеСлужебный/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl (3 hunks)
  • exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйКлиентСервер/ЮТМетаданныеСлужебныйКлиентСервер.mdo (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl (7 hunks)
  • exts/yaxunit/src/CommonModules/ЮТТестыСлужебный/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl (2 hunks)
  • exts/yaxunit/src/CommonModules/ЮТФабрикаСлужебный/Module.bsl (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТЧитательСлужебный/Module.bsl (2 hunks)
  • exts/yaxunit/src/Configuration/Configuration.mdo (1 hunks)
  • exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo (1 hunks)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/ОМ_ВыполнениеТестовОбработки.mdo (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТТесты/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТФильтрацияСлужебный/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl (2 hunks)
  • tests/src/CommonModules/ТестовыеДанные/Module.bsl (1 hunks)
  • tests/src/Configuration/Configuration.mdo (1 hunks)
  • tools/local-test/scripts/lib/prepare-db.sh (1 hunks)
  • tools/local-test/scripts/lib/print.sh (1 hunks)
  • tools/local-test/scripts/lib/run-tests.sh (1 hunks)
  • tools/local-test/scripts/steps/build-artifacts.sh (2 hunks)
  • tools/local-test/scripts/steps/clean-outdated.sh (1 hunks)
  • tools/local-test/scripts/steps/convert-to-xml.sh (1 hunks)
  • tools/local-test/scripts/steps/run-filedb-test.sh (1 hunks)
  • tools/local-test/scripts/steps/run-serverdb-test.sh (1 hunks)
  • tools/local-test/scripts/test-it.sh (2 hunks)
  • tools/v8unpack/build-epf.bat (1 hunks)
  • tools/v8unpack/build-epf.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (22)
  • tools/v8unpack/build-epf.bat
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/ОМ_ВыполнениеТестовОбработки.mdo
  • tools/v8unpack/build-epf.sh
  • tests/src/Configuration/Configuration.mdo
  • tools/local-test/scripts/steps/convert-to-xml.sh
  • exts/yaxunit/src/CommonModules/ЮТМетаданные/Module.bsl
  • tests/src/CommonModules/ОМ_ЮТТипыДанныхСлужебный/Module.bsl
  • tools/local-test/scripts/steps/run-filedb-test.sh
  • tools/local-test/scripts/lib/run-tests.sh
  • tests/src/CommonModules/ОМ_ЮТТесты/Module.bsl
  • exts/yaxunit/src/Configuration/Configuration.mdo
  • tests/src/CommonModules/ОМ_ЮТФильтрацияСлужебный/Module.bsl
  • tests/src/CommonModules/ОМ_ЮТЧитательСлужебный/Module.bsl
  • exts/yaxunit/src/CommonModules/ЮТЛогированиеСлужебный/Module.bsl
  • exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
  • tools/local-test/scripts/lib/prepare-db.sh
  • exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйКлиентСервер/ЮТМетаданныеСлужебныйКлиентСервер.mdo
  • exts/yaxunit/src/Subsystems/ЮТДвижок/Subsystems/ЮТСервис/ЮТСервис.mdo
  • tests/src/CommonModules/ТестовыеДанные/Module.bsl
  • exts/yaxunit/src/CommonModules/ЮТМетаданныеСлужебныйВызовСервера/Module.bsl
  • exts/yaxunit/src/CommonModules/ЮТЧитательСлужебный/Module.bsl
  • exts/yaxunit/src/CommonModules/ЮТТестыСлужебный/Module.bsl
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/lib/print.sh

[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.

(SC2148)


[warning] 5-5: NC appears unused. Verify use (or export if used externally).

(SC2034)

tools/local-test/scripts/steps/build-artifacts.sh

[warning] 4-4: Use "${var:?}" to ensure this never expands to /* .

(SC2115)

tools/local-test/scripts/steps/clean-outdated.sh

[warning] 19-19: Use "${var:?}" to ensure this never expands to / .

(SC2115)

tools/local-test/scripts/steps/run-serverdb-test.sh

[warning] 18-18: Quotes/backslashes in this variable will not be respected.

(SC2090)


[warning] 20-20: Quotes/backslashes in this variable will not be respected.

(SC2090)

tools/local-test/scripts/test-it.sh

[warning] 53-53: Use "${var:?}" to ensure this never expands to /* .

(SC2115)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Конвертация исходников / Конвертация
  • GitHub Check: Конвертация исходников / Конвертация
  • GitHub Check: SonarQualityGate / Проверка Sonar
🔇 Additional comments (13)
tools/local-test/scripts/steps/clean-outdated.sh (1)

18-18: Форматирование сообщений выполнено корректно

Хорошее решение использовать переменные ${BOLD} и ${RESET} для форматирования важных частей сообщений. Это улучшает читаемость вывода.

Also applies to: 23-23

tools/local-test/scripts/test-it.sh (1)

41-41: Корректное определение пути для логов!

Экспорт переменной LOGS_PATH следует общему паттерну определения путей в скрипте и обеспечивает доступность в дочерних процессах.

tools/local-test/scripts/lib/print.sh (1)

1-7: Добавьте shebang и исправьте определение цветов

Те же проблемы, что были отмечены ранее, всё ещё присутствуют в коде.

🧰 Tools
🪛 Shellcheck (0.10.0)

[error] 1-1: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.

(SC2148)


[warning] 5-5: NC appears unused. Verify use (or export if used externally).

(SC2034)

exts/yaxunit/src/CommonModules/ЮТФабрикаСлужебный/Module.bsl (2)

483-494: Улучшенная реализация определения контекстов приложения!

Рефакторинг улучшил код следующим образом:

  • Использование ЮТОкружение.ОписаниеОкружения() для определения среды выполнения
  • Более чёткая и понятная логика добавления контекстов
  • Улучшенная поддержка различных типов приложений

483-494: Проверить корректность выполнения тестов во всех контекстах

Убедитесь, что тесты корректно выполняются во всех контекстах после изменения логики определения контекстов приложения.

✅ Verification successful

Изменения в определении контекстов приложения корректны

Проверка показала, что изменения в функции КонтекстыПриложения() сохраняют правильную логику выполнения тестов во всех контекстах:

  • Серверные контексты (Сервер, ВызовСервера) всегда доступны
  • Клиентский контекст корректно выбирается в зависимости от типа приложения
  • Все тесты правильно обрабатываются в соответствующих контекстах выполнения
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Поиск использования КонтекстыПриложения для проверки влияния изменений

# Поиск вызовов функции
rg -A 5 "КонтекстыПриложения\(\)" 

# Поиск тестов, использующих разные контексты
ast-grep --pattern 'КонтекстВызова = $_'

Length of output: 1925


Script:

#!/bin/bash
# Поиск определений контекстов и их использования

# Поиск определений контекстов
rg -A 10 "КонтекстыВызова\(\)" 

# Поиск использования разных типов контекстов
rg "Контексты\.(Сервер|КлиентОбычноеПриложение|КлиентУправляемоеПриложение|ВызовСервера)" -A 2

Length of output: 12077

exts/yaxunit/src/CommonModules/ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (2)

52-54: Улучшение возврата результата компиляции.

Возврат имени скомпилированного файла позволяет лучше контролировать результат операции.


92-107: Улучшение генерации имени файла обработки.

Использование UUID для генерации уникального имени файла и возврат этого имени улучшает контроль над результатом сборки.

tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)

21-29: Хорошая структура тестового набора.

Тесты логически сгруппированы и выполняются в транзакции, что обеспечивает изоляцию тестов.

exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (2)

59-108: Необходимо снизить когнитивную сложность функции.

Функция ИсполняемыеНаборыМодуля имеет высокую когнитивную сложность.


373-387: Необходимо добавить обработку ошибок при получении формы.

В функции ТестовыйМодуль используется небезопасный метод ПолучитьФорму.

exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиент/Module.bsl (1)

184-184: Улучшение модульности кода.

Перенос создания тестового модуля в отдельный сервис улучшает разделение ответственности.

exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl (2)

425-425: Документация корректна и информативна!

Подробное описание возвращаемого значения функции с указанием всех полей структуры и их типов.


Line range hint 436-444: Реализация функции соответствует документации!

Структура создается с правильным набором полей и корректными значениями по умолчанию для каждого поля.

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: 6

🧹 Nitpick comments (5)
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (2)

3-3: Уточните дату окончания авторских прав

Указан 2025 год, что выходит за пределы текущей даты. Рекомендуется указать текущий год (2024) или использовать только начальный год.

-  Copyright 2021-2025 BIA-Technologies Limited Liability Company
+  Copyright 2021-2024 BIA-Technologies Limited Liability Company

31-48: Устраните дублирование кода проверок

Процедуры ЗагрузитьТестыВременнойОбработки и ИсполняемыеСценарииВременнойОбработки содержат идентичные проверки. Рекомендуется вынести повторяющиеся проверки в отдельную вспомогательную функцию.

Функция ПроверитьСценарии(Сценарии)
	
	Возврат ЮТест.ОжидаетЧто(Сценарии)
		.Заполнено()
		.Свойство("Метаданные").Заполнено()
		.Свойство("Метаданные.Сервер").ЭтоИстина()
		.Свойство("Метаданные.КлиентУправляемоеПриложение").ЭтоЛожь()
		.Свойство("Метаданные.КлиентОбычноеПриложение").ЭтоЛожь()
		.Свойство("НаборыТестов").Заполнено()
		.Свойство("НаборыТестов[0].Тесты").Заполнено()
			.ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестУспешно")
			.ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестОшибка")
			.ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестСломан")
		;
		
КонецФункции

Also applies to: 50-67

tools/local-test/scripts/test-by-ibcmd.sh (3)

1-15: Улучшить инициализацию скрипта для большей надежности

Рекомендуется улучшить обработку ошибок при инициализации:

 #!/bin/bash

-export SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
+export SCRIPTPATH
+cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit 1
+SCRIPTPATH=$(pwd -P)

Это изменение:

  • Предотвратит маскировку кода возврата
  • Обеспечит корректное завершение скрипта при ошибке cd
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


31-41: Оптимизировать объявление путей

Текущая реализация может маскировать ошибки realpath:

-export WORK_PATH=$(realpath $SCRIPTPATH/../workpath)
-export ROOT_PATH=$(realpath $SCRIPTPATH/../../../)
-export STEPS_PATH=$(realpath $SCRIPTPATH/steps)
-export LIB_PATH=$(realpath $SCRIPTPATH/lib)
+export WORK_PATH
+export ROOT_PATH
+export STEPS_PATH
+export LIB_PATH
+
+WORK_PATH=$(realpath "$SCRIPTPATH/../workpath") || exit 1
+ROOT_PATH=$(realpath "$SCRIPTPATH/../../../") || exit 1
+STEPS_PATH=$(realpath "$SCRIPTPATH/steps") || exit 1
+LIB_PATH=$(realpath "$SCRIPTPATH/lib") || exit 1
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)


57-59: Улучшить создание конфигурационного файла

Рекомендуется использовать quoted heredoc для большей безопасности:

-cat >~/.1cv8/1C/1cv8/conf/conf.cfg <<EOL
+cat >~/.1cv8/1C/1cv8/conf/conf.cfg <<"EOL"
 DisableUnsafeActionProtection=.*
 EOL
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 541c1f1 and ecb4da3.

📒 Files selected for processing (3)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (2 hunks)
  • tools/local-test/scripts/test-by-ibcmd.sh (2 hunks)
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 53-53: Use "${var:?}" to ensure this never expands to /* .

(SC2115)


[warning] 54-54: Use "${var:?}" to ensure this never expands to /* .

(SC2115)


[warning] 55-55: Use "${var:?}" to ensure this never expands to /* .

(SC2115)


[warning] 61-61: SOURCES_HASH appears unused. Verify use (or export if used externally).

(SC2034)


[warning] 63-63: projects appears unused. Verify use (or export if used externally).

(SC2034)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Конвертация исходников / Конвертация
  • GitHub Check: Конвертация исходников / Конвертация
  • GitHub Check: SonarQualityGate / Проверка Sonar
🔇 Additional comments (6)
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)

1-142: Тесты покрывают основные сценарии

Модуль содержит хорошее покрытие различных сценариев выполнения тестов:

  • Успешное выполнение
  • Ошибка в проверке
  • Сломанный тест

Это обеспечивает надежную проверку функциональности выполнения тестов из внешних обработок.

tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (1)

3-3: Обновление года в информации об авторских правах

Корректное обновление диапазона лет в заголовке файла.

tools/local-test/scripts/test-by-ibcmd.sh (4)

18-29: Корректная валидация путей установки

Проверки наличия установленных компонентов реализованы правильно, с понятными сообщениями об ошибках.


70-73: Корректная конвертация исходников

Логика конвертации реализована правильно, с хорошим разделением ответственности.


77-104: Корректная настройка базы данных и расширений

Процесс настройки базы данных и расширений реализован правильно:

  • Понятное логирование действий
  • Последовательное применение конфигураций
  • Корректная настройка параметров безопасности

Line range hint 106-116: Корректная конфигурация тестирования

Конфигурация YAXUnit создана правильно, с четкими параметрами для отчетности и логирования.

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 53-53: Use "${var:?}" to ensure this never expands to /* .

(SC2115)


[warning] 54-54: Use "${var:?}" to ensure this never expands to /* .

(SC2115)


[warning] 55-55: Use "${var:?}" to ensure this never expands to /* .

(SC2115)


[warning] 61-61: SOURCES_HASH appears unused. Verify use (or export if used externally).

(SC2034)


[warning] 63-63: projects appears unused. Verify use (or export if used externally).

(SC2034)

@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
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

♻️ Duplicate comments (1)
tools/local-test/scripts/test-by-ibcmd.sh (1)

116-123: ⚠️ Potential issue

Улучшить обработку ошибок при запуске тестов

Необходимо добавить проверку результатов выполнения команд для предотвращения молчаливых ошибок.

 print_run "Запуск сервера"
-$ONEC_PATH/ibsrv --db-path=$DB_PATH --daemon
-IBSRV_PID=$!
+if ! $ONEC_PATH/ibsrv --db-path=$DB_PATH --daemon; then
+    echo "Ошибка запуска сервера" >&2
+    exit 1
+fi
+IBSRV_PID=$!
 echo "IBSRV PID=$IBSRV_PID"

 print_run "Запуск тестирования"
-$ONEC_PATH/1cv8c /WS "http://localhost:8314" /C"RunUnitTests=$WORK_PATH/yaxunit-config.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage
+if ! $ONEC_PATH/1cv8c /WS "http://localhost:8314" /C"RunUnitTests=$WORK_PATH/yaxunit-config.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage; then
+    kill $IBSRV_PID
+    echo "Ошибка выполнения тестов" >&2
+    exit 1
+fi
🧹 Nitpick comments (4)
tools/local-test/scripts/test-by-ibcmd.sh (3)

3-3: Улучшить определение SCRIPTPATH

Текущая реализация может маскировать ошибки выполнения команд. Рекомендуется разделить объявление и присваивание:

-export SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
+export SCRIPTPATH
+cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit 1
+SCRIPTPATH="$(pwd -P)"
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


31-34: Улучшить определение путей

Рекомендуется разделить объявление и присваивание переменных для предотвращения маскировки ошибок:

-export WORK_PATH=$(realpath $SCRIPTPATH/../workpath)
-export ROOT_PATH=$(realpath $SCRIPTPATH/../../../)
-export STEPS_PATH=$(realpath $SCRIPTPATH/steps)
-export LIB_PATH=$(realpath $SCRIPTPATH/lib)
+export WORK_PATH ROOT_PATH STEPS_PATH LIB_PATH
+WORK_PATH=$(realpath "$SCRIPTPATH/../workpath")
+ROOT_PATH=$(realpath "$SCRIPTPATH/../../../")
+STEPS_PATH=$(realpath "$SCRIPTPATH/steps")
+LIB_PATH=$(realpath "$SCRIPTPATH/lib")
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)


97-102: Вынести настройку расширений в отдельную функцию

Предлагается создать функцию для устранения дублирования кода при настройке расширений:

+configure_extension() {
+    local name=$1
+    $ONEC_PATH/ibcmd infobase config extension update --db-path=$DB_PATH --name=$name --safe-mode=no --unsafe-action-protection=no
+    print_state "Установка свойств расширения $name"
+}

-$ONEC_PATH/ibcmd infobase config extension update --db-path=$DB_PATH --name=Smoke --safe-mode=no --unsafe-action-protection=no
-print_state "Установка свойств расширения Smoke"
-$ONEC_PATH/ibcmd infobase config extension update --db-path=$DB_PATH --name=tests --safe-mode=no --unsafe-action-protection=no
-print_state "Установка свойств расширения tests"
-$ONEC_PATH/ibcmd infobase config extension update --db-path=$DB_PATH --name=YAXUNIT --safe-mode=no --unsafe-action-protection=no
-print_state "Установка свойств расширения YAXUNIT"
+configure_extension "Smoke"
+configure_extension "tests"
+configure_extension "YAXUNIT"
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)

3-3: Скорректируйте год в заголовке лицензии

Указан диапазон лет 2021-2025, но текущий год - 2024. Рекомендуется указать актуальный диапазон лет.

-  Copyright 2021-2025 BIA-Technologies Limited Liability Company
+  Copyright 2021-2024 BIA-Technologies Limited Liability Company
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ecb4da3 and 004810d.

📒 Files selected for processing (5)
  • .github/workflows/step-run-tests.yml (1 hunks)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (1 hunks)
  • tools/local-test/scripts/test-by-ibcmd.sh (2 hunks)
  • tools/local-test/scripts/test-it.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • tools/local-test/scripts/test-it.sh
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Конвертация исходников / Конвертация
  • GitHub Check: SonarQualityGate / Проверка Sonar
  • GitHub Check: Конвертация исходников / Конвертация
🔇 Additional comments (4)
tools/local-test/scripts/test-by-ibcmd.sh (2)

53-55: LGTM: Безопасная очистка директорий

Реализована безопасная очистка директорий с использованием :? для предотвращения случайного удаления при пустых переменных.


Line range hint 104-114: LGTM: Корректная генерация конфигурационного файла

Конфигурация корректно определяет формат отчета, пути к файлам и настройки логирования.

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)

tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (2)

108-140: Улучшите обработку ошибок и управление ресурсами

В функции Обработка отсутствует:

  1. Обработка ошибок для файловых операций
  2. Очистка временных файлов
  3. Вынесение текста обработки в отдельный шаблон

Для проверки использования временных файлов выполните:

#!/bin/bash
# Поиск других мест очистки временных файлов
rg -l "УдалитьФайлы|DeleteFiles" --type bsl

110-132: Хорошая структура тестовых сценариев

Тестовые сценарии корректно охватывают различные случаи (успех, ошибка, сломанный тест) и используют правильные утверждения фреймворка ЮТест.

@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
@github-actions github-actions bot deleted a comment from coderabbitai bot Jan 12, 2025
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: 3

🔭 Outside diff range comments (1)
tools/local-test/scripts/test-by-ibcmd.sh (1)

Line range hint 116-125: Добавить обработку ошибок при запуске сервера и тестов

Рекомендуется добавить проверку успешности запуска сервера и выполнения тестов.

print_run "Запуск сервера"
$ONEC_PATH/ibsrv --db-path=$DB_PATH --daemon
IBSRV_PID=$!
+if ! ps -p $IBSRV_PID > /dev/null; then
+    >&2 echo "Ошибка запуска сервера"
+    exit 1
+fi
echo "IBSRV PID=$IBSRV_PID"

print_run "Запуск тестирования"
$ONEC_PATH/1cv8c /WS "http://localhost:8314" /C"RunUnitTests=$WORK_PATH/yaxunit-config.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage
+TEST_RESULT=$?
print_state "Тестирование"
kill $IBSRV_PID
+exit $TEST_RESULT
♻️ Duplicate comments (1)
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)

35-46: 🛠️ Refactor suggestion

Устраните дублирование кода проверок

Блоки проверок в процедурах ЗагрузитьТестыВременнойОбработки и ИсполняемыеСценарииВременнойОбработки идентичны. Рекомендуется вынести общую логику проверок в отдельную приватную функцию.

Also applies to: 54-65

🧹 Nitpick comments (5)
tools/local-test/scripts/test-by-ibcmd.sh (4)

3-3: Улучшить обработку ошибок при определении пути скрипта

Текущая реализация может пропустить ошибки команды cd. Рекомендуется добавить проверку возврата.

-export SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
+export SCRIPTPATH
+cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit 1
+SCRIPTPATH="$(pwd -P)"
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


31-34: Улучшить обработку ошибок при определении путей

Текущая реализация может маскировать ошибки команды realpath. Рекомендуется разделить объявление и присваивание.

-export WORK_PATH=$(realpath $SCRIPTPATH/../workpath)
-export ROOT_PATH=$(realpath $SCRIPTPATH/../../../)
-export STEPS_PATH=$(realpath $SCRIPTPATH/steps)
-export LIB_PATH=$(realpath $SCRIPTPATH/lib)
+export WORK_PATH
+export ROOT_PATH
+export STEPS_PATH
+export LIB_PATH
+WORK_PATH=$(realpath "$SCRIPTPATH/../workpath") || exit 1
+ROOT_PATH=$(realpath "$SCRIPTPATH/../../../") || exit 1
+STEPS_PATH=$(realpath "$SCRIPTPATH/steps") || exit 1
+LIB_PATH=$(realpath "$SCRIPTPATH/lib") || exit 1
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)


61-71: Оптимизировать обработку расширений

Рекомендуется вынести повторяющиеся операции с расширениями в отдельную функцию для улучшения поддерживаемости кода.

+process_source() {
+    local key=$1
+    local path=$2
+    $STEPS_PATH/clean-outdated.sh "$key" "$path"
+    $STEPS_PATH/convert-to-xml.sh "$key" "$path"
+}

declare -A SOURCE_PATHS=( ["yaxunit"]="exts/yaxunit" ["smoke"]="exts/smoke" ["tests"]="tests" ["configuration"]="fixtures/demo-configuration")

echo "=========== Анализ исходников и конвертация ==========="
for key in "${!SOURCE_PATHS[@]}"; do
-    $STEPS_PATH/clean-outdated.sh $key ${SOURCE_PATHS[$key]}
-done
-
-echo "=========== Конвертация исходников ==========="
-for key in "${!SOURCE_PATHS[@]}"; do
-    $STEPS_PATH/convert-to-xml.sh $key ${SOURCE_PATHS[$key]}
+    process_source "$key" "${SOURCE_PATHS[$key]}"
done

Line range hint 1-125: Общие рекомендации по улучшению структуры скрипта

Скрипт выполняет все необходимые операции, но рекомендуется:

  1. Вынести повторяющиеся операции в функции
  2. Добавить обработку ошибок для всех критических операций
  3. Добавить функцию очистки (cleanup) для корректного завершения при ошибках

Могу помочь с реорганизацией скрипта в более модульную структуру. Хотите, чтобы я предложил полную реструктуризацию?

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)

tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)

3-3: Исправьте год в заголовке лицензии

Указан некорректный диапазон лет в строке авторских прав. Год окончания (2025) находится в будущем.

-  Copyright 2021-2025 BIA-Technologies Limited Liability Company
+  Copyright 2021-2024 BIA-Technologies Limited Liability Company
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 004810d and b220da4.

📒 Files selected for processing (5)
  • .github/workflows/step-run-tests.yml (1 hunks)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (1 hunks)
  • tools/local-test/scripts/test-by-ibcmd.sh (2 hunks)
  • tools/local-test/scripts/test-it.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • .github/workflows/step-run-tests.yml
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
  • tools/local-test/scripts/test-it.sh
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)

⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: Конвертация исходников / Конвертация
  • GitHub Check: Конвертация исходников / Конвертация

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: 3

🔭 Outside diff range comments (1)
tools/local-test/scripts/test-by-ibcmd.sh (1)

Line range hint 116-125: Улучшить обработку процесса сервера

Необходимо обеспечить корректное завершение процесса сервера даже при ошибках выполнения тестов.

Предлагаю использовать trap для гарантированной очистки:

 print_run "Запуск сервера"
-$ONEC_PATH/ibsrv --db-path=$DB_PATH --daemon
-IBSRV_PID=$!
+if ! $ONEC_PATH/ibsrv --db-path="$DB_PATH" --daemon; then
+    >&2 echo "Ошибка при запуске сервера"
+    exit 1
+fi
+IBSRV_PID=$!
+
+cleanup() {
+    if [ -n "$IBSRV_PID" ]; then
+        kill "$IBSRV_PID" || true
+    fi
+}
+trap cleanup EXIT
+
 echo "IBSRV PID=$IBSRV_PID"

 print_run "Запуск тестирования"
-$ONEC_PATH/1cv8c /WS "http://localhost:8314" /C"RunUnitTests=$WORK_PATH/yaxunit-config.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage
+if ! $ONEC_PATH/1cv8c /WS "http://localhost:8314" /C"RunUnitTests=$WORK_PATH/yaxunit-config.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage; then
+    >&2 echo "Ошибка при выполнении тестов"
+    exit 1
+fi
 print_state "Тестирование"
-kill $IBSRV_PID
🧹 Nitpick comments (5)
.github/workflows/step-run-tests.yml (1)

65-65: Удалите пробелы в конце строки.

Обнаружены лишние пробелы в конце строки 65.

🧰 Tools
🪛 yamllint (1.35.1)

[error] 65-65: trailing spaces

(trailing-spaces)

tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (2)

21-29: Добавьте обработку ошибок транзакции

Рекомендуется добавить обработку ошибок при работе с транзакцией.

 Процедура ИсполняемыеСценарии() Экспорт
+    Попытка
         ЮТТесты.ВТранзакции(Ложь)
             .ДобавитьТест("ЗагрузитьТестыВременнойОбработки")
             .ДобавитьТест("ИсполняемыеСценарииВременнойОбработки")
             .ДобавитьТест("ВыполнитьТестыВременнойОбработки")
         ;
+    Исключение
+        ЗаписьЖурналаРегистрации("ОшибкаДобавленияТестов", 
+            УровеньЖурналаРегистрации.Ошибка,,,
+            ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
+        ВызватьИсключение;
+    КонецПопытки
 КонецПроцедуры

121-131: Улучшите документацию и используйте константы

Тестовые методы требуют:

  1. Добавления документации с описанием назначения каждого теста
  2. Выноса тестовых значений в константы для лучшей поддерживаемости
+// Проверяет корректность сравнения равных значений
 Процедура ТестУспешно() Экспорт
-    ЮТест.ОжидаетЧто(1).Равно(1);
+    Перем ОжидаемоеЗначение = 1;
+    ЮТест.ОжидаетЧто(ОжидаемоеЗначение).Равно(ОжидаемоеЗначение);
 КонецПроцедуры

+// Проверяет корректность обработки ошибки при неравных значениях
 Процедура ТестОшибка() Экспорт
-    ЮТест.ОжидаетЧто(1).Равно(2);
+    Перем ФактическоеЗначение = 1;
+    Перем ОжидаемоеЗначение = 2;
+    ЮТест.ОжидаетЧто(ФактическоеЗначение).Равно(ОжидаемоеЗначение);
 КонецПроцедуры
tools/local-test/scripts/test-by-ibcmd.sh (2)

1-15: Улучшить обработку ошибок при инициализации скрипта

Текущая реализация может привести к скрытым ошибкам при определении пути к скрипту.

Предлагаю следующие улучшения:

 #!/bin/bash

-export SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
+SCRIPTPATH=""
+if ! SCRIPTPATH="$(cd -- "$(dirname "$0")" >/dev/null 2>&1 && pwd -P)"; then
+    >&2 echo "Ошибка при определении пути к скрипту"
+    exit 1
+fi
+export SCRIPTPATH

-source $SCRIPTPATH/../.env
+if ! source "$SCRIPTPATH/../.env"; then
+    >&2 echo "Ошибка при загрузке файла .env"
+    exit 1
+fi
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


18-29: Расширить информативность сообщений об ошибках

Текущие сообщения об ошибках можно сделать более информативными для упрощения диагностики проблем.

Предлагаю дополнить сообщения версиями компонентов:

 if [[ ! -d "${EDT_PATH}" ]]; then
-    >&2 echo "Не найдена инсталяция ${EDT_PATH}"
+    >&2 echo "Не найдена инсталяция EDT версии ${EDT_VERSION} по пути ${EDT_PATH}"
     exit 1
 fi

 if [[ ! -d "$ONEC_PATH" ]]; then
-    >&2 echo "Не найдена инсталяция ${ONEC_PATH}"
+    >&2 echo "Не найдена инсталяция 1C:Предприятия версии ${ONEC_VERSION} по пути ${ONEC_PATH}"
     exit 1
 fi
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b220da4 and b5aba25.

📒 Files selected for processing (5)
  • .github/workflows/step-run-tests.yml (1 hunks)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (1 hunks)
  • tools/local-test/scripts/test-by-ibcmd.sh (2 hunks)
  • tools/local-test/scripts/test-it.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • tools/local-test/scripts/test-it.sh
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
🧰 Additional context used
🪛 actionlint (1.7.4)
.github/workflows/step-run-tests.yml

62-62: shellcheck reported issue in this script: SC1001:info:1:24: This \1 will be a regular '1' in this context

(shellcheck)


62-62: shellcheck reported issue in this script: SC1001:info:1:27: This \1 will be a regular '1' in this context

(shellcheck)


62-62: shellcheck reported issue in this script: SC1001:info:1:32: This \c will be a regular 'c' in this context

(shellcheck)


62-62: shellcheck reported issue in this script: SC1001:info:2:54: This \1 will be a regular '1' in this context

(shellcheck)


62-62: shellcheck reported issue in this script: SC1001:info:2:57: This \1 will be a regular '1' in this context

(shellcheck)


62-62: shellcheck reported issue in this script: SC1001:info:2:62: This \c will be a regular 'c' in this context

(shellcheck)


62-62: shellcheck reported issue in this script: SC1001:info:2:67: This \c will be a regular 'c' in this context

(shellcheck)

🪛 yamllint (1.35.1)
.github/workflows/step-run-tests.yml

[error] 65-65: trailing spaces

(trailing-spaces)

🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)

🔇 Additional comments (6)
.github/workflows/step-run-tests.yml (1)

58-59: Проверьте безопасность отключения защиты небезопасных действий.

Отключение защиты через DisableUnsafeActionProtection=.* может создать уязвимости безопасности. Рекомендуется:

  1. Документировать причину отключения защиты
  2. Рассмотреть возможность использования более строгого шаблона вместо .*
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (4)

1-17: Корректная лицензия и структура файла

Файл содержит правильно оформленную лицензию Apache 2.0 и корректную структуру областей.


89-89: Некорректный порядок вызова события

Событие ПередКаждымТестом вызывается после выполнения тестов, что противоречит его назначению. Рекомендуется перенести вызов события перед выполнением тестов.


78-78: Добавьте обработку ошибок

Вызов ВыполнитьГруппуНаборовТестов может завершиться с ошибкой. Рекомендуется добавить обработку исключений.


134-138: Добавьте очистку временных файлов

После компиляции и подключения внешней обработки, временный файл не удаляется. Это может привести к накоплению временных файлов в системе.

tools/local-test/scripts/test-by-ibcmd.sh (1)

57-71: Добавить проверку результатов конвертации исходников

Отсутствует проверка результатов выполнения скриптов конвертации.

Предлагаю добавить проверку результатов:

 echo "=========== Конвертация исходников ==========="
 for key in "${!SOURCE_PATHS[@]}"; do
-    $STEPS_PATH/convert-to-xml.sh $key ${SOURCE_PATHS[$key]}
+    if ! $STEPS_PATH/convert-to-xml.sh "$key" "${SOURCE_PATHS[$key]}"; then
+        >&2 echo "Ошибка при конвертации ${SOURCE_PATHS[$key]}"
+        exit 1
+    fi
 done
✅ Verification successful

Подтверждаю необходимость проверки результатов конвертации

Анализ скрипта convert-to-xml.sh показал, что команда конвертации через 1cedtcli выполняется без проверки кода возврата. Ошибки записываются только в лог-файл, но не обрабатываются. Предложенное решение корректно обработает ошибки конвертации и предотвратит продолжение выполнения с некорректными данными.

🏁 Scripts executed

The following scripts were executed for the analysis:

Error: No shell scripts found


Script:

#!/bin/bash
# Find and show content of the conversion scripts
echo "=== Searching for convert-to-xml.sh ==="
fd "convert-to-xml.sh" --type f --exec cat {}

echo -e "\n=== Searching for clean-outdated.sh ==="
fd "clean-outdated.sh" --type f --exec cat {}

Length of output: 1448

.github/workflows/step-run-tests.yml Outdated Show resolved Hide resolved
tools/local-test/scripts/test-by-ibcmd.sh Show resolved Hide resolved
tools/local-test/scripts/test-by-ibcmd.sh Show resolved Hide resolved
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: 3

🧹 Nitpick comments (7)
.github/workflows/step-run-tests.yml (1)

67-67: Удалите лишние пробелы в конце строки

В строке 67 содержатся лишние пробелы в конце строки.

🧰 Tools
🪛 yamllint (1.35.1)

[error] 67-67: trailing spaces

(trailing-spaces)

tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (2)

3-3: Скорректируйте диапазон лет в заголовке лицензии

Диапазон лет в заголовке лицензии включает будущий год (2025). Рекомендуется указать текущий год или диапазон до текущего года.

-  Copyright 2021-2025 BIA-Technologies Limited Liability Company
+  Copyright 2021-2024 BIA-Technologies Limited Liability Company

33-46: Устраните дублирование кода валидации

Код валидации в процедурах ЗагрузитьТестыВременнойОбработки и ИсполняемыеСценарииВременнойОбработки полностью идентичен. Рекомендуется вынести проверки в отдельную функцию.

+Функция ПроверитьСценарии(Сценарии)
+    Возврат ЮТест.ОжидаетЧто(Сценарии)
+        .Заполнено()
+        .Свойство("Метаданные").Заполнено()
+        .Свойство("Метаданные.Сервер").ЭтоИстина()
+        .Свойство("Метаданные.КлиентУправляемоеПриложение").ЭтоЛожь()
+        .Свойство("Метаданные.КлиентОбычноеПриложение").ЭтоЛожь()
+        .Свойство("НаборыТестов").Заполнено()
+        .Свойство("НаборыТестов[0].Тесты").Заполнено()
+            .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестУспешно")
+            .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестОшибка")
+            .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестСломан")
+    ;
+КонецФункции

Also applies to: 52-65

tools/local-test/scripts/test-by-ibcmd.sh (4)

3-3: Улучшить определение SCRIPTPATH

Текущая реализация может маскировать ошибки выполнения команд. Рекомендуется разделить объявление и присваивание:

-export SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
+SCRIPTPATH=""
+cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit 1
+SCRIPTPATH="$(pwd -P)"
+export SCRIPTPATH
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


18-29: Использовать кавычки последовательно

Рекомендуется использовать кавычки для всех переменных окружения для единообразия:

-export EDT_PATH=/opt/1C/1CE/components/1c-edt-$EDT_VERSION-x86_64
-export ONEC_PATH=/opt/1cv8/x86_64/$ONEC_VERSION
+export EDT_PATH="/opt/1C/1CE/components/1c-edt-${EDT_VERSION}-x86_64"
+export ONEC_PATH="/opt/1cv8/x86_64/${ONEC_VERSION}"

57-59: Улучшить создание конфигурационного файла

Рекомендуется использовать переменную для пути к файлу конфигурации и проверить успешность создания:

-cat >~/.1cv8/1C/1cv8/conf/conf.cfg <<EOL
+CONFIG_DIR="${HOME}/.1cv8/1C/1cv8/conf"
+mkdir -p "$CONFIG_DIR" || { >&2 echo "Ошибка создания директории конфигурации"; exit 1; }
+cat >"${CONFIG_DIR}/conf.cfg" <<EOL
DisableUnsafeActionProtection=.*
EOL

Line range hint 103-115: Проверить валидность JSON конфигурации

Рекомендуется добавить проверку созданного JSON файла:

+CONFIG_FILE="$WORK_PATH/yaxunit-config.json"
 cat >$WORK_PATH/yaxunit-config.json <<EOL
{
    "reportFormat": "jUnit",
    "reportPath": "$WORK_PATH/report.xml",
    "closeAfterTests": true,
    "exitCode": "$WORK_PATH/exit-code.txt",
    "logging": {
        "console": true
    }
}
EOL
+
+# Проверка валидности JSON
+if ! jq empty "$CONFIG_FILE" >/dev/null 2>&1; then
+    >&2 echo "Ошибка в файле конфигурации JSON"
+    exit 1
+fi
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b5aba25 and 89ec251.

📒 Files selected for processing (5)
  • .github/workflows/step-run-tests.yml (1 hunks)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (1 hunks)
  • tools/local-test/scripts/test-by-ibcmd.sh (2 hunks)
  • tools/local-test/scripts/test-it.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • tools/local-test/scripts/test-it.sh
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)

🪛 actionlint (1.7.4)
.github/workflows/step-run-tests.yml

64-64: shellcheck reported issue in this script: SC1001:info:1:24: This \1 will be a regular '1' in this context

(shellcheck)


64-64: shellcheck reported issue in this script: SC1001:info:1:27: This \1 will be a regular '1' in this context

(shellcheck)


64-64: shellcheck reported issue in this script: SC1001:info:1:32: This \c will be a regular 'c' in this context

(shellcheck)


64-64: shellcheck reported issue in this script: SC1001:info:2:54: This \1 will be a regular '1' in this context

(shellcheck)


64-64: shellcheck reported issue in this script: SC1001:info:2:57: This \1 will be a regular '1' in this context

(shellcheck)


64-64: shellcheck reported issue in this script: SC1001:info:2:62: This \c will be a regular 'c' in this context

(shellcheck)


64-64: shellcheck reported issue in this script: SC1001:info:2:67: This \c will be a regular 'c' in this context

(shellcheck)

🪛 yamllint (1.35.1)
.github/workflows/step-run-tests.yml

[error] 67-67: trailing spaces

(trailing-spaces)

⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: Конвертация исходников / Конвертация
  • GitHub Check: Конвертация исходников / Конвертация
🔇 Additional comments (5)
.github/workflows/step-run-tests.yml (2)

58-61: Добавьте документацию о последствиях отключения защиты

Отключение DisableUnsafeActionProtection может иметь последствия для безопасности. Рекомендуется:

  1. Добавить комментарий, объясняющий необходимость отключения этой защиты
  2. Документировать потенциальные риски

65-66: Используйте двойные кавычки для путей Windows

Создание директории через mkdir -p может завершиться с ошибкой, если в пути %LOCALAPPDATA% содержатся пробелы. Рекомендуется:

-        mkdir -p %LOCALAPPDATA%\1C\1cv8\conf
+        mkdir -p "%LOCALAPPDATA%\1C\1cv8\conf"
-        echo DisableUnsafeActionProtection=.*> %LOCALAPPDATA%\1C\1cv8\conf\conf.cfg
+        echo DisableUnsafeActionProtection=.*> "%LOCALAPPDATA%\1C\1cv8\conf\conf.cfg"
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (3)

78-78: Добавьте обработку ошибок

Вызов ВыполнитьГруппуНаборовТестов может завершиться с ошибкой. Рекомендуется добавить обработку исключений.


89-89: Некорректный порядок вызова события

Событие ПередКаждымТестом вызывается после выполнения тестов, что противоречит его назначению. Рекомендуется перенести вызов события перед выполнением тестов.


134-138: Добавьте очистку временных файлов

После компиляции и подключения внешней обработки, временный файл не удаляется. Это может привести к накоплению временных файлов в системе.

tools/local-test/scripts/test-by-ibcmd.sh Show resolved Hide resolved
tools/local-test/scripts/test-by-ibcmd.sh Show resolved Hide resolved
tools/local-test/scripts/test-by-ibcmd.sh Show resolved Hide resolved
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: 0

🔭 Outside diff range comments (1)
tools/local-test/scripts/test-by-ibcmd.sh (1)

Line range hint 104-114: Добавить проверку создания конфигурационного файла

Необходимо проверить успешность создания файла конфигурации тестов.

+CONFIG_FILE="$WORK_PATH/yaxunit-config.json"
+if ! cat >"$CONFIG_FILE" <<EOL
 {
     "reportFormat": "jUnit",
     "reportPath": "$WORK_PATH/report.xml",
     "closeAfterTests": true,
     "exitCode": "$WORK_PATH/exit-code.txt",
     "logging": {
         "console": true
     }
 }
 EOL
+then
+    >&2 echo "Ошибка при создании файла конфигурации: $CONFIG_FILE"
+    exit 1
+fi
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)

♻️ Duplicate comments (1)
.github/workflows/step-run-tests.yml (1)

65-66: ⚠️ Potential issue

Используйте двойные кавычки для путей Windows

Создание директории через mkdir -p может завершиться с ошибкой, если в пути %LOCALAPPDATA% содержатся пробелы.

Примените следующие изменения:

-        mkdir -p %LOCALAPPDATA%\1C\1cv8\conf
+        mkdir -p "%LOCALAPPDATA%\1C\1cv8\conf"
-        "DisableUnsafeActionProtection=.*" | Out-File -FilePath %LOCALAPPDATA%\1C\1cv8\conf\conf.cfg -Encoding UTF8
+        "DisableUnsafeActionProtection=.*" | Out-File -FilePath "%LOCALAPPDATA%\1C\1cv8\conf\conf.cfg" -Encoding UTF8
🧹 Nitpick comments (5)
.github/workflows/step-run-tests.yml (1)

67-67: Удалите лишние пробелы в конце строки

Обнаружены лишние пробелы в конце строки 67.

🧰 Tools
🪛 yamllint (1.35.1)

[error] 67-67: trailing spaces

(trailing-spaces)

tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (2)

35-46: Добавьте проверку на пустые значения

Перед проверкой свойств объекта Сценарии рекомендуется добавить базовые проверки на неопределенность и пустые значения.

+ЮТест.ОжидаетЧто(Сценарии).Существует();
+ЮТест.ОжидаетЧто(Сценарии.НаборыТестов).Существует();
+ЮТест.ОжидаетЧто(Сценарии.НаборыТестов.Количество()).БольшеНуля();
 ЮТест.ОжидаетЧто(Сценарии)
     .Заполнено()
     .Свойство("Метаданные").Заполнено()

110-132: Используйте форматированную строку

Для улучшения читаемости и поддерживаемости кода рекомендуется использовать форматированную строку вместо конкатенации.

-	Текст =
-	"Процедура ИсполняемыеСценарии() Экспорт
-	|
-	|	ЮТТесты
-	|		.ДобавитьТест(""ТестУспешно"")
-	|		.ДобавитьТест(""ТестОшибка"")" + ... ;
+	Текст = 
+	ФорматированнаяСтрока(
+	"Процедура ИсполняемыеСценарии() Экспорт
+	|
+	|	ЮТТесты
+	|		.ДобавитьТест(""%1"")
+	|		.ДобавитьТест(""%2"")
+	|		.ДобавитьТест(""%3"")
+	|	;
+	|
+	|КонецПроцедуры",
+	"ТестУспешно",
+	"ТестОшибка",
+	"ТестСломан");
tools/local-test/scripts/test-by-ibcmd.sh (2)

7-15: Улучшить проверку переменных окружения

Рекомендуется добавить проверку корректности значений переменных окружения, а не только их наличия.

 if [[ -z "${EDT_VERSION}" ]]; then
     >&2 echo 'Не установлена переменная $EDT_VERSION'
     exit 1
+elif ! [[ "${EDT_VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
+    >&2 echo "Некорректный формат версии EDT: ${EDT_VERSION}"
+    exit 1
 fi

 if [[ -z "$ONEC_VERSION" ]]; then
     >&2 echo 'Не установлена переменная $ONEC_VERSION'
     exit 1
+elif ! [[ "${ONEC_VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
+    >&2 echo "Некорректный формат версии 1C: ${ONEC_VERSION}"
+    exit 1
 fi

21-29: Улучшить проверку инсталляций

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

 if [[ ! -d "${EDT_PATH}" ]]; then
     >&2 echo "Не найдена инсталяция ${EDT_PATH}"
     exit 1
+elif [[ ! -x "${EDT_PATH}/ring" ]]; then
+    >&2 echo "Не найден исполняемый файл ring в ${EDT_PATH}"
+    exit 1
 fi

 if [[ ! -d "$ONEC_PATH" ]]; then
     >&2 echo "Не найдена инсталяция ${ONEC_PATH}"
     exit 1
+elif [[ ! -x "${ONEC_PATH}/ibcmd" ]] || [[ ! -x "${ONEC_PATH}/1cv8c" ]]; then
+    >&2 echo "Не найдены необходимые исполняемые файлы в ${ONEC_PATH}"
+    exit 1
 fi
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 89ec251 and b130074.

📒 Files selected for processing (5)
  • .github/workflows/step-run-tests.yml (1 hunks)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (1 hunks)
  • tools/local-test/scripts/test-by-ibcmd.sh (2 hunks)
  • tools/local-test/scripts/test-it.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • tools/local-test/scripts/test-it.sh
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)

🪛 actionlint (1.7.4)
.github/workflows/step-run-tests.yml

64-64: shellcheck reported issue in this script: SC1001:info:1:24: This \1 will be a regular '1' in this context

(shellcheck)


64-64: shellcheck reported issue in this script: SC1001:info:1:27: This \1 will be a regular '1' in this context

(shellcheck)


64-64: shellcheck reported issue in this script: SC1001:info:1:32: This \c will be a regular 'c' in this context

(shellcheck)


64-64: shellcheck reported issue in this script: SC1001:info:2:71: This \1 will be a regular '1' in this context

(shellcheck)


64-64: shellcheck reported issue in this script: SC1001:info:2:74: This \1 will be a regular '1' in this context

(shellcheck)


64-64: shellcheck reported issue in this script: SC1001:info:2:79: This \c will be a regular 'c' in this context

(shellcheck)


64-64: shellcheck reported issue in this script: SC1001:info:2:84: This \c will be a regular 'c' in this context

(shellcheck)

🪛 yamllint (1.35.1)
.github/workflows/step-run-tests.yml

[error] 67-67: trailing spaces

(trailing-spaces)

⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: Тест (8.3.21.1895, ru_RU, ubuntu-22.04) / Тестирование
  • GitHub Check: Тест (8.3.21.1895, ru_RU, windows-latest) / Тестирование
  • GitHub Check: Тест (8.3.21.1895, en_US, ubuntu-22.04) / Тестирование
  • GitHub Check: Тест (8.3.21.1895, en_US, ubuntu-22.04) / Тестирование
  • GitHub Check: Тест (8.3.21.1895, ru_RU, ubuntu-22.04) / Тестирование
  • GitHub Check: Тест (8.3.21.1895, ru_RU, windows-latest) / Тестирование
  • GitHub Check: Тест (8.3.21.1895, en_US, windows-latest) / Тестирование
🔇 Additional comments (11)
.github/workflows/step-run-tests.yml (1)

58-61: Добавьте документацию о последствиях отключения защиты

Отключение DisableUnsafeActionProtection может иметь последствия для безопасности. Рекомендуется:

  1. Добавить комментарий, объясняющий необходимость отключения этой защиты
  2. Документировать потенциальные риски
  3. Рассмотреть возможность более избирательного подхода к настройкам безопасности
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (4)

1-17: Корректная структура файла и лицензия

Файл имеет правильную структуру и содержит актуальную лицензию Apache 2.0.


78-78: Добавьте обработку ошибок

Вызов ВыполнитьГруппуНаборовТестов может завершиться с ошибкой. Рекомендуется добавить обработку исключений.


89-89: Некорректный порядок вызова события

Событие ПередКаждымТестом вызывается после выполнения тестов, что противоречит его назначению.


134-138: Добавьте очистку временных файлов

После компиляции и подключения внешней обработки, временный файл не удаляется.

tools/local-test/scripts/test-by-ibcmd.sh (6)

5-5: Добавить проверку наличия файла .env

Необходимо проверить существование файла перед его подключением.


31-34: Улучшить обработку результатов realpath

Текущая реализация не проверяет успешность получения путей.

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)


64-71: Добавить обработку ошибок в циклах

Необходимо добавить проверку результатов выполнения скриптов.


75-102: Добавить проверку результатов операций с информационной базой

Отсутствует проверка результатов выполнения команд ibcmd.


116-124: Улучшить обработку процесса сервера

Рекомендуется добавить проверку запуска сервера и обработку сигналов.


45-56: 🛠️ Refactor suggestion

Улучшить обработку операций с директориями

Необходимо добавить проверку результатов создания директорий и безопасную очистку.

+cleanup_dir() {
+    local dir="$1"
+    if [[ -d "$dir" ]]; then
+        if ! rm -rf "${dir:?}/"*; then
+            >&2 echo "Ошибка при очистке директории: $dir"
+            return 1
+        fi
+    fi
+}

+for dir in "$LOGS_PATH" "$DB_PATH" "$EXPORT_PATH" "$BINARY_PATH" "$TMP_PATH" "$RESULT_PATH"; do
+    if ! mkdir -p "$dir"; then
+        >&2 echo "Ошибка при создании директории: $dir"
+        exit 1
+    fi
+done

+if ! cleanup_dir "$TMP_PATH" || \
+   ! cleanup_dir "$RESULT_PATH" || \
+   ! cleanup_dir "$LOGS_PATH"; then
+    exit 1
+fi

Likely invalid or redundant comment.

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: 0

♻️ Duplicate comments (3)
exts/yaxunit/src/CommonModules/ЮТОбщийСлужебный/Module.bsl (1)

180-185: 🛠️ Refactor suggestion

Необходимо вынести магическое число в именованную константу

Значение отступа (4) следует объявить как именованную константу в начале модуля для улучшения читаемости и обслуживаемости кода.

Пример:

+#Область ПрограммныеКонстанты
+Перем КоличествоСимволовОтступа Экспорт;
+КоличествоСимволовОтступа = 4;
+#КонецОбласти

 Функция Отступ(Уровень)
-    КоличествоПробелов = 4;
-    Возврат ЮТСтроки.СтрокаСимволов(" ", Уровень * КоличествоПробелов);
+    Возврат ЮТСтроки.СтрокаСимволов(" ", Уровень * КоличествоСимволовОтступа);
tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1)

89-89: ⚠️ Potential issue

Некорректный порядок вызова события.

Событие ПередКаждымТестом вызывается после выполнения тестов.

exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (1)

381-381: ⚠️ Potential issue

Не рекомендуется использовать метод ПолучитьФорму.

Использование метода ПолучитьФорму может привести к проблемам производительности и утечкам памяти.

Рекомендуется использовать альтернативный подход:

-        Возврат ПолучитьФорму(СтрШаблон("ВнешняяОбработка.%1.Форма", ОписаниеТестовогоОбъекта.Метаданные.Имя));
+        Возврат ВнешниеОбработки.Создать(ОписаниеТестовогоОбъекта.Метаданные.Имя);
🧹 Nitpick comments (3)
exts/yaxunit/src/CommonModules/ЮТОбщийСлужебный/Module.bsl (1)

105-148: Функция корректно обрабатывает различные типы данных

Логика обработки типов реализована правильно. Рекомендации по улучшению:

  • Добавить документацию функции с описанием параметров и возвращаемого значения
  • Рассмотреть добавление обработки типа УникальныйИдентификатор
tools/local-test/scripts/test-by-ibcmd.sh (2)

7-15: Улучшить проверку переменных окружения

Рекомендуется объединить проверки переменных окружения в одну функцию для лучшей поддерживаемости:

+check_env_var() {
+    local var_name="$1"
+    if [[ -z "${!var_name}" ]]; then
+        >&2 echo "Не установлена переменная $var_name"
+        exit 1
+    fi
+}
+
+for var in EDT_VERSION ONEC_VERSION; do
+    check_env_var "$var"
+done
-if [[ -z "${EDT_VERSION}" ]]; then
-    >&2 echo 'Не установлена переменная $EDT_VERSION'
-    exit 1
-fi
-
-if [[ -z "$ONEC_VERSION" ]]; then
-    >&2 echo 'Не установлена переменная $ONEC_VERSION'
-    exit 1
-fi

18-29: Улучшить проверку путей установки

Рекомендуется создать функцию для проверки путей установки:

+check_installation_path() {
+    local path="$1"
+    local description="$2"
+    if [[ ! -d "$path" ]]; then
+        >&2 echo "Не найдена инсталяция: $description ($path)"
+        exit 1
+    fi
+}
+
+check_installation_path "$EDT_PATH" "EDT"
+check_installation_path "$ONEC_PATH" "1C:Предприятие"
-if [[ ! -d "${EDT_PATH}" ]]; then
-    >&2 echo "Не найдена инсталяция ${EDT_PATH}"
-    exit 1
-fi
-
-if [[ ! -d "$ONEC_PATH" ]]; then
-    >&2 echo "Не найдена инсталяция ${ONEC_PATH}"
-    exit 1
-fi
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b130074 and d0d801d.

📒 Files selected for processing (8)
  • .github/workflows/step-run-tests.yml (1 hunks)
  • exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (8 hunks)
  • exts/yaxunit/src/CommonModules/ЮТОбщийСлужебный/Module.bsl (2 hunks)
  • exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl (5 hunks)
  • tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (1 hunks)
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl (2 hunks)
  • tools/local-test/scripts/test-by-ibcmd.sh (2 hunks)
  • tools/local-test/scripts/test-it.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
  • tools/local-test/scripts/test-it.sh
  • tests/src/CommonModules/ОМ_ЮТВнешниеОбработкиСлужебныйСервер/Module.bsl
  • exts/yaxunit/src/CommonModules/ЮТФабрика/Module.bsl
🧰 Additional context used
🪛 Shellcheck (0.10.0)
tools/local-test/scripts/test-by-ibcmd.sh

[warning] 3-3: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 3-3: Use 'cd ... || exit' or 'cd ... || return' in case cd fails.

(SC2164)


[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)

🪛 actionlint (1.7.4)
.github/workflows/step-run-tests.yml

64-64: shellcheck reported issue in this script: SC2016:info:2:1: Expressions don't expand in single quotes, use double quotes for that

(shellcheck)

🪛 yamllint (1.35.1)
.github/workflows/step-run-tests.yml

[error] 67-67: trailing spaces

(trailing-spaces)

⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: Конвертация исходников / Конвертация
  • GitHub Check: Конвертация исходников / Конвертация
🔇 Additional comments (14)
exts/yaxunit/src/CommonModules/ЮТОбщийСлужебный/Module.bsl (2)

3-3: Корректное обновление года в уведомлении об авторских правах

Обновление диапазона лет с 2021-2025 соответствует текущему году.


154-178: Корректная реализация вспомогательных функций

Функции ПредставлениеСтруктуры и ПредставлениеМассива реализованы логично и последовательно. Рекурсивные вызовы и форматирование обрабатываются правильно.

tools/local-test/scripts/test-by-ibcmd.sh (6)

5-5: Добавить проверку наличия файла .env


45-56: Добавить проверку результатов создания директорий


64-71: Добавить обработку ошибок в циклах


75-102: Добавить проверку результатов операций с информационной базой


116-124: Улучшить обработку процесса сервера


31-34: ⚠️ Potential issue

Исправить маскировку кодов возврата при экспорте путей

Необходимо разделить объявление и присваивание переменных:

-export WORK_PATH=$(realpath $SCRIPTPATH/../workpath)
-export ROOT_PATH=$(realpath $SCRIPTPATH/../../../)
-export STEPS_PATH=$(realpath $SCRIPTPATH/steps)
-export LIB_PATH=$(realpath $SCRIPTPATH/lib)
+WORK_PATH=""
+ROOT_PATH=""
+STEPS_PATH=""
+LIB_PATH=""
+
+if ! WORK_PATH=$(realpath "$SCRIPTPATH/../workpath"); then
+    >&2 echo "Ошибка при определении WORK_PATH"
+    exit 1
+fi
+if ! ROOT_PATH=$(realpath "$SCRIPTPATH/../../../"); then
+    >&2 echo "Ошибка при определении ROOT_PATH"
+    exit 1
+fi
+if ! STEPS_PATH=$(realpath "$SCRIPTPATH/steps"); then
+    >&2 echo "Ошибка при определении STEPS_PATH"
+    exit 1
+fi
+if ! LIB_PATH=$(realpath "$SCRIPTPATH/lib"); then
+    >&2 echo "Ошибка при определении LIB_PATH"
+    exit 1
+fi
+
+export WORK_PATH ROOT_PATH STEPS_PATH LIB_PATH

Likely invalid or redundant comment.

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 31-31: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 32-32: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 33-33: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 34-34: Declare and assign separately to avoid masking return values.

(SC2155)

.github/workflows/step-run-tests.yml (2)

58-61: LGTM!

Корректная настройка конфигурации для Linux.


65-66: ⚠️ Potential issue

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

Текущая реализация может привести к ошибкам при наличии пробелов в путях.

Примените следующие изменения:

-        mkdir -p "C:\Program Files\1cv8\conf"
-        'DisableUnsafeActionProtection=.*`r`n' | Out-File -FilePath "C:\Program Files\1cv8\conf\conf.cfg" -Encoding utf8 -Append
+        New-Item -Path """C:\Program Files\1cv8\conf""" -ItemType Directory -Force
+        Set-Content -Path """C:\Program Files\1cv8\conf\conf.cfg""" -Value "DisableUnsafeActionProtection=.*" -Encoding UTF8

Likely invalid or redundant comment.

tests/src/CommonModules/ОМ_ВыполнениеТестовОбработки/Module.bsl (3)

21-29: LGTM!

Корректная реализация основной процедуры с использованием транзакций.


31-48: LGTM!

Процедура корректно проверяет наличие и валидность тестов.


69-91: ⚠️ Potential issue

Добавьте обработку ошибок при выполнении тестов.

Выполнение тестов может завершиться с ошибкой, но обработка исключений отсутствует.

Примените следующие изменения:

 Процедура ВыполнитьТестыВременнойОбработки() Экспорт
     
     ТестовыйМодуль = ЮТест.ОписаниеТекущегоТестовогоМодуля();
     Набор = ЮТест.ОписаниеТекущегоТестовогоНабора();
     Тест = ЮТест.ОписаниеТекущегоТеста();
     Сценарии = СценарииОбработки();
     ИсполняемыеСценарии = ЮТИсполнительСлужебныйКлиентСервер.ИсполняемыйТестовыйМодуль(Сценарии);
     СтатусыИсполненияТеста = ЮТФабрика.СтатусыИсполненияТеста();
     
+    Попытка
         Результат = ЮТИсполнительСлужебныйКлиентСервер.ВыполнитьГруппуНаборовТестов(
             ИсполняемыеСценарии.НаборыТестов, 
             ИсполняемыеСценарии
         );
+    Исключение
+        ЮТЛогирование.Ошибка(ОписаниеОшибки());
+        ВызватьИсключение;
+    КонецПопытки;

Likely invalid or redundant comment.

exts/yaxunit/src/CommonModules/ЮТИсполнительСлужебныйКлиентСервер/Module.bsl (1)

59-108: 🛠️ Refactor suggestion

Уменьшите когнитивную сложность функции.

Функция ИсполняемыеНаборыМодуля имеет высокую когнитивную сложность (21), что затрудняет понимание и поддержку кода.

Рекомендуется разделить функцию на более мелкие:

  1. Создание набора для контекста
  2. Обработка тестов набора
  3. Формирование результата

Пример рефакторинга:

+Функция СоздатьНаборДляКонтекста(ТестовыйНабор, Контекст)
+    ИсполняемыйНабор = ЮТФабрикаСлужебный.НовоеОписаниеИсполняемогоНабораТестов(ТестовыйНабор);
+    ИсполняемыйНабор.Режим = Контекст;
+    Возврат ИсполняемыйНабор;
+КонецФункции
+
+Процедура ОбработатьТестНабора(Тест, ИсполняемыйНабор, ТестовыйМодуль)
+    ИсполняемыйТест = ЮТФабрикаСлужебный.НовоеОписаниеИсполняемогоТеста(Тест, ИсполняемыйНабор.Режим, ТестовыйМодуль);
+    
+    Если Тест.Свойство("Ошибки") И Тест.Ошибки.Количество() > 0 Тогда
+        ИсполняемыйТест.Ошибки = ЮТКоллекции.СкопироватьМассив(Тест.Ошибки);
+        ИсполняемыйТест.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах();
+        ИсполняемыйТест.Длительность = 0;
+    КонецЕсли;
+    
+    ИсполняемыйНабор.Тесты.Добавить(ИсполняемыйТест);
+КонецПроцедуры

Likely invalid or redundant comment.

@alkoleft alkoleft merged commit 5038d11 into develop Jan 19, 2025
2 of 6 checks passed
@alkoleft alkoleft deleted the feature/467 branch January 19, 2025 00:06
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